javascript技巧

关注公众号 jb51net

关闭
首页 > 网络编程 > JavaScript > javascript技巧 > 微信小程序支付包含uniapp

微信小程序支付包含uniapp方法超详细讲解

作者:广东蜡笔小新

微信小程序支付流程涉及多个步骤和多个参与方的交互,下面这篇文章主要介绍了微信小程序支付包含uniapp方法的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下

本文只介绍前端的实现逻辑,所以不涉及申请微信支付API,因为该功能是后端处理。

一、了解微信支付流程

官方参考文档:微信支付开发文档

微信支付官方流程图:

二、【前端】微信支付实现步骤

1.创建订单接口

当用户点击购买按钮时,首先第一步要创建订单,后端需要提供下单接口(后端调用统一下单接口,也就是生成预支付交易单),该接口返回给前端一个订单id,此时订单处于待付款状态

代码示例:

// uniapp || 微信小程序
PlaceAnOrder(params).then((res) => {
    const PayParams = { order_id: res.order_id }; // 接口返回的订单ID
})

2.获取支付参数

通过订单id调用后端接口拿到支付参数(后端调用预支付接口的时候拿到的参数):appId、timeStamp、nonceStr、package、signType,不过要区别uniapp的写法,和官方大有不同

字段名变量名必填类型示例值描述
小程序IDappIdStringwxd678efh567hg6787微信分配的小程序ID
时间戳timeStampString1490840662时间戳从1970年1月1日00:00:00至今的秒数,即当前的时间
随机串nonceStrString5K8264ILTKCH16CQ2502SI8ZNMTM67VS随机字符串,不长于32位。推荐随机数生成算法
数据包packageStringprepay_id=wx2017033010242291fcfe0db70013231072统一下单接口返回的 prepay_id 参数值,提交格式如:prepay_id=wx2017033010242291fcfe0db70013231072
签名方式signTypeStringMD5签名类型,默认为MD5,支持HMAC-SHA256和MD5。注意此处需与统一下单的签名类型一致
// 微信开发工具
PlaceAnOrder(params).then((res) => {
    const wxPayParams = {
      order_id: res.data.order_id,
    };
    fetchWxPay(wxPayParams).then((payRes) => {
      const { data } = payRes; // data包含了appId、timeStamp、nonceStr、package、signType,后端已对格式做处理,格式参考上面表格
      const payData = {
        ...data,
        success(sucRes) {
          console.log('success', sucRes);
        },
        fail(err) {
          console.log('err', err);
        },
        complete() {
		  console.log('complete');
        },
      };
    });
  });
// uniapp
payApi(PayParams).then((payRes) => {
    uni.getProvider({
        service: 'payment',
        success: function (res) {
            let payConfing: any = {};
            payConfing = {
                provider: res.provider[0],
                ...payRes,
                service: 5,
				success(sucRes) {
                  console.log('success', sucRes);
                },
                fail(err) {
                  console.log('err', err);
                },
                complete() {
                  console.log('complete');
                },
            },
		}
	})
})

3.调用wx.requestPayment发起微信支付

当一切参数都能拿到并且准确无误后调用微信官方接口wx.requestPayment,如果是uniapp则使用uni.requestPayment,具体参数说明参考:https://doc.dcloud.net.cn/uni-app-x/api/request-payment.html#requestpayment

// weixin
wx.requestPayment(payData)
// uniapp
uni.requestPayment(payConfing)

总结 

到此这篇关于微信小程序支付包含uniapp方法的文章就介绍到这了,更多相关微信小程序支付包含uniapp内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文