收藏
回答

正式版使用iPhone不能调起微信支付,开发版或开发者却可以,为什么?

最新消息:解决了,感谢“跨商通”大神的指导。勾选ES6转ES5,增强编译,就没问题了。


问题描述:

(1)正式版、iPhone、普通用户,不能正常调起微信支付。

(2)正式版、Android、普通用户,可以正常调起微信支付。

(3)正式版、iPhone、开发者,不能正常调起微信支付。

(4)开发版、无论是Android还是iPhone、开发者,都可以正常调起微信支付。


-小程序APPID:wx32e58c8b56c48a32

-请求的具体API接口(提供文档地址和请求的URL):wx.requestPayment

- 问题发生时间【必填】:2021年2月27日 19:00

- 商户号【 必填】:1603093166

- 商户订单号【 必填】:8f8f44-1614423574810-957597

- 相关报错信息文案:正式版拿不到日志,看不到报错信息

- 问题截图或视频:无

-完整的请求和返回参数以及单号:普通用户使用正式版/体验版都调不起支付,好像云函数wxpay没有进入,所有查不到日志,初步分析原因可能是wxpay云函数或者CloudPay.unifiedOrder(),但是也找不到办法解决。



小程序端:
// 微信支付:统一下单
    wx.cloud.callFunction({
      name: 'wxpay',
      data: {
        params
      },
      success: res => {
        const payment = res.result.payment
        console.log('success:'+res)

        wx.showLoading()
        //发起支付
        wx.requestPayment({
          ...payment,
          success(res) {
            console.log('pay success', res)
          },
          fail(err) {
            console.log('pay fail', err)
          },
          complete(err){
            wx.hideLoading()
          }
        })
      },
      fail(err){console.log('fail:'+err)},
      complete(err){console.log('complete:'+err)},
    })


云函数wxpay:
exports.main = async (event, context) => {
  console.log(event.params)
  const res = await cloud.cloudPay.unifiedOrder({
    "functionName":"wxpayCallback",
    "envId":"online",
    "subMchId":"1603093166",
    "spbillCreateIp" : "127.0.0.1",
    "tradeType":"JSAPI",
    "nonceStr":event.params.nonceStr, //随机字符串
    "body" : event.params.body, //商品描述
    "outTradeNo" : event.params.outTradeNo, //商户订单号
    "totalFee" : event.params.totalFee  //总金额(单位:分)
  })
  return res
}

最后一次编辑于  2021-02-28
回答关注问题邀请回答
收藏

2 个回答

  • 跨商通
    跨商通
    2021-02-27

    碰到过一次这种情况,原因是不支持promise,换成异步wx.requestPayment即解决。

    如果你不是这种情况,跳过。

    2021-02-27
    有用
    回复 6
    • 杰_boat
      杰_boat
      2021-02-27
      那我试一下,但是开通开发者权限又能正常支付,很奇怪
      2021-02-27
      回复
    • 杰_boat
      杰_boat
      2021-02-27
      刚才看了代码,好像没有使用promise

              wx.requestPayment({
                ...payment,
                success(res) {
                  console.log("pay succes", res)
                },
                fail(err) {
                  console.error("pay fail", err)
                },
                complete(err){
                }
      2021-02-27
      回复
    • 跨商通
      跨商通
      2021-02-28回复杰_boat
      增强编译勾选了吗?
      2021-02-28
      1
      回复
    • 杰_boat
      杰_boat
      2021-02-28回复跨商通
      这个作用是什么?今天我再试了一次发现iPhone第一次可以调出支付,点取消后,再次调用又不行了,有没有可能同一用户不能在一段时间内频繁支付?但是每次生成的订单号都是不同的,这有没有影响?
      2021-02-28
      回复
    • 杰_boat
      杰_boat
      2021-02-28回复跨商通
      刚才试了勾选ES6转ES5,增强编译,还真的可以了。哥太厉害了,感谢你啊。希望能讲讲具体原理。
      2021-02-28
      回复
    查看更多(1)
  • Memory (私信不回复)
    Memory (私信不回复)
    2021-02-27

    统一下单请求正常么?找你后端问问

    2021-02-27
    有用
    回复 1
    • 杰_boat
      杰_boat
      2021-02-27
      我是用云开发微信支付的,没有后端。开发者或开发版都能正常支付。
      2021-02-27
      回复
登录 后发表内容
问题标签