课程名称: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天,希望自己能坚持下去,为自己加油!