Java教程

【学习打卡】第14天 Java支付全家桶 企业级各类支付手段一站式解决方案(4-7)

本文主要是介绍【学习打卡】第14天 Java支付全家桶 企业级各类支付手段一站式解决方案(4-7),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

课程名称: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天,终于坚持到最后了,为自己加油!

这篇关于【学习打卡】第14天 Java支付全家桶 企业级各类支付手段一站式解决方案(4-7)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!