SpringBoot支付系列 對接微信app支付 伺服器設定
阿新 • • 發佈:2018-12-31
如圖: 獲取mcnID:
配置金鑰:
第二步,引入jar包:
<dependency> <groupId>com.egzosn</groupId> <artifactId>pay-java-common</artifactId> <version>2.10.2</version> </dependency> <dependency> <groupId>com.egzosn</groupId> <artifactId>pay-java-wx</artifactId> <version>2.10.2</version> </dependency>
第三步:配置引數:
private PayService service = null;
@PostConstruct public void init() { WxPayConfigStorage wxPayConfigStorage = new WxPayConfigStorage(); wxPayConfigStorage.setMchId("合作者id(商戶號)"); wxPayConfigStorage.setAppid("應用id"); wxPayConfigStorage.setSecretKey("金鑰"); wxPayConfigStorage.setNotifyUrl("非同步回撥地址"); wxPayConfigStorage.setSignType(SignUtils.MD5.name()); wxPayConfigStorage.setInputCharset("utf-8"); service = new WxPayService(wxPayConfigStorage); HttpConfigStorage httpConfigStorage = new HttpConfigStorage(); //請求連線池配置 //最大連線數 httpConfigStorage.setMaxTotal(20); //預設的每個路由的最大連線數 httpConfigStorage.setDefaultMaxPerRoute(10); service.setRequestTemplateConfigStorage(httpConfigStorage); }
第四步:供app提供建立訂單資訊介面:
/** * 獲取支付預訂單資訊 * * @return 支付預訂單資訊 */ @ApiOperation("返回訂單資訊") @RequestMapping(value = "app", method = RequestMethod.POST) public Map<String, Object> app(@RequestBody PayOrder order) { init(); Map<String, Object> data = new HashMap<>(); data.put("state", 1); //App支付 order.setTransactionType(WxTransactionType.APP); data.put("orderInfo", service.orderInfo(order)); return data; }
第五步:校驗回撥資訊,設定業務邏輯:注意:此api,不需要設定api方法。否則,可能會回撥不成功。
/**
* 支付回撥地址
*
* @param request
*
* @return
*/
@ApiOperation("回撥地址")
@RequestMapping(value = "payBack")
public String payBack(HttpServletRequest request) throws IOException {
init();
//獲取支付方返回的對應引數
Map<String, Object> params = service.getParameter2Map(request.getParameterMap(), request.getInputStream());
if (null == params) {
return service.getPayOutMessage("fail", "失敗").toMessage();
}
//校驗
if (service.verify(params)) {
//這裡處理業務邏輯
//......業務邏輯處理塊........
String orderNo=(String)params.get("out_trade_no");
if(StringUtils.isNotBlank(orderNo)){
scmSalesOrderService.updateStatus(orderNo);
}
return service.getPayOutMessage("success", "成功").toMessage();
}
return service.getPayOutMessage("fail", "失敗").toMessage();
}