Maven坐标
<!-- PayPal --> <dependency> <groupId>com.paypal.sdk</groupId> <artifactId>rest-api-sdk</artifactId> <version>LATEST</version> </dependency>
JAVA工具类源码
import java.util.ArrayList; import java.util.Iterator; import java.util.List; import com.paypal.api.payments.Amount; import com.paypal.api.payments.Details; import com.paypal.api.payments.Item; import com.paypal.api.payments.ItemList; import com.paypal.api.payments.Links; import com.paypal.api.payments.Payer; import com.paypal.api.payments.Payment; import com.paypal.api.payments.PaymentExecution; import com.paypal.api.payments.RedirectUrls; import com.paypal.api.payments.Transaction; import com.paypal.base.rest.APIContext; import com.paypal.base.rest.PayPalRESTException; public class PaypalUtil { // sandbox private final static String payPalClientID = "paypal客户端ID"; private final static String payPalClientSecret = "paypal客户端密钥"; private final static String payPalMode = "sandbox"; // live // private final static String payPalClientID = "paypal客户端ID"; // private final static String payPalClientSecret = "paypal客户端密钥"; // private final static String payPalMode = "live"; /** * 获取Paypal付款链接 * @param orderId * @param orderName * @param amt * @param returnUrl * @return */ public static String getPayLink(String orderId, String orderName, String amt, String returnUrl) { String payLink = ""; // PayPal init APIContext apiContext = new APIContext(payPalClientID, payPalClientSecret, payPalMode); // Set payment details Details details = new Details(); details.setShipping("0"); details.setSubtotal(amt); details.setTax("0"); // Payment amount Amount amount = new Amount(); amount.setCurrency("USD"); // Total must be equal to sum of shipping, tax and subtotal. amount.setTotal(amt); amount.setDetails(details); // Transaction information Transaction transaction = new Transaction(); transaction.setAmount(amount); transaction.setDescription(orderName); // ItemList information ItemList itemList = new ItemList(); List<Item> items = new ArrayList<Item>(); Item item = new Item(); item.setName(orderName); item.setDescription(orderName); item.setCurrency("USD"); item.setQuantity("1"); item.setTax("0"); item.setPrice(amt); items.add(item); itemList.setItems(items); transaction.setItemList(itemList); // Add transaction to a list List<Transaction> transactions = new ArrayList<Transaction>(); transactions.add(transaction); // Add payer details Payer payer = new Payer(); payer.setPaymentMethod("paypal"); // Add payment details Payment payment = new Payment(); payment.setIntent("sale"); payment.setPayer(payer); payment.setTransactions(transactions); // Add redirect URLs RedirectUrls redirectUrls = new RedirectUrls(); redirectUrls.setCancelUrl(returnUrl); redirectUrls.setReturnUrl(returnUrl + orderId); payment.setRedirectUrls(redirectUrls); // Create payment try { Payment createdPayment = payment.create(apiContext); Iterator<Links> links = createdPayment.getLinks().iterator(); while (links.hasNext()) { Links link = links.next(); if (link.getRel().equalsIgnoreCase("approval_url")) { // REDIRECT USER TO link.getHref() payLink = link.getHref(); } } } catch (PayPalRESTException e) { System.err.println(e.getDetails()); } return payLink; } /** * 获取Paypal付款状态 * @param paymentId * @param payerId * @return */ public static String getPayState(String paymentId, String payerId) { String payState = ""; // PayPal init APIContext apiContext = new APIContext(payPalClientID, payPalClientSecret, payPalMode); Payment payment = new Payment(); payment.setId(paymentId); PaymentExecution paymentExecution = new PaymentExecution(); paymentExecution.setPayerId(payerId); try { Payment createdPayment = payment.execute(apiContext, paymentExecution); payState = createdPayment.getState(); // BigDecimal paymentAmt = new BigDecimal(createdPayment.getTransactions().get(0).getAmount().getTotal()); // String emailAddress = createdPayment.getPayer().getPayerInfo().getEmail(); } catch (PayPalRESTException e) { System.err.println(e.getDetails()); } return payState; } }