From 5d46be5829eccbbaff57d4d1e56978fffa05a0d0 Mon Sep 17 00:00:00 2001 From: egzosn Date: Sun, 17 Jan 2021 23:23:43 +0800 Subject: [PATCH] paypal v2 --- .../controller/PayPalV2PayController.java | 20 +++++++++++++++++-- .../pay/paypal/v2/api/PayPalPayService.java | 7 +++++-- 2 files changed, 23 insertions(+), 4 deletions(-) diff --git a/pay-java-demo/src/main/java/com/egzosn/pay/demo/controller/PayPalV2PayController.java b/pay-java-demo/src/main/java/com/egzosn/pay/demo/controller/PayPalV2PayController.java index 125c215..95abfd1 100644 --- a/pay-java-demo/src/main/java/com/egzosn/pay/demo/controller/PayPalV2PayController.java +++ b/pay-java-demo/src/main/java/com/egzosn/pay/demo/controller/PayPalV2PayController.java @@ -4,6 +4,7 @@ package com.egzosn.pay.demo.controller; import java.io.IOException; import java.io.InputStream; import java.math.BigDecimal; +import java.util.Map; import javax.annotation.PostConstruct; import javax.servlet.http.HttpServletRequest; @@ -99,10 +100,22 @@ public class PayPalV2PayController { order.setDescription(" description "); order.setTradeNo("paypal 平台的单号, 支付下单返回的单号"); order.setRefundAmount(BigDecimal.valueOf(0.01)); - return service.refund(order); + RefundResult refundResult = service.refund(order); + System.out.println("退款成功之后返回退款单号:" + refundResult.getRefundNo()); + return refundResult; } - + /** + * 查询退款 + * + * @return 返回支付方查询退款后的结果 + */ + @RequestMapping("refundquery") + public Map refundquery() { + RefundOrder order = new RefundOrder(); + order.setRefundNo("退款成功之后返回的退款单号"); + return service.refundquery(order); + } /** * 注意:这里不是异步回调的通知 IPN 地址设置的路径:https://developer.paypal.com/developer/ipnSimulator/ * PayPal确认付款调用的接口 @@ -115,6 +128,7 @@ public class PayPalV2PayController { @GetMapping(value = "payBackBefore.json") public String payBackBefore(HttpServletRequest request) throws IOException { try (InputStream is = request.getInputStream()) { + // 参数解析与校验 https://developer.paypal.com/docs/api-basics/notifications/ipn/IPNIntro/#id08CKFJ00JYK if (service.verify(service.getParameter2Map(request.getParameterMap(), is))) { // TODO 这里进行成功后的订单业务处理 // TODO 返回成功付款页面,这个到时候再做一个漂亮的页面显示,并使用前后端分离的模式 @@ -129,6 +143,7 @@ public class PayPalV2PayController { /** * 支付回调地址 * 注意:这里不是异步回调的通知 IPN 地址设置的路径:https://developer.paypal.com/developer/ipnSimulator/ + * 参数解析与校验 https://developer.paypal.com/docs/api-basics/notifications/ipn/IPNIntro/#id08CKFJ00JYK * * @param request 请求 * @return 结果 @@ -140,6 +155,7 @@ public class PayPalV2PayController { @RequestMapping(value = "payBack.json") public String payBack(HttpServletRequest request) throws IOException { //业务处理在对应的PayMessageHandler里面处理,在哪里设置PayMessageHandler,详情查看com.egzosn.pay.common.api.PayService.setPayMessageHandler() + // 参数解析与校验 https://developer.paypal.com/docs/api-basics/notifications/ipn/IPNIntro/#id08CKFJ00JYK return service.payBack(request.getParameterMap(), request.getInputStream()).toMessage(); } diff --git a/pay-java-paypal/src/main/java/com/egzosn/pay/paypal/v2/api/PayPalPayService.java b/pay-java-paypal/src/main/java/com/egzosn/pay/paypal/v2/api/PayPalPayService.java index a6c72ed..a35aa73 100644 --- a/pay-java-paypal/src/main/java/com/egzosn/pay/paypal/v2/api/PayPalPayService.java +++ b/pay-java-paypal/src/main/java/com/egzosn/pay/paypal/v2/api/PayPalPayService.java @@ -145,6 +145,7 @@ public class PayPalPayService extends BasePayService { /** * IPN 地址设置的路径:https://developer.paypal.com/developer/ipnSimulator/ + * 参数解析与校验 https://developer.paypal.com/docs/api-basics/notifications/ipn/IPNIntro/#id08CKFJ00JYK * 1.Check that the payment_status is Completed. * 2.If the payment_status is Completed, check the txn_id against the previous PayPal transaction that you processed to ensure the IPN message is not a duplicate. * 3.Check that the receiver_email is an email address registered in your PayPal account. @@ -240,7 +241,7 @@ public class PayPalPayService extends BasePayService { /** * 返回创建的订单信息 - * + * 订单信息与接口地址 https://developer.paypal.com/docs/api/orders/v2 * @param order 支付订单 * @return 订单信息 * @see PayOrder 支付订单信息 @@ -350,6 +351,8 @@ public class PayPalPayService extends BasePayService { /** * 申请退款接口 * + * 1.需要通过支付单号获取captureId 详情: https://developer.paypal.com/docs/api/payments/v2/#captures + * 2.通过captureId发起退款 详情: https://developer.paypal.com/docs/api/payments/v2/#captures_refund * @param refundOrder 退款订单信息 * @return 返回支付方申请退款后的结果 */ @@ -384,7 +387,7 @@ public class PayPalPayService extends BasePayService { /** * 查询退款 - * + * 通过退款id获取退款信息 详情:https://developer.paypal.com/docs/api/payments/v2/#refunds * @param refundOrder 退款订单单号信息 * @return 返回支付方查询退款后的结果 */