unipay为uniCloud开发者提供了简单、易用、统一的支付能力封装。让开发者无需研究支付宝、微信等支付平台的后端开发、无需为它们编写不同代码,拿来即用,屏蔽差异。
uni-app前端已经封装的全端支付 api uni.requestPayment,现在服务端也封装好了unipay for uniCloud,从此开发者可以极快的完成前后一体的支付业务。
目前已封装 App 端(微信支付和支付宝支付)、微信小程序、支付宝小程序的支付能力。
unipay是开源 sdk,可放心使用。本插件还包含示例工程,配置自己在微信和支付宝申请的相关配置后即可运行。
为了更好的体验支付流程可以在插件市场导入unipay的示例项目快速体验,插件市场 unipay (opens new window)。
1.首先使用uniCloud配置云函数(云函数的创建请参考官网)
2.从插件市场导入uni-pay,导入后,右键云函数getOrderInfo管理公共模块,勾选uni-pay
3.getOrderInfo函数的配置,记得引入unipay,下面是配置支付的配置信息
4.在业户逻辑调用云函数获取微信的预订单号等信息
uniCloud.callFunction({
name: 'getOrderInfo',
data: {
openId: this.GetUserInfor.openId,
mchId: '',//商户号
key: '',//商户平台key
orderId: this.orderId,
timestamp: this.timestamp
}
})
.then(res => {
//res为微信预订单信息
console.log('209', res);
uni.requestPayment({
// #ifdef APP-PLUS
provider: selectedProvider, // App端此参数必填,可以通过uni.getProvider获取
// #endif
// #ifdef MP-WEIXIN
...res.result.orderInfo,
// #endif
// #ifdef APP-PLUS || MP-ALIPAY
orderInfo: res.result.orderInfo,
// #endif
...res.result.orderInfo,
success: (success)=> {
let time = uni.$u.timeFormat(this.timestamp, 'yyyy-mm-dd hh:MM:ss');
//支付成功后调用后端api
this.$api.postInsertWeChatPayInfo({})
.then(res => {
console.log(res);
});
},
fail: (err)=> {
console.log(err);
}
});
})
.catch(err => {
console.log(err);
});
// wx.requestPayment()
}