package com.paypal.AuthorizeIntentExamples; import com.paypal.PayPalClient; import com.paypal.http.HttpRequest; import com.paypal.http.HttpResponse; import com.paypal.http.exceptions.HttpException; import com.paypal.http.serializer.Json; import com.paypal.orders.AddressPortable; import com.paypal.orders.AmountBreakdown; import com.paypal.orders.AmountWithBreakdown; import com.paypal.orders.ApplicationContext; import com.paypal.orders.Item; import com.paypal.orders.LinkDescription; import com.paypal.orders.Money; import com.paypal.orders.Name; import com.paypal.orders.Order; import com.paypal.orders.OrderRequest; import com.paypal.orders.OrdersCreateRequest; import com.paypal.orders.PurchaseUnitRequest; import com.paypal.orders.ShippingDetail; import java.io.IOException; import java.util.ArrayList; import java.util.List; import org.json.JSONObject; public class CreateOrder extends PayPalClient { private OrderRequest buildCompleteRequestBody() { OrderRequest orderRequest = new OrderRequest(); orderRequest.checkoutPaymentIntent("AUTHORIZE"); ApplicationContext applicationContext = new ApplicationContext().brandName("EXAMPLE INC").landingPage("BILLING") .cancelUrl("https://www.example.com").returnUrl("https://www.example.com").userAction("CONTINUE") .shippingPreference("SET_PROVIDED_ADDRESS"); orderRequest.applicationContext(applicationContext); List purchaseUnitRequests = new ArrayList<>(); PurchaseUnitRequest purchaseUnitRequest = new PurchaseUnitRequest().referenceId("PUHF") .description("Sporting Goods").customId("CUST-HighFashions").softDescriptor("HighFashions") .amountWithBreakdown(new AmountWithBreakdown().currencyCode("USD").value("220.00") .amountBreakdown(new AmountBreakdown().itemTotal(new Money().currencyCode("USD").value("180.00")) .shipping(new Money().currencyCode("USD").value("20.00")) .handling(new Money().currencyCode("USD").value("10.00")) .taxTotal(new Money().currencyCode("USD").value("20.00")) .shippingDiscount(new Money().currencyCode("USD").value("10.00")))) .items(new ArrayList<>() { { add(new Item().name("T-shirt").description("Green XL").sku("sku01") .unitAmount(new Money().currencyCode("USD").value("90.00")) .tax(new Money().currencyCode("USD").value("10.00")).quantity("1") .category("PHYSICAL_GOODS")); add(new Item().name("Shoes").description("Running, Size 10.5").sku("sku02") .unitAmount(new Money().currencyCode("USD").value("45.00")) .tax(new Money().currencyCode("USD").value("5.00")).quantity("2") .category("PHYSICAL_GOODS")); } }).shippingDetail(new ShippingDetail().name(new Name().fullName("John Doe")) .addressPortable(new AddressPortable().addressLine1("123 Townsend St").addressLine2("Floor 6") .adminArea2("San Francisco").adminArea1("CA").postalCode("94107").countryCode("US"))); purchaseUnitRequests.add(purchaseUnitRequest); orderRequest.purchaseUnits(purchaseUnitRequests); return orderRequest; } private OrderRequest buildMinimumRequestBody() { OrderRequest orderRequest = new OrderRequest(); orderRequest.checkoutPaymentIntent("AUTHORIZE"); ApplicationContext applicationContext = new ApplicationContext() .cancelUrl("https://www.example.com").returnUrl("https://www.example.com"); orderRequest.applicationContext(applicationContext); List purchaseUnitRequests = new ArrayList<>(); PurchaseUnitRequest purchaseUnitRequest = new PurchaseUnitRequest() .amountWithBreakdown(new AmountWithBreakdown().currencyCode("USD").value("220.00")); purchaseUnitRequests.add(purchaseUnitRequest); orderRequest.purchaseUnits(purchaseUnitRequests); return orderRequest; } public HttpResponse createOrder(boolean debug) throws IOException { OrdersCreateRequest request = new OrdersCreateRequest(); request.header("prefer", "return=representation"); request.requestBody(buildCompleteRequestBody()); HttpResponse response = client().execute((HttpRequest)request); if (debug && response.statusCode() == 201) { System.out.println("Order with Complete Payload: "); System.out.println("Status Code: " + response.statusCode()); System.out.println("Status: " + ((Order)response.result()).status()); System.out.println("Order ID: " + ((Order)response.result()).id()); System.out.println("Intent: " + ((Order)response.result()).checkoutPaymentIntent()); System.out.println("Links: "); for (LinkDescription link : (Iterable)((Order)response.result()).links()) System.out.println("\t" + link.rel() + ": " + link.href() + "\tCall Type: " + link.method()); System.out.println("Total Amount: " + ((Order)response.result()).purchaseUnits().get(0).amountWithBreakdown().currencyCode() + " " + ((Order) response.result()).purchaseUnits().get(0).amountWithBreakdown().value()); System.out.println("Full response body:"); System.out.println(new JSONObject(new Json().serialize(response.result())).toString(4)); } return response; } public HttpResponse createOrderWithMinimumPayload(boolean debug) throws IOException { OrdersCreateRequest request = new OrdersCreateRequest(); request.header("prefer", "return=representation"); request.requestBody(buildMinimumRequestBody()); HttpResponse response = client().execute((HttpRequest)request); if (debug && response.statusCode() == 201) { System.out.println("Order with Minimum Payload: "); System.out.println("Status Code: " + response.statusCode()); System.out.println("Status: " + ((Order)response.result()).status()); System.out.println("Order ID: " + ((Order)response.result()).id()); System.out.println("Intent: " + ((Order)response.result()).checkoutPaymentIntent()); System.out.println("Links: "); for (LinkDescription link : (Iterable)((Order)response.result()).links()) System.out.println("\t" + link.rel() + ": " + link.href() + "\tCall Type: " + link.method()); System.out.println("Total Amount: " + ((Order)response.result()).purchaseUnits().get(0).amountWithBreakdown().currencyCode() + " " + ((Order) response.result()).purchaseUnits().get(0).amountWithBreakdown().value()); System.out.println("Full response body:"); System.out.println(new JSONObject(new Json().serialize(response.result())).toString(4)); } return response; } public static void main(String[] args) { try { new CreateOrder().createOrder(true); new CreateOrder().createOrderWithMinimumPayload(true); } catch (HttpException e) { System.out.println(e.getLocalizedMessage()); } catch (Exception e) { e.printStackTrace(); } } }