Regalamiunsorriso/decompiled-libs/www/acxent-bank-1.0.1/it/acxent/bank/paypalcheckout/PayPalOrder.java

139 lines
5.5 KiB
Java

package it.acxent.bank.paypalcheckout;
import com.paypal.core.PayPalEnvironment;
import com.paypal.core.PayPalHttpClient;
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.AmountWithBreakdown;
import com.paypal.orders.ApplicationContext;
import com.paypal.orders.LinkDescription;
import com.paypal.orders.Order;
import com.paypal.orders.OrderRequest;
import com.paypal.orders.OrdersCreateRequest;
import com.paypal.orders.OrdersGetRequest;
import com.paypal.orders.PurchaseUnitRequest;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import org.apache.commons.lang3.StringUtils;
import org.json.JSONObject;
public class PayPalOrder {
private PayPalHttpClient client;
private PayPalReq payPalReq;
private boolean useSandbox = true;
public PayPalOrder(PayPalReq payPalReq) {
setPayPalReq(payPalReq);
this.useSandbox = getPayPalReq().isUseSandbox();
}
private OrderRequest buildMinimumRequestBody() {
OrderRequest orderRequest = new OrderRequest();
orderRequest.checkoutPaymentIntent("CAPTURE");
ApplicationContext applicationContext = new ApplicationContext().cancelUrl(getPayPalReq().getCancelURL())
.returnUrl(getPayPalReq().getReturnUrl());
orderRequest.applicationContext(applicationContext);
List<PurchaseUnitRequest> purchaseUnitRequests = new ArrayList<>();
PurchaseUnitRequest purchaseUnitRequest = new PurchaseUnitRequest()
.amountWithBreakdown(new AmountWithBreakdown()
.currencyCode(getPayPalReq().getCurrency()).value(String.valueOf(getPayPalReq().getAmt())))
.description(getPayPalReq().getDESC());
purchaseUnitRequests.add(purchaseUnitRequest);
orderRequest.purchaseUnits(purchaseUnitRequests);
return orderRequest;
}
public HttpResponse<Order> createOrder(boolean debug) throws IOException {
OrdersCreateRequest request = new OrdersCreateRequest();
request.header("prefer", "return=representation");
request.requestBody(buildMinimumRequestBody());
HttpResponse<Order> response = getClient().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<LinkDescription>)((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 {
PayPalReq ppr = new PayPalReq();
new PayPalOrder(ppr).createOrder(true);
} catch (HttpException e) {
System.out.println(e.getLocalizedMessage());
} catch (Exception e) {
e.printStackTrace();
}
}
public PayPalReq getPayPalReq() {
return this.payPalReq;
}
public void setPayPalReq(PayPalReq payPalReq) {
this.payPalReq = payPalReq;
}
public PayPalHttpClient getClient() {
if (this.client == null) {
System.out.println("clientid: " + getPayPalReq().getPaypalClientId());
System.out.println("clientSc: " + getPayPalReq().getPaypalClientSecret());
if (this.useSandbox) {
PayPalEnvironment.Sandbox sandbox = new PayPalEnvironment.Sandbox(getPayPalReq().getPaypalClientId(),
getPayPalReq().getPaypalClientSecret());
this.client = new PayPalHttpClient((PayPalEnvironment)sandbox);
} else {
PayPalEnvironment.Live live = new PayPalEnvironment.Live(getPayPalReq().getPaypalClientId(),
getPayPalReq().getPaypalClientSecret());
this.client = new PayPalHttpClient((PayPalEnvironment)live);
}
}
return this.client;
}
public String prettyPrint(JSONObject jo, String pre) {
Iterator<?> keys = jo.keys();
StringBuilder pretty = new StringBuilder();
while (keys.hasNext()) {
String key = (String)keys.next();
pretty.append(String.format("%s%s: ", pre, StringUtils.capitalize(key)));
if (jo.get(key) instanceof JSONObject) {
pretty.append(prettyPrint(jo.getJSONObject(key), pre + "\t"));
continue;
}
if (jo.get(key) instanceof org.json.JSONArray) {
int sno = 1;
for (Object jsonObject : (Iterable<Object>)jo.getJSONArray(key)) {
pretty.append(String.format("\n%s\t%d:\n", pre, sno++));
pretty.append(prettyPrint((JSONObject)jsonObject, pre + "\t\t"));
}
continue;
}
pretty.append(String.format("%s\n", jo.getString(key)));
}
return pretty.toString();
}
public HttpResponse<Order> getOrder(String orderId) throws IOException {
OrdersGetRequest request = new OrdersGetRequest(orderId);
HttpResponse<Order> response = getClient().execute((HttpRequest)request);
return response;
}
}