课程名称:Java支付全家桶 企业级各类支付手段一站式解决方案
课程章节:4-8 商户系统接收支付结果
主讲老师:神思者
课程内容:
今天课程学习的主要知识点内容包括:
微信平台的支付回调、回调接口的代码编写、使用Postman工具测试回调接口。
课程收获:
1、微信平台的支付回调,学习到了:
(1)微信平台会把用户支付的结果,以XML报文的形式发送到指定的URL回调地址;
(2)如果商户系统没有响应,微信平台会每隔一段时间再触发一次支付结果,所以商户系统接收到微信的报文后,需要按具体的格式要求给微信平台返回响应报文,以终止微信平台的重试行为;
(3)查看微信接口的报文参数说明;
2、回调接口的代码编写
掌握主要核心代码如下:
@PostMapping("/recievePayMessage")
@ApiOperation("接收支付消息通知")
public void recievePayMessage(HttpServletRequest request, HttpServletResponse response) throws Exception {
request.setCharacterEncoding(CharsetUtil.UTF_8);
BufferedReader reader = request.getReader();
StringBuffer temp = new StringBuffer();
String line = reader.readLine();
while (null != line) {
temp.append(line);
line = reader.readLine();
}
reader.close();
Map<String, String> map = WXPayUtil.xmlToMap(temp.toString());
String returnCode = map.get("return_code");
String resultCode = map.get("result_code");
if ("SUCCESS".equals(returnCode) && "SUCCESS".equals(resultCode)) {
String sign = map.get("sign");
map.remove("sign");
String checkSign = WXPayUtil.generateSignature(map, weiXinConfig.getKey());
if (checkSign.equals(sign)) {
String outTradeNo = map.get("out_trade_no");
OrderEntity order = orderService.getOne(
Wrappers.<OrderEntity>lambdaQuery()
.eq(OrderEntity::getCode, outTradeNo)
.last("limit 1")
);
if (null != order) {
order.setStatus(2);
order.setPaymentType(1);
orderService.updateById(order);
}
}
}
response.setCharacterEncoding(CharsetUtil.UTF_8);
response.setContentType("application/xml");
PrintWriter writer = response.getWriter();
writer.write(
"<xml><return_code><![CDATA[SUCCESS]]></return_code><return_msg><![CDATA[OK]]></return_msg></xml>"
);
writer.close();
}
需要注意的是, @PostMapping("/recievePayMessage") 指定的接口路径,需要和先前创建订单时指定的接口相一致:
@Login
@PostMapping("/microAppPayOrder")
@ApiModelProperty("小程序付款")
public R microAppPayOrder(@RequestBody PayOrderForm form, @RequestHeader HashMap header) {
……
map.put("notify_url", "https://xxx.xxx.xxx/renren-fast/app/wx/recievePayMessage");
……
}
3、使用Postman工具测试回调接口
需要注意的地方有:
(1)选择Post请求方式,地址需要写对;
(2)在Body处选择raw,报文格式需要下拉选择 XML(application/xml);
(3)复制消息案例,修改流水号,进行请求发送。
今天九月打卡活动的第1天,,希望自己能坚持下去,为自己加油!
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
相关文章推荐
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦