一、App平台支付流程
流程:支付平台功能申请 -> manifest.json
里配置支付参数 -> uni-app 里调用 API
进行支付
二、支付宝App支付功能申请
登录支付宝账号,创建应用接入支付宝App支付能力,包括以下步骤:
- 创建应用(获取appid)
- 开通App支付功能
- 配置密钥(获取公钥、私钥)
具体可参考支付宝官方文档: App支付快速接入
三、在uni-app中manifest.json中:App SDK配置支付
- 在
manifest.json - App模块权限选择
中勾选 payment(支付) - 在
manifest.json - App SDK配置
中,勾选需要的支付平台,目前有微信支付、支付宝支付、苹果应用内支付(IAP),其中微信支付需要填写从微信开放平台获取的AppID
- 这些配置需要打包生效,真机运行仍然是HBuilder基座的设置,可使用自定义基座调试。离线打包请参考离线打包文档在原生工程中配置。
- 配置并打包后,通过uni.getProvider可以得到配置的结果列表,注意这里返回的是manifest配置的,与手机端是否安装微信、支付宝无关。
如果手机端未安装支付宝,调用时会启动支付宝的wap页面登陆,如果已安装相应客户端,会启动其客户端登陆。
在uni-app中manifest.json中:源码视图配置
//支付宝支付
uni.getProvider({
service:'payment' ,//获取服务供应商
success:(res)=>{
console.log(res.service); //服务类型:payment
console.log(res.provider); //不同服务类型下可能的取值:["alipay","wxpay"]
if(res.provider.indexOf('alipay') != -1){
//服务提供商(从服务供应商中获取,是否包含支付宝支付)
//调取后台接口,获取支付宝支付的订单号
this.$Z.post(this.$url+'/UserOrderNumber',{
//你要传给后台的参数(具体看后台要什么参数)
},{}).then(res=>{
console.log('支付宝订单号',res)
//从后台获取的宝支付的订单号
let orderData = res.data.orderNumber
//调取后台接口,获取支付宝支付的订单数据
this.$Z.post(this.$url+'/pay/GroupPay',{
//把订单号与支付方式传给后台(具体看后台要什么参数)
},{}).then(res=>{
let orderInfo = res.data; //从后台返回的支付宝订单数据
//统一各平台的客户端支付API
uni.requestPayment({
provider: 'alipay', //服务提供商(支付宝)(服务提供商,通过uni.getProvider获取)
orderInfo: orderInfo, //后台返回的支付宝订单数据
success(res){
console.log('success:' + JSON.stringify(res));
},
fail(err){
console.log('fail:' + JSON.stringify(err));
}
});
})
})
}
}
})
上述代码中调取接口方式this.$Z.post()是小编封装好的,详情请参考小编之前文章:uni-app中调取接口的三种方式与封装uni.request()