课程名称:Java支付全家桶 企业级各类支付手段一站式解决方案
课程章节:5-5 创建Native支付订单
主讲老师:神思者
课程内容:
今天课程学习的主要知识点内容包括:
编写后端Controller类的的接口方法,使用 Swagger 调试后端接口。
课程收获:
1、编写后端Controller类的的接口方法,其主要代码如下:
@Login
@PostMapping("/nativeAppPayOrder")
@ApiModelProperty("小程序付款")
public R nativeAppPayOrder(@RequestBody PayOrderForm form, @RequestHeader HashMap<String, String> header) {
ValidatorUtils.validateEntity(form);
String token = header.get("token");
long userId = Convert.toLong(jwtUtils.getClaimByToken(token).getSubject());
long orderId = form.getOrderId();
OrderEntity order = orderService.getOne(
Wrappers.<OrderEntity>lambdaQuery()
.eq(OrderEntity::getId, orderId)
.eq(OrderEntity::getUserId, userId)
.last("limit 1")
);
if (null == order) {
return R.error("不是有效订单");
}
String amount = Convert.toStr(order.getAmount().multiply(new BigDecimal(100)).intValue());
// 其他校验
// 验证购物券是否有效
// 验证团购活动是否有效
// 向微信平台发送请求,创建支付订单
try {
String code = IdUtil.fastSimpleUUID();
WXPay wxPay = new WXPay(myWXPayConfig);
Map<String ,String> map = new HashMap<>();
map.put("out_trade_no", code);
map.put("total_fee", amount);
map.put("attach", "附加数据-xx分店");
map.put("body", "订单备注-NATIVE支付测试");
map.put("nonce_str", WXPayUtil.generateNonceStr());
map.put("spbill_create_ip", "127.0.0.1");
map.put("notify_url", "https://haiten.virs.top/renren-fast/app/wx/recievePayMessage");
map.put("trade_type", "NATIVE");
Map<String, String> result = wxPay.unifiedOrder(map);
String prepayId = result.get("prepay_id");
if (null != prepayId && 0 != prepayId.length()) {
order.setCode(code);
order.setPrepayId(prepayId);
orderService.updateById(order);
String codeUrl = result.get("code_url");
return R.ok().put("codeUrl", codeUrl);
} else {
return R.error("微信支付模块故障");
}
} catch (Exception e) {
e.printStackTrace();
return R.error("微信支付模块故障");
}
}
关键点:
(1)Native 支付不需要传 openid 字段;
(2)支付方式传参的时候,需要改成 NATIVE,需要注意的是这里只能填大写的 NATIVE,不能填小写或驼峰形式;
(3)关于数字签名,xwPay的方法里面以及该封装了数据签名的实现,所以不需要额外做数据签名,如果需要手工数据签名,则应该使用 WXPayUtil.generateSignatrue(map, key) 方法生成;
(4)注意需要保存接口返回的微信支付id: prepay_id;
(5)提取接口放回里面的 code_url,后续用于生成二维码图片返回给前端;
2、使用 Swagger 调试后端接口
关键点:
(1)Swagger 页面的路径:http://localhost:8080/renren-fast/swagger-ui.html
(2)先使用 Swagger 调用登录接口,获取返回的 token,并保存到页面顶端的 Authorize 处,让 Swagger 记住令牌;
(3)调试后端的 Native 支付订单接口;
点击查看更多内容
为 TA 点赞
评论
共同学习,写下你的评论
评论加载中...
作者其他优质文章
正在加载中
相关文章推荐
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦