收藏
回答

被共享环境的小程序前端调用微信支付工作流时无法自动注入openid?

被共享环境的小程序前端部分代码,sharedCloud是我初始化后的正确的共享环境实例,这个没有问题

      // 调用微信支付工作流

      await sharedCloud.callFunction({

        name: 'cloudbase_module',

        data: {

          // 工作流ID

          name: '我隐藏了,此为微信支付的工作流id',

          data: {

            description: `购买${realOrderData.packageName}`,

            out_trade_no: realOrderData.outTradeNo,

            amount: {

              total: Math.round(realOrderData.price * 100) // 使用后端验证过的真实价格

            },

            // 附加数据,使用简单键值对

            attach: `packageId=${realOrderData.packageId}`

          }

        },

        success: res => {

          wx.hideLoading();

          console.log('下单结果:', res);

         

          // 检查是否有错误

          if (res.result && res.result.errcode) {

            this.setData({ isProcessing: false });

            wx.showToast({

              title: '创建支付失败',

              icon: 'none'

            });

            console.error('支付创建失败,错误:', res.result.errmsg);

            return;

          }

后台执行报错:

支付创建失败,错误: {"message":"微信支付SDK请求失败, 响应码:400,错误码:PARAM_ERROR, 错误信息: 输入源“/body/payer/openid”映射到字段“用户标识”必填性规则校验失败,此字段为必填项"}(env: Windows,mp,1.06.2412050; lib: 3.8.1)

--------共享环境的那个小程序就可以自动注入openid,为啥这个不行,商户号已经关联并授权了。


回答关注问题邀请回答
收藏

1 个回答

  • 刘
    星期一 19:20

    感谢各位,已经解决,记录一下

    1、解答上面的问题

    B中因为是共享环境,所以获取B的openid需要context.FROM_OPENID获取,这样解决了上面的问题;

    2、解决上面问题后引发新的问题,报appid和openid不匹配

    这里,因为我是B调用A共享的支付工作流,A共享环境给B,B调用微信支付工作流需要单独建一个,因为A的微信支付工作流在工作流参数里有一个appid是必填的,那里只能写A的appid。B单独建立一个支付工作流填B的appid问题搞定。

    星期一 19:20
    有用 1
    回复
登录 后发表内容