XMN
XMN
  • 发布:2024-03-01 11:55
  • 更新:2024-03-01 11:55
  • 阅读:135

#插件讨论# 【 uni-pay - DCloud前端团队 】电脑微信端发起支付调用native扫码支付

分类:uniCloud

在unicloud中使用uni-pay的前端组件时,如果是在电脑微信端打开h5链接,调用uni-pay前端组件发起支付时,目前会调用jsapi进行支付。

使用jsapi支付需要获取code然后换取openid,需要访问获取code的链接并重定向,而且可能会遇到code被重复使用等问题(好巧不巧我就遇到了)

但是电脑端的微信打开h5链接,其实也是一个pc浏览器的环境,在ua中可以判断,所以其实是可以调用native进行扫码支付的。

native扫码支付不需要获取code和openid,相比jsapi在开发难度上没这么麻烦,而且都是扫码支付,用native和jsapi没啥区别,那就用开发简单的native方式。

但是目前使用uni-pay前端组件在电脑微信端默认使用的jsapi,在组件上指定mode为pc也没用,最后在组件中发现了问题,将使用jssdk判断浏览器类型的方式换成使用modeCom计算属性进行判断,就可以在电脑微信端h5中调用native支付了,其余代码均不需要修改。

//在uni-pay.vue的createOrder方法中,将jsSdk.checkPlatform() === "pc"修改为this.modeCom === "pc"  
// 创建支付  
async createOrder(data = {}) {  
    let { options } = this;  
    Object.assign(options, data);  
    if (options.provider === "appleiap") {  
    // ios内购走特殊逻辑  
        return this._appleiapCreateOrder(options);  
    }  
    // #ifdef H5  
    // 判断如果是pc访问,则强制扫码模式  
    // if (jsSdk.checkPlatform() === "pc") {  
        //  options.qr_code = true;  
    // }  

    if (this.modeCom === "pc") {  
        options.qr_code = true;  
    }  
    // #endif  
    ...... // 其余代码  
}
0 关注 分享

要回复文章请先登录注册