根据官方文档可知,uniapp对支付功能做了统一封装,uni.requestPayment,不管是在某家小程序还是在app中,客户端军均可使用此API调用支付,此API运行在各端时,会自动转换未各端的原生支付API调用。但是uni.requestPayment是支持也是有差异的,由官方文档可知:
总的来说,uni.requestPayment()对于h5,飞书小程序和京东小程序不支持,需要常规支付操作,对于h5应用的微信支付和支付宝支付,可以参见我的另一篇博客:uniapp h5的支付宝,微信支付_F_cy的博客-CSDN博客
app的支付:
1. 在manifest.json - App模块权限选择
中勾选 payment(支付)
2. 在 manifest.json - App SDK配置
中,勾选需要的支付平台,目前有微信支付、支付宝支付、苹果应用内支付(IAP),其中微信支付需要填写从微信开放平台获取的
3. 这些配置需要打包生效,真机运行仍然是HBuilder基座的设置,可使用自定义基座调试。离线打包请参考离线打包文档在原生工程中配置
4. 配置并打包后,通过uni.getProvider
可以得到配置的结果列表,注意这里返回的是manifest配置的,与手机端是否安装微信、支付宝无关。
以上是官方文档的app接入前的准备,详情可以参照uniapp官方文档:
uni.requestPayment(OBJECT) | uni-app官网
注意,此片文档仅展示发起支付的操作,前端在app内发起支付还是较为简单的,基本上全是后端处理,返回前端发起支付所需要的数据,前端直接调用uni.requestPayment()进行调用即可:
uniapp app发起微信支付:
uni.requestPayment({
"provider": "wxpay",
"orderInfo": {
"appid": "wx499********7c70e", // 微信开放平台 - 应用 - AppId,注意和微信小程序、公众号 AppId 可能不一致
"noncestr": "c5sEwbaNPiXAF3iv", // 随机字符串
"package": "Sign=WXPay", // 固定值
"partnerid": "148*****52", // 微信支付商户号
"prepayid": "wx202254********************fbe90000", // 统一下单订单号
"timestamp": 1597935292, // 时间戳(单位:秒)
"sign": "A842B45937F6EFF60DEC7A2EAA52D5A0" // 签名,这里用的 MD5/RSA 签名
},
success(res) {},
fail(e) {}
})
uniapp微信小程序发起支付:
// 仅作为示例,非真实参数信息。
uni.requestPayment({
provider: 'wxpay',
timeStamp: String(Date.now()),
nonceStr: 'A1B2C3D4E5',
package: 'prepay_id=wx20180101abcdefg',
signType: 'MD5',
paySign: '',
success: function (res) {
console.log('success:' + JSON.stringify(res));
},
fail: function (err) {
console.log('fail:' + JSON.stringify(err));
}
});
uniapp app发起支付宝支付
uni.requestPayment({
provider: 'alipay',
orderInfo: 'orderInfo', //微信、支付宝订单数据 【注意微信的订单信息,键值应该全部是小写,不能采用驼峰命名】
success: function (res) {
console.log('success:' + JSON.stringify(res));
},
fail: function (err) {
console.log('fail:' + JSON.stringify(err));
}
});
以上就是对uniapp官网uni.requestPayment请求对于app的微信,支付宝以及微信小程序的发起支付调用的总结,主要是按照官网文档进行调用即可。