• fastadmi微信支付 | 服务商分账 | easywechat|踩坑记录


    后台用的fastadmin,它自己带了一套easywechat 4.x的扩展,基于这个基础上做的分账。

    主要是记录思路和踩坑。

    用的不是v3的文档哈,链接在这里

    其实我踩的坑大部分是配置问题,什么是主商户,什么是子商户,各种appid,mch_id又是啥啥啥。搞清楚了配置就比较顺当了

    用我们项目需求来举例,我们的需求做多商户商城平台,邀请子商户入驻,收取订单服务费;

    所以主商户=我们平台=服务商

    需要理解的是,主商户是不收钱的,它只是作为一个发起分账的平台

    在easywechat里面,主商户的配置如下:

    平台子商户==特约商户:

    在文档里面的标记是:sub_mch_id(子商户的商户号),sub_appid(子商户绑定的微信公众账号id)

    我们按照以下流程来做分账的功能:

    1.添加分账方

    因为文档没有给查询分账方list的接口,我选择在添加成功后直接写到数据库里面

    添加分账方的参数如下:

     

     这里的坑点是文档中对sub_appid参数的必填属性设置为否,其实是误导理解的,当分账方的类型为子商户的appid得到的openid的时候,是需要传这个参数的。

    所以如果你的请求返回异常的话,先检查那四个参数(主商户和子商户分别的appid和商户号)是否正确传入

    其他的文档就写得比较清楚了。

    但是有一点坑的是:只要你参数传正确了,重复添加分账方它也会返回success,删除一个不存在的分账方,它也会返回success

    2.请求单次分账

    踩过了第一步的坑之后,这里已经进入正常状态了,坑点是如果分账方数据有不合规范的话,请求结果会告诉你:分账接收方类型不合法,但是其实我是amount的参数没有传分,传了带小数点的元。

    3.关于子商户和服务商的关系的理解

    服务商相当于一个中间人,普通商户要委托服务商做事,就要成为服务商的特约商户,授权给服务商,服务商可以为特约商户添加平台appid作为支付媒介,服务商本体不收钱,就作为一个中间平台,在多商户商城的场景中,商户绑定自己的商户号,统一下单接口传参数表示允许分账,在订单完全结束后发起分账,发起分账的时候,sub_mch_id==商家自己的商户号;

    在easywechat4.x中使用,实例化参数(服务商的各项信息)不变,sub_mch_id跟随商家变化而变化,个人粗俗理解为:服务商要为哪个商户做事,sub_mch_openid就填写哪个商户号

    4.关于退款

    众所周知退款是需要证书的,我的多商户支付,退款讲道理也是各自的证书去退款,但是居然报错了 ,给我说证书验证失败(在这之前是签名错误,经过排查后将签名的key改为主商户的支付密钥),然后将证书改为主商户证书,验证成功,成功退款

    (所以我根本不需要子商户自己上传证书啊卧槽...)

    5.关于商户后台配置

    有一个服务商JSAPI支付要开通,并让子商户授权

     这个没开通的话会报错:服务商商户号未开通该产品权限,子商户没授权的话会报错:特约商户未授权该产品

    如果想要开通这个,必须要先开通服务商本身的jsapi支付,然后随意填写一个回调地址,然后这个服务商JSAPI支付的设置才会显示出来!!!!

  • 相关阅读:
    Oracle-增加字段
    Oracle数据库将varchar类型的字段改为Clob类型
    将Oracle数据库字段长度进行修改
    http请求util
    读取excel文件后,将一行数据封装成一个对象,多行返回一个map对象即可
    使用tushare 库查阅交易日历
    python winsound模块
    python可视化:matplotlib系列
    期货、股指期权、ETF期权
    股指期货
  • 原文地址:https://www.cnblogs.com/gushengyan/p/15951721.html
Copyright © 2020-2023  润新知