mirror of
https://gitee.com/egzosn/pay-java-parent.git
synced 2026-06-20 06:22:27 +08:00
简化版支付回调实现,支付消息拦截器设置,支付消息处理器设置等等
This commit is contained in:
@@ -12,9 +12,13 @@ import com.egzosn.pay.common.http.HttpConfigStorage;
|
||||
import com.egzosn.pay.common.http.UriVariables;
|
||||
import com.egzosn.pay.common.util.sign.SignUtils;
|
||||
import com.egzosn.pay.demo.request.QueryOrder;
|
||||
import com.egzosn.pay.demo.service.handler.AliPayMessageHandler;
|
||||
import com.egzosn.pay.demo.service.interceptor.AliPayMessageInterceptor;
|
||||
import org.springframework.beans.factory.config.AutowireCapableBeanFactory;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import javax.annotation.PostConstruct;
|
||||
import javax.annotation.Resource;
|
||||
import javax.imageio.ImageIO;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
@@ -37,6 +41,8 @@ import java.util.UUID;
|
||||
public class AliPayController {
|
||||
|
||||
private PayService service = null;
|
||||
@Resource
|
||||
private AutowireCapableBeanFactory spring;
|
||||
|
||||
@PostConstruct
|
||||
public void init() {
|
||||
@@ -60,8 +66,10 @@ public class AliPayController {
|
||||
//默认的每个路由的最大连接数
|
||||
httpConfigStorage.setDefaultMaxPerRoute(10);
|
||||
service = new AliPayService(aliPayConfigStorage, httpConfigStorage);
|
||||
|
||||
|
||||
//增加支付回调消息拦截器
|
||||
service.addPayMessageInterceptor(new AliPayMessageInterceptor());
|
||||
//设置回调消息处理
|
||||
service.setPayMessageHandler(spring.getBean(AliPayMessageHandler.class));
|
||||
}
|
||||
|
||||
|
||||
@@ -148,14 +156,18 @@ public class AliPayController {
|
||||
}
|
||||
|
||||
/**
|
||||
* 支付回调地址
|
||||
* 支付回调地址 方式一
|
||||
*
|
||||
* 方式二,{@link #payBack(HttpServletRequest)} 是属于简化方式, 试用与简单的业务场景
|
||||
*
|
||||
* @param request
|
||||
*
|
||||
* @return
|
||||
* @see #payBack(HttpServletRequest)
|
||||
*/
|
||||
@RequestMapping(value = "payBack.json")
|
||||
public String payBack(HttpServletRequest request) throws IOException {
|
||||
@Deprecated
|
||||
@RequestMapping(value = "payBackBefore.json")
|
||||
public String payBackBefore(HttpServletRequest request) throws IOException {
|
||||
|
||||
//获取支付方返回的对应参数
|
||||
Map<String, Object> params = service.getParameter2Map(request.getParameterMap(), request.getInputStream());
|
||||
@@ -172,6 +184,23 @@ public class AliPayController {
|
||||
|
||||
return service.getPayOutMessage("fail", "失败").toMessage();
|
||||
}
|
||||
/**
|
||||
* 支付回调地址
|
||||
*
|
||||
* @param request
|
||||
*
|
||||
* @return
|
||||
*
|
||||
* 业务处理在对应的PayMessageHandler里面处理,在哪里设置PayMessageHandler,详情查看{@link com.egzosn.pay.common.api.PayService#setPayMessageHandler(com.egzosn.pay.common.api.PayMessageHandler)}
|
||||
*
|
||||
* 如果未设置 {@link com.egzosn.pay.common.api.PayMessageHandler} 那么会使用默认的 {@link com.egzosn.pay.common.api.DefaultPayMessageHandler}
|
||||
*
|
||||
*/
|
||||
@RequestMapping(value = "payBack.json")
|
||||
public String payBack(HttpServletRequest request) throws IOException {
|
||||
//业务处理在对应的PayMessageHandler里面处理,在哪里设置PayMessageHandler,详情查看com.egzosn.pay.common.api.PayService.setPayMessageHandler()
|
||||
return service.payBack(request.getParameterMap(), request.getInputStream()).toMessage();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
|
||||
@@ -7,6 +7,7 @@ import com.egzosn.pay.ali.api.AliPayService;
|
||||
import com.egzosn.pay.ali.bean.AliTransactionType;
|
||||
import com.egzosn.pay.common.api.Callback;
|
||||
import com.egzosn.pay.common.api.PayConfigStorage;
|
||||
import com.egzosn.pay.common.api.PayMessageInterceptor;
|
||||
import com.egzosn.pay.common.api.PayService;
|
||||
import com.egzosn.pay.common.bean.*;
|
||||
import com.egzosn.pay.common.http.UriVariables;
|
||||
@@ -291,13 +292,19 @@ public class PayController {
|
||||
|
||||
|
||||
/**
|
||||
* 支付回调地址
|
||||
* 支付回调地址 方式一
|
||||
*
|
||||
* 方式二,{@link #payBack(HttpServletRequest, Integer)} 是属于简化方式, 试用与简单的业务场景
|
||||
*
|
||||
*
|
||||
* @param request
|
||||
* @param payId
|
||||
* @return 支付是否成功
|
||||
*
|
||||
*
|
||||
*/
|
||||
@RequestMapping(value = "payBack{payId}.json")
|
||||
public String payBack(HttpServletRequest request, @PathVariable Integer payId) throws IOException {
|
||||
@RequestMapping(value = "payBackOne{payId}.json")
|
||||
public String payBackOne(HttpServletRequest request, @PathVariable Integer payId) throws IOException {
|
||||
//根据账户id,获取对应的支付账户操作工具
|
||||
PayResponse payResponse = service.getPayResponse(payId);
|
||||
PayConfigStorage storage = payResponse.getStorage();
|
||||
@@ -319,6 +326,32 @@ public class PayController {
|
||||
return payResponse.getService().getPayOutMessage("fail", "失败").toMessage();
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* 支付回调地址
|
||||
* 方式二
|
||||
* @param request
|
||||
*
|
||||
* @return
|
||||
*
|
||||
* 拦截器相关增加, 详情查看{@link com.egzosn.pay.common.api.PayService#addPayMessageInterceptor(PayMessageInterceptor)}
|
||||
* <p></p>
|
||||
* 业务处理在对应的PayMessageHandler里面处理,在哪里设置PayMessageHandler,详情查看{@link com.egzosn.pay.common.api.PayService#setPayMessageHandler(com.egzosn.pay.common.api.PayMessageHandler)}
|
||||
*
|
||||
* 如果未设置 {@link com.egzosn.pay.common.api.PayMessageHandler} 那么会使用默认的 {@link com.egzosn.pay.common.api.DefaultPayMessageHandler}
|
||||
*
|
||||
*/
|
||||
@RequestMapping(value = "payBack{payId}.json")
|
||||
public String payBack(HttpServletRequest request, @PathVariable Integer payId) throws IOException {
|
||||
//业务处理在对应的PayMessageHandler里面处理,在哪里设置PayMessageHandler,详情查看com.egzosn.pay.common.api.PayService.setPayMessageHandler()
|
||||
PayResponse payResponse = service.getPayResponse(payId);
|
||||
return payResponse.getService().payBack(request.getParameterMap(), request.getInputStream()).toMessage();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 查询
|
||||
*
|
||||
|
||||
@@ -98,8 +98,8 @@ public class PayPalPayController {
|
||||
*
|
||||
* @return 付款成功信息
|
||||
*/
|
||||
@GetMapping(value = "payBack.json")
|
||||
public String executePayment(HttpServletRequest request) throws IOException {
|
||||
@GetMapping(value = "payBackBefore.json")
|
||||
public String payBackBefore(HttpServletRequest request) throws IOException {
|
||||
try (InputStream is = request.getInputStream()) {
|
||||
if (service.verify(service.getParameter2Map(request.getParameterMap(), is))) {
|
||||
// TODO 这里进行成功后的订单业务处理
|
||||
@@ -110,5 +110,23 @@ public class PayPalPayController {
|
||||
return "failure";
|
||||
}
|
||||
|
||||
/**
|
||||
* 支付回调地址
|
||||
*
|
||||
* @param request
|
||||
*
|
||||
* @return
|
||||
*
|
||||
* 业务处理在对应的PayMessageHandler里面处理,在哪里设置PayMessageHandler,详情查看{@link com.egzosn.pay.common.api.PayService#setPayMessageHandler(com.egzosn.pay.common.api.PayMessageHandler)}
|
||||
*
|
||||
* 如果未设置 {@link com.egzosn.pay.common.api.PayMessageHandler} 那么会使用默认的 {@link com.egzosn.pay.common.api.DefaultPayMessageHandler}
|
||||
*
|
||||
*/
|
||||
@RequestMapping(value = "payBack.json")
|
||||
public String payBack(HttpServletRequest request) throws IOException {
|
||||
//业务处理在对应的PayMessageHandler里面处理,在哪里设置PayMessageHandler,详情查看com.egzosn.pay.common.api.PayService.setPayMessageHandler()
|
||||
return service.payBack(request.getParameterMap(), request.getInputStream()).toMessage();
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -167,14 +167,18 @@ public class UnionPayController {
|
||||
}
|
||||
|
||||
/**
|
||||
* 支付回调地址
|
||||
* 支付回调地址 方式一
|
||||
*
|
||||
* 方式二,{@link #payBack(HttpServletRequest)} 是属于简化方式, 试用与简单的业务场景
|
||||
*
|
||||
* @param request
|
||||
*
|
||||
* @return
|
||||
* @see #payBack(HttpServletRequest)
|
||||
*/
|
||||
@RequestMapping(value = "payBack.json")
|
||||
public String payBack(HttpServletRequest request) throws IOException {
|
||||
@Deprecated
|
||||
@RequestMapping(value = "payBackBefore.json")
|
||||
public String payBackBefore(HttpServletRequest request) throws IOException {
|
||||
|
||||
//获取支付方返回的对应参数
|
||||
Map<String, Object> params = service.getParameter2Map(request.getParameterMap(), request.getInputStream());
|
||||
@@ -191,6 +195,23 @@ public class UnionPayController {
|
||||
|
||||
return service.getPayOutMessage("fail", "失败").toMessage();
|
||||
}
|
||||
/**
|
||||
* 支付回调地址
|
||||
*
|
||||
* @param request
|
||||
*
|
||||
* @return
|
||||
*
|
||||
* 业务处理在对应的PayMessageHandler里面处理,在哪里设置PayMessageHandler,详情查看{@link com.egzosn.pay.common.api.PayService#setPayMessageHandler(com.egzosn.pay.common.api.PayMessageHandler)}
|
||||
*
|
||||
* 如果未设置 {@link com.egzosn.pay.common.api.PayMessageHandler} 那么会使用默认的 {@link com.egzosn.pay.common.api.DefaultPayMessageHandler}
|
||||
*
|
||||
*/
|
||||
@RequestMapping(value = "payBack.json")
|
||||
public String payBack(HttpServletRequest request) throws IOException {
|
||||
//业务处理在对应的PayMessageHandler里面处理,在哪里设置PayMessageHandler,详情查看com.egzosn.pay.common.api.PayService.setPayMessageHandler()
|
||||
return service.payBack(request.getParameterMap(), request.getInputStream()).toMessage();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
|
||||
@@ -10,15 +10,19 @@ import com.egzosn.pay.common.http.UriVariables;
|
||||
import com.egzosn.pay.demo.entity.PayType;
|
||||
import com.egzosn.pay.demo.request.QueryOrder;
|
||||
import com.egzosn.pay.demo.service.PayResponse;
|
||||
import com.egzosn.pay.demo.service.handler.AliPayMessageHandler;
|
||||
import com.egzosn.pay.demo.service.handler.WxPayMessageHandler;
|
||||
import com.egzosn.pay.wx.api.WxPayConfigStorage;
|
||||
import com.egzosn.pay.wx.api.WxPayService;
|
||||
import com.egzosn.pay.wx.bean.WxBank;
|
||||
import com.egzosn.pay.wx.bean.WxTransactionType;
|
||||
import com.egzosn.pay.wx.bean.WxTransferType;
|
||||
import org.springframework.beans.factory.config.AutowireCapableBeanFactory;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
|
||||
import javax.annotation.PostConstruct;
|
||||
import javax.annotation.Resource;
|
||||
import javax.imageio.ImageIO;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
import java.io.ByteArrayOutputStream;
|
||||
@@ -41,6 +45,8 @@ public class WxPayController {
|
||||
|
||||
private PayService service = null;
|
||||
|
||||
|
||||
|
||||
//ssl 退款证书相关 不使用可注释
|
||||
private static String KEYSTORE = "ssl 退款证书";
|
||||
private static String STORE_PASSWORD = "ssl 证书对应的密码, 默认为商户号";
|
||||
@@ -81,6 +87,10 @@ public class WxPayController {
|
||||
//默认的每个路由的最大连接数
|
||||
httpConfigStorage.setDefaultMaxPerRoute(10);
|
||||
service.setRequestTemplateConfigStorage(httpConfigStorage);
|
||||
|
||||
//设置回调消息处理
|
||||
//TODO {@link com.egzosn.pay.demo.controller.WxPayController#payBack}
|
||||
// service.setPayMessageHandler(new WxPayMessageHandler(null));
|
||||
}
|
||||
|
||||
|
||||
@@ -187,14 +197,18 @@ public class WxPayController {
|
||||
}
|
||||
|
||||
/**
|
||||
* 支付回调地址
|
||||
* 支付回调地址 方式一
|
||||
*
|
||||
* 方式二,{@link #payBack(HttpServletRequest)} 是属于简化方式, 试用与简单的业务场景
|
||||
*
|
||||
* @param request
|
||||
*
|
||||
* @return
|
||||
* @see #payBack(HttpServletRequest)
|
||||
*/
|
||||
@RequestMapping(value = "payBack.json")
|
||||
public String payBack(HttpServletRequest request) throws IOException {
|
||||
@Deprecated
|
||||
@RequestMapping(value = "payBackBefore.json")
|
||||
public String payBackBefore(HttpServletRequest request) throws IOException {
|
||||
|
||||
//获取支付方返回的对应参数
|
||||
Map<String, Object> params = service.getParameter2Map(request.getParameterMap(), request.getInputStream());
|
||||
@@ -206,11 +220,28 @@ public class WxPayController {
|
||||
if (service.verify(params)) {
|
||||
//这里处理业务逻辑
|
||||
//......业务逻辑处理块........
|
||||
return service.getPayOutMessage("success", "成功").toMessage();
|
||||
return service.getPayOutMessage("Success", "成功").toMessage();
|
||||
}
|
||||
|
||||
return service.getPayOutMessage("fail", "失败").toMessage();
|
||||
}
|
||||
/**
|
||||
* 支付回调地址
|
||||
*
|
||||
* @param request
|
||||
*
|
||||
* @return
|
||||
*
|
||||
* 业务处理在对应的PayMessageHandler里面处理,在哪里设置PayMessageHandler,详情查看{@link com.egzosn.pay.common.api.PayService#setPayMessageHandler(com.egzosn.pay.common.api.PayMessageHandler)}
|
||||
*
|
||||
* 如果未设置 {@link com.egzosn.pay.common.api.PayMessageHandler} 那么会使用默认的 {@link com.egzosn.pay.common.api.DefaultPayMessageHandler}
|
||||
*
|
||||
*/
|
||||
@RequestMapping(value = "payBack.json")
|
||||
public String payBack(HttpServletRequest request) throws IOException {
|
||||
//业务处理在对应的PayMessageHandler里面处理,在哪里设置PayMessageHandler,详情查看com.egzosn.pay.common.api.PayService.setPayMessageHandler()
|
||||
return service.payBack(request.getParameterMap(), request.getInputStream()).toMessage();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user