课程名称:Java支付全家桶 企业级各类支付手段一站式解决方案
课程章节:4-4 小程序向商户系统发出支付请求
主讲老师:神思者
今天学习的内容包括:
小程序向商户系统发出支付请求、小程序支付的流程、创建支付订单请求类、后端微信支付接口逻辑的编写、声明接口调用地址、在页面按钮点击事件中触发接口请求。
课程收获:
1、小程序支付的流程:【用户】–点击支付按钮–>【小程序】–请求生成订单–>【商户系统】–请求生成订单–>【微信平台(生成订单)】–订单信息–>【商户系统(生成数据签名)】–支付参数–>【小程序】;
2、创建支付订单请求类,关键代码如下:
@Data @ApiModel(value = "支付订单表单") public class PayOrderForm { @ApiModelProperty(value = "订单id") @NotNull(message = "订单id不能为空") private Long orderId; }
3、后端微信支付接口逻辑的编写,关键代码如下:
@Login @PostMapping("/microAppPayOrder") @ApiModelProperty("小程序付款") public R microAppPayOrder(@RequestBody PayOrderForm form, @RequestHeader HashMap header) { ValidatorUtils.validateEntity(form); String token = header.get("token").toString(); long userId = Convert.toLong(jwtUtils.getClaimByToken(token).getSubject()); long orderId = form.getOrderId(); UserEntity one = userService.getOne( Wrappers.<UserEntity>lambdaQuery() .eq(UserEntity::getUserId, userId) .last("limit 1") ); if (null == one) { return R.error("用户不存在"); } String openid = one.getOpenId(); OrderEntity order = orderService.getOne( Wrappers.<OrderEntity>lambdaQuery() .eq(OrderEntity::getId, orderId) .eq(OrderEntity::getUserId, userId) .eq(OrderEntity::getStatus, 1) ); // 其他校验 // 验证购物券是否有效 // 验证团购活动是否有效 // 向微信平台发送请求,创建支付订单 // TODO: 老师下节课讲解 return R.ok(); }
4、声明接口调用地址,关键代码如下:
let baseUrl = "https://haiten.virs.top/renren-fast" Vue.prototype.url = { …… "microAppPayOrder": baseUrl + "/app/wx/microAppPayOrder" }
5、在页面按钮点击事件中触发接口请求,关键代码如下:
pay(id) { uni.request({ url: this.url.microAppPayOrder, method: "post", header: { "token": uni.getStorageSync("token") }, data: { "orderId": id }, success: (resp) => { console.log(resp); // 触发支付方法 // TODO: 老师下节课讲解 } })
今天看课程视频写手记的第11天,希望自己能坚持下去,为自己加油!