在手机浏览器中运行uni-pay示例程序,打开收银台,选择微信支付,会跳转到一个/undefined路径
- 发布:2024-09-24 23:54
- 更新:2024-10-14 10:46
- 阅读:129
产品分类: uniapp/H5
PC开发环境操作系统: Mac
PC开发环境操作系统版本号: 14.5
HBuilderX类型: 正式
HBuilderX版本号: 4.24
浏览器平台: Safari
浏览器版本: ios17.1
项目创建方式: HBuilderX
操作步骤:
预期结果:
正常支付
正常支付
实际结果:
会跳转到一个/undefined路径
会跳转到一个/undefined路径
bug描述:
使用微信支付V3版本,PC浏览器扫码支付正常,手浏览器会跳转undefined,原因如下:
文件 uni_modules/uni-pay/components/uni-pay/uni-pay.vue,方法 orderPayment中,res.order.codeUrl和res.order.mwebUrl都是undefined,导致window.location.href到一个undefined地址。见图1和图4。
通过排查发现,在文件uni_modules/uni-pay/uniCloud/cloudfunctions/uni-pay-co/service/pay.js的createOrder方法中,通过getOrderInfo获取的order对象中,只有一个H5Url属性。见图2。
继续深入发现,在getOrderInfo方法中(uni_modules/uni-pay/uniCloud/cloudfunctions/common/uni-pay/index.js),order对象是从微信接口(/v3/pay/transactions/H5)中获取的,返回的就只有H5Url。见图3。
看了下微信支付的V3文档,微信的接口返回的是一个h5_url,为啥在getOrderInfo方法中又会被转成H5Url也是奇奇怪怪的。而mweb_url参数应该是V2版本的吧
https://pay.weixin.qq.com/docs/merchant/apis/h5-payment/direct-jsons/h5-prepay.html