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


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

pom文件
 
<!-- https://mvnrepository.com/artifact/com.paypal.sdk/rest-api-sdk -->
        <dependency>
            <groupId>com.paypal.sdk</groupId>
            <artifactId>rest-api-sdk</artifactId>
            <version>1.13.1</version>
        </dependency>


发起支付实现文件
我只放进去了一些发起支付需要的基本参数,更多参数请参考官方示例: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<Transaction> transactions = new ArrayList<Transaction>();
        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";


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


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值