收藏
回答

CloudPay.unifiedOrder()报错sub_mch_id与sub_appid不匹配

框架类型 问题类型 终端类型 AppID 环境ID 基础库版本
小程序 Bug 工具 wx840b359e5e98f560 e001-8gj2go734d53bfb4 2.19.3

接口:https://developers.weixin.qq.com/miniprogram/dev/wxcloud/reference-sdk-api/open/pay/CloudPay.unifiedOrder.html

问题:

1.批量代云开发环境的云函数中调用CloudPay.unifiedOrder()一直报错:"sub_mch_id与sub_appid不匹配"

2.经检查APPID和商户号已成功绑定且已经授权给小程序云开发,如下:

3.批量代云开发的环境和小程序之间是一种跨账号环境共享的关系,APPID在cloud.getWXContext()中需要拿FROM_APPID字段传值,CloudPay.unifiedOrder()开发文档的请求参数里并没有要求传APPID的相关字段,subOpenid字段的描述里虽然写了“openid和sub_openid可以选传其中之一,如果选择传sub_openid,则必须传sub_appid”,但是请求参数里并没有体现这里的sub_appid该怎么传值,如图:

4.如果把云开发支付理解为一个微信支付服务商,逻辑上sub_mchid传了的话sub_appid和sub_openid是必传的啊,如果CloudPay.unifiedOrder()在这里做了相关处理,是不是没有考虑跨环境共享的情况,导致上述1的报错?

5.强烈建议官方把这个接口的文档完善一下,描述字段和请求参数不匹配,看的人很困惑;openid字段描述里的商户和subOpenid字段描述里的子商户有什么区别,该怎么理解?

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

4 个回答

  • 搬家大表哥
    搬家大表哥
    2021-09-07

    正确的传法是这样的:cloud.cloudPay({ appid: 'xxxxx' }).unifiedOrder({其他参数...}),请注意appid是传在-----------------------cloudPay-------------字段里的,官方尽快更新下文档吧,太TM坑了

    2021-09-07
    有用 3
    回复 3
    • Memory
      Memory
      2021-09-07
      我来反馈下这个问题,不过跨账户环境共享调用,也不会写在支付这里
      2021-09-07
      回复
    • 宋凯2
      宋凯2
      2021-12-13
      巨坑,按照你写的做可以了
      2021-12-13
      回复
    • 生梨奇迹
      生梨奇迹
      2023-03-31
      解决大问题
      2023-03-31
      回复
  • 执迷则悟
    执迷则悟
    2023-01-28

    我这样写还是会报sub_mch_id与sub_appid不匹配,是什么原因?谢谢!

    2023-01-28
    有用
    回复 1
    • 立崖
      立崖
      2023-06-16
      问题解决了么,遇到同样问题,会报sub_mch_id与sub_appid不匹配
      2023-06-16
      回复
  • 老张
    老张
    2021-09-07

    感谢你的尝试。

    批量云开发+CloudPay。一直没有去尝试验证,因为从理论上感觉,不支付这种模式。

    你现在尝试的结果是什么,支持这种模式吗?

    2021-09-07
    有用
    回复 3
    • 搬家大表哥
      搬家大表哥
      2021-09-07
      支付已经跑通了,还没有尝试退款,业务主要还是走服务商模式 ,但支付的很多场景, 比如提现到零钱这种需要开户满90天且有30天连续收入的功能,如果商家已经有商户号满足条件了,就可以直接走云支付
      2021-09-07
      1
      回复
    • 老张
      老张
      2021-09-07回复搬家大表哥
      有用。赞一个。
      2021-09-07
      回复
    • 老张
      老张
      2021-09-07回复搬家大表哥
      CloudPay里有提现到零钱的接口?文档在哪里?
      2021-09-07
      回复
  • Memory
    Memory
    2021-09-07

    这个在指引里面有说明,接口参数说明是同步的微信支付服务商的文档,云开发本身就是一个微信支付服务商,mch_id和appid是云开发的,小程序自身的支付参数分别是填入sub_mchid,sub_appid,sub_openid,

    你授权云开发服务商后,云开发只会为你商户绑定当前APPID,跨账户环境共享时,新小程序appid是没有和这个商户号绑定的,所以会报不匹配,现在这里不支持这样操作调用

    2021-09-07
    有用
    回复 4
    • 搬家大表哥
      搬家大表哥
      2021-09-07
      appID和商户号  还有云开发都是配置正确的   已经通过官方找到正确的请求方法  比较诡异  这样传的:cloud.cloudPay({ appid: 'xxxxx' }).unifiedOrder({其他参数...})
      2021-09-07
      回复
    • Memory
      Memory
      2021-09-07回复搬家大表哥
      这里是吧
      2021-09-07
      1
      回复
    • 搬家大表哥
      搬家大表哥
      2021-09-07回复Memory
      应该是这里  但是这太深了  就算看到了  也整不明白
      2021-09-07
      回复
    • Memory
      Memory
      2021-09-07回复搬家大表哥
      我反馈给产品了,看他们会不会改
      2021-09-07
      1
      回复
登录 后发表内容