问题简述:
使用小程序web-view加载网页,调用支付时,使用如下小程序路由API跳转到小程序支付页发起小程序支付。
wx.miniProgram.navigateTo({ url: XXX})
调起支付过程中,出现弹框,提示:支付JSAPI缺少参数: total_fee,微信小程序文档中未找到相关说明,后来在网上搜索,得到解决方案。原来支付API传参时(如下代码),package字段值不符合文档要求。在通过url拼接跳页传递package参数时,原有从后端接口获取到的支付参数prepay_id=wx***,传递到小程序支付页面后,只显示prepay_id,等于号后边的参数消失了(目前原理不明,未深入研究,欢迎看到的小伙伴补充相关链接说明)。
wx.requestPayment({
timeStamp: '',
nonceStr: '',
package: '', // 要求格式为:prepay_id=***
signType: 'MD5',
paySign: '',
success (res) { },
fail (res) { }
})
微信小程序支付API文档链接:wx.requestPayment(Object object)
解决方案:
对传参做调试,解决了遇到的问题,即通过截取字符串的方法,后端接口返回的prepay_id=wx***,将等号后的字段截取,赋值给自定义的url拼接字段进行传递。在小程序支付页,获取后重新拼接赋值给package。参看如下文章: