课程名称:Java支付全家桶 企业级各类支付手段一站式解决方案
课程章节:4-7 完成小程序付款
主讲老师:神思者
课程内容:
今天学习的内容包括:
完成小程序付款,含:调整订单表结构、面向对象的数据修改、编写小程序付款下单程序、微信平台返回的结果、封装数据返回成小程序、小程序收到参数后发起支付请求。
课程收获:
1、调整订单表接口,可以通过navicat等连接功能修改表结构,同时需要注意java的实体类,mapper类也需要对应的进行修改,不然程序运行会报错;
2、面向对象的数据修改,单表操作等简易场景,建议通过面向对象的方式进行操作,可以有效减少xml的代码量和提高编程效率;
3、编写小程序付款下单,主要代码如下:
String code = IdUtil.fastSimpleUUID();
WXPay wxPay = new WXPay(myWXPayConfig);
Map<String, String> map = new HashMap();
map.put("openid", openid);
map.put("out_trade_no", code);
map.put("total_fee", amount);
map.put("attach", "附加数据-xx分店");
map.put("body", "订单备注-JSAPI支付测试");
map.put("spbill_create_ip", "127.0.0.1");
map.put("notify_url", "xxxxxx");
map.put("trade_type", "JSAPI");
Map<String, String> result = wxPay.unifiedOrder(map);
4、微信平台返回的结果,主要包括:return_code(状态码)、app_id(小程序ID)、mch_id(商户ID)、nonce_str(随机字符串)、sign(数字签名)、result_code(业务结果)、trade_type(交易类型)、prepay_id(支付订单ID);
5、封装数据返回成小程序,主要代码如下:
String prepayId = result.get("prepay_id");
if (null != prepayId && 0 != prepayId.length()) {
order.setCode(code);
order.setPrepayId(prepayId);
orderService.updateById(order);
// 生成数字签名
String timeStamp = System.currentTimeMillis()+"";
String nonceStr = WXPayUtil.generateNonceStr();
String packageStr = "prepay_id=" + prepayId;
String signType = "MD5";
map.clear();
map.put("timeStamp", timeStamp);
map.put("nonceStr", nonceStr);
map.put("package",packageStr );
map.put("signType", signType);
map.put("appId", weiXinConfig.getAppId());
String paySign = WXPayUtil.generateSignature(map, weiXinConfig.getKey());
return R.ok()
.put("timeStamp", timeStamp)
.put("nonceStr", nonceStr)
.put("package", packageStr)
.put("signType", signType)
.put("paySign", paySign);
} else {
return R.error("微信支付模块故障");
}
6、小程序收到参数后发起支付请求,主要代码如下:
uni.requestPayment({
"timeStamp": resp.data.timeStamp,
"nonceStr": resp.data.nonceStr,
"package": resp.data.package,
"signType": resp.data.signType,
"paySign": resp.data.paySign,
success: (res) => {
console.log(res);
uni.showToast({
title: "支付成功"
})
},
fail: (err) => {
console.log(err.errMsg)
uni.showToast({
title: "支付失败"
})
}
})
今天看课程视频写手记的第14天,终于坚持到最后了,为自己加油!