评论

云开发“分账功能”踩坑记

以下是我在使用云开发“分账功能”时踩到的一些坑。

云开发的分账功能还在公测中,需要去申请开通。如果等了几天还没开通,可以在社区提问,会有官方人员来跟进。

我等了 5 天才开通。

开始之前,首先要搞清楚一个概念:云开发就是一个服务商,所以开发者不需要注册成为支付服务商,就可以使用服务商分账。

以下是我开发过程中遇到的一些坑。可能你会遇到其他坑,记得把调用接口的结果打印出来,看看报的是什么错。

1、文档不全,需要传 profit_sharing 或者 profitSharing

云开发统一下单接口的文档缺少 profit_sharing 参数,需要结合原支付接口文档来看,在分账对接步骤里也有说明。

如果没传这个参数,会报错:“非分账订单不支持分账”。

经过测试发现,这个参数是必需的,可以是 profit_sharing,也可以是 profitSharing,两者都兼容。由于其他参数都是驼峰写法,所以我用了 profitSharing .

2、不需要每次分账都“添加分账接收方”

添加分账接收方,只需要调一次接口即可,添加成功后,不需要每次分账都添加接收方。

有个小提醒,receiver 这个参数不是 JSON,而是JSON 序列化后的字符串,记得用 JSON.stringify 处理。序列化前是对象,不是数组,如果有多个接收方就调用多次接口。

(注意区分一下,在分账接口中,分账接收方的参数是 receivers,不是 receiver。不管单次分账还是多次分账,receivers 参数都是序列化后的字符串,序列化前是对象数组,不是对象)

这里还有个 bug,根据通知指引,我并没有找到这个入口:“商户平台 - 交易中心 - 管理分账接收方”。后面发了个提问帖,找到了这个暗门。登录商户平台,然后访问这个地址:https://pay.weixin.qq.com/index.php/xphp/ccmn_sharing/split_relation_manage

这可能也不是 bug,我猜估计是担心商户会有意或者无意的删除分账接收方。

3、sub_appid 是必填

文档有误,这个参数是必填。

4、PERSONAL_OPENID 和 PERSONAL_SUB_OPENID

receivers 的 type 参数,PERSONAL_OPENID 和 PERSONAL_SUB_OPENID,刚开始会有点迷糊。我填的是 PERSONAL_SUB_OPENID,account 填小程序数据库里的用户 openid .

5、支付成功后,需要延时 1 分钟处理

支付成功后如果立即处理分账会报错:“订单处理中,暂时无法分账,请稍后再试”。

分账产品介绍的文档是这么写:“在交易完成后,准实时(建议1分钟后)或30天内调分账接口。”

我单独用了一个云函数来处理分账,setTimeout 设置 59 秒后调用分账接口。

在开发者工具里,进入该云函数的配置设置,把超时时间设置为 60 秒,否则会返回超时。

支付成功后调用该云函数。

2021-9-23 更新:

不能用 setTimeout 处理分账,这样云函数会一直占用内存,超成资源浪费(而且是巨大的浪费)。应改成定时触发,例如每小时触发一次,把已支付的并且支付时间已经过了一分钟的订单找出来,调用分账接口。

最后一次编辑于  2021-09-23  
点赞 7
收藏
评论

4 个评论

  • MU大有
    MU大有
    发表于移动端
    2021-07-14
    也许是第一个吃螃蟹的人
    2021-07-14
    赞同 1
    回复 3
    • 朱高
      朱高
      2021-07-14
      不是第一个,但一定是吃了螃蟹后详情分享螃蟹味道的人
      2021-07-14
      2
      回复
    • 牛远明
      牛远明
      2021-09-17回复朱高
      我现在分账报错是超出比例,我申请了100%分账,也通过了,是直连分账。是申请错了吗?我现在怎么办?是要申请成为服务商吗?急,谢谢
      2021-09-17
      回复
    • 朱高
      朱高
      2021-09-21回复牛远明
      分账和你是不是服务商没有关系。按你的描述,是不是这个商户关联了多个服务商?分账对应的服务商是云开发服务商,检查一下看是不是设置到别的服务商去了。
      2021-09-21
      回复
  • Jeffrey
    Jeffrey
    2022-05-30

    奇怪,没有任何报错 就是不分账, 想问一下out_order_no 这个商户分账号 是商家自己定的吗

    2022-05-30
    赞同
    回复 1
    • Jeffrey
      Jeffrey
      2022-05-30
      搞定了, 分账号是自己写的
      2022-05-30
      回复
  • Leung。
    Leung。
    2022-03-21

    3、sub_appid 是必填,请问这里指的是添加分账接收方sub_appid必填是吗

    2022-03-21
    赞同
    回复 1
    • 朱高
      朱高
      2022-03-21
      这个参数名叫 sub_appid,但其实就是小程序的 appId
      2022-03-21
      回复
  • Memory
    Memory
    2021-07-15

    你说的这些基本上都属于没有认真看文档~

    2021-07-15
    赞同
    回复 4
    • 牛远明
      牛远明
      2021-09-17
      是在不好意思,又要打扰您了。我现在分账报错是超出比例,我申请了100%分账,也通过了,是直连分账。是申请错了吗?我现在怎么办?是要申请成为服务商吗?急,谢谢
      2021-09-17
      回复
    • 牛远明
      牛远明
      2021-09-17回复Memory
      我也发了
      2021-09-17
      回复
    • 动感光波
      动感光波
      2021-11-24
      大佬,使用了云开发分账。商户接入还是按照标准流程进件吧?
      2021-11-24
      回复
    • Memory
      Memory
      2021-11-24回复动感光波
      是的
      2021-11-24
      1
      回复
登录 后发表内容