这张图很重要!!!
1.在支付页面的 onLoad 生命周期函数中执行 uni.getProvider 方法,作用是获取服务供应商 ,此步骤不对应上图,是预先准备工作
// 获取provider
uni.getProvider({
service: "payment",
success: (e) => {
e.provider.map((value) => {
switch (value) {
case 'wxpay':
this.setData({
payType: 'wxpay'
})
break;
default:
break;
}
})
},
fail: (e) => {
console.log(e)
return false;
}
});
这是函数返回值,provider中的参数就是移动设备支持的支付方式(需要手机中有支付宝)
2.对应上图 步骤3 ,提交订单信息给后端,后端同学调用统一下单接口,统一下单接口返回正常的prepay_id,再按签名规范重新生成签名后,将数据传输给APP。这些
3.对应上图步骤4 提交订单,调用微信支付uni.requestPayment,手机就会弹起支付组件。
uni.requestPayment({
provider: this.payType,
orderInfo: obj, //微信、支付宝订单数据,就是上面那个
success: function (res) {
console.log('success:' + JSON.stringify(res));
},
fail: function (err) {
console.log('fail:' + JSON.stringify(err));
}
});
4.配置 manifest.json 文件
5.打包APP的时候,要注意包名和签名,app包名必须要和开发平台的包名一致
申请应用签名 : 手机下载app,点我下载 ,安装到手机上。另外手机再安装上咱们这个打的包。输入包名,会自动获取到签名,复制下载配置到微信开放平台即可。
然后就可以正式打包APP来进行调试啦。
如遇到报错:uniapp微信支付报错requestPayment:fail errors
- 微信支付安卓不支持真机调试
- 先检查orderInfo对象中的参数是否错误
- 重新获取apk签名,去微信开放平台,重新填写对应的包名与签名,等待几分钟,就可以解决。。。
如有大神发现本篇文章出现疏漏和错误,还望指正