paypal v2

This commit is contained in:
egzosn
2021-01-17 23:23:43 +08:00
parent b14bdf0d98
commit 5d46be5829
2 changed files with 23 additions and 4 deletions

View File

@@ -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<String, Object> 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();
}

View File

@@ -145,6 +145,7 @@ public class PayPalPayService extends BasePayService<PayPalConfigStorage> {
/**
* 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<PayPalConfigStorage> {
/**
* 返回创建的订单信息
*
* 订单信息与接口地址 https://developer.paypal.com/docs/api/orders/v2
* @param order 支付订单
* @return 订单信息
* @see PayOrder 支付订单信息
@@ -350,6 +351,8 @@ public class PayPalPayService extends BasePayService<PayPalConfigStorage> {
/**
* 申请退款接口
*
* 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<PayPalConfigStorage> {
/**
* 查询退款
*
* 通过退款id获取退款信息 详情https://developer.paypal.com/docs/api/payments/v2/#refunds
* @param refundOrder 退款订单单号信息
* @return 返回支付方查询退款后的结果
*/