一次Paypal支付服务端集成的经历


刚开始,准备使用RestTemplate 直接调用接口的方式来实现,但是一直出错,后来就使用API集成的方式来实现,用起来也发现挺简单的。

pom文件
 

       
            com.paypal.sdk
            rest-api-sdk
            1.13.1
       


发起支付实现文件
我只放进去了一些发起支付需要的基本参数,更多参数请参考官方示例:https://github.com/paypal/PayPal-Java-SDK/blob/master/rest-api-sample/src/main/java/com/paypal/api/payments/servlet/PaymentWithPayPalServlet.java


其中clientID, clientSecret为String字符串,请自己定义,mode测试环境为sandbox,正式环境为live(String类型)

 
APIContext apiContext = new APIContext(clientID, clientSecret, mode);
        Payment createdPayment = null;

        //建立金额与币种
        Amount amount = new Amount();
        amount.setCurrency("USD");
        amount.setTotal("7.00");
        Transaction transaction = new Transaction();
        transaction.setAmount(amount);
        transaction.setInvoiceNumber("988676777787989");//我只是为了找个点放订单号,可为空
        List transactions = new ArrayList();
        transactions.add(transaction);

        //建立支付方式
        Payer payer = new Payer();
        payer.setPaymentMethod("paypal");

        Payment payment = new Payment();
        payment.setIntent("sale");
        payment.setPayer(payer);
        payment.setTransactions(transactions);
        payment.setNoteToPayer("Pay Order ");

        RedirectUrls redirectUrls = new RedirectUrls();
        redirectUrls.setCancelUrl("hooks/payments/paypal/cancel");
        redirectUrls.setReturnUrl("hooks/payments/paypal");//回调路径
        payment.setRedirectUrls(redirectUrls);

        try {
            createdPayment = payment.create(apiContext);
        } catch (PayPalRESTException e) {
            return "failure";//发起支付失败
        }
        return "SUCC";//发起支付完成


回调文件:


其中paymentId会给你传回来,根据paymentId获取支付详情并做相应处理

if (paymentId==null)
            return ResponseEntity.badRequest().build();
        try {
            APIContext apiContext = new APIContext(clientID, clientSecret, mode);
            Payment payment = Payment.get(apiContext, paymentId);
   //根据实际情况自行处理部分
   *******
        }catch (Exception e){
            return "failure";
        }
        return"SUCC";


其实就是这么简单,哈哈!


你可能感兴趣的:(Java)