微信支付如何做分账?微信分账功能讨论

时间:2024-03-10 07:54:58

微信支付中分账功能 填坑指南V1

01什么是微信分账?

微信分账的推出主要有三个方面的原因:

①市场方面:

在现有环境下,电商平台或者多级分销、加盟代理模式,订单参与方较多,需要用户统一付款后由平台方统一收款,再根据订单参与方统一分账。

②政策方面:

市场需求与政策规范有所冲突,监管机构加大了对大商户+二清模式的打击力度。

③微信支付方面:

在上述两个情况下,微信支付将自身的清结算能力赋能给平台商户。

微信分账即微信推出的交易资金再分配产品,收款后按照平台的业务规则,无需中转直接进行资金分配;主要用于服务商帮助特约商户完成订单收单后的资金分配。

前提概念

分账方:即分账发起方,是商品或服务的提供方,这里指特约商户。

分账接收方:接收分账资金的商户或个人,如:特约商户上游的供应方、合作的商户、商户的员工、商户的用户等。

微信分账的步骤

①分账方通过微信收款的订单,由微信扣除手续费后,冻结在分账方的账户(分账方不可见)。

②分账方根据具体的业务情况和场景,通过微信分账接口,将订单的信息上传微信(分账接收方、分账金额等)。

③微信将相应资金,分配到各接收方账户中(微信商户账户或微信零钱)。

 
 

资金流向说明:

假设用户支付 1000 元:

①微信扣除 6 元手续费;

②微信将 994 元冻结至特约商户账户中(此时金额不可见);

③商户上传分账信息,为两个分账商户分别分账 50 元与 40 元;

④微信分别为两个分账接受方分账 50 元与 40 元;

⑤微信将剩余的 904 元结算至特约商户的账户中。

微信分账的优点

合规:在微信体系内,由微信负责将交易资金分别结算给收款方,平台避免了违规的风险;

合理纳税:各收款方根据真实收入合理纳税;

开通周期短:与微信企业付款不同的是,企业无需三个月的等待期,可以通过微信服务商(例如 Ping++)开通,快速上线。

02微信分账适用场景

酒店预订:

用户缴纳订房费用后,资金可先冻结在酒店的商户号中,待用户确认到店消费后,服务商可根据情况,将资金分账给 OTA 平台、服务商或房东。

 
 

订餐外卖:

用户在订餐平台的某个餐饮商户下单完成支付后,用户支付的订餐资金先冻结在该餐饮商户的商户号中;待用户确认收货后,服务商掉按指令分账的接口,将订餐资金进行分配,例如分账给外卖员、订餐平台抽佣,剩余资金解冻给餐饮商户。

 
 

停车场:

用户在停车场缴纳停车费用后,资金先冻结在停车场的商户号中,服务商根据与停车证之间的协议,将停车费分配给其他微信支付商户,例如智能停车系统服务商。

 
 

03微信分账的特点

分账接收方

支持 4 种方式创建接收方

公司:微信商户号(不限定是同义个服务商下的特约商户)

个人:微信号、分账方公众号 OpenID、服务商公众号 OpenID

支付方式

仅限于标记了的订单参与分账

支持微信所有支付方式

 
 

分账方式

基于订单进行分账

先冻结、再分账

最长冻结期限为 30 天

单笔订单分账方最多支持 50 个

可分账金额为扣除手续费后的金额

为了保证特约商户的资金安全,特约商户可以设定允许服务商分配资金的最大比例

 
 
 
 
 
 

报表

按照分账方、分账接收方可提供独立报表

支付报表:

分账方作为特约商户,按照支付、退款交易提供支付报表;

信息:订单号、支付金额、手续费、付款用户、购买商品等。

分账报表:

分账方、分账接收方,按照每笔支付订单的分账金额,提供分账报表;

信息:支付订单号、分账方、分账接收方、分账金额、分账时间等。

微信分账与微信企业付款的区别

 

 

 

由于我们公司是和其他公司合作运营的,这就涉及到收入分配问题。比较传统的分配模式是月结、周结、日结这种,这些都无法实时到账。后来发现微信支付平台里,有个分账功能,正好解决这个问题。今天重点聊的这个功能,目前网络上资源很少,就写了一篇教程,希望能够帮助到其他开发员。

image

1、哪里开通?

这个功能在微信支付平台-产品中心-支付扩展工具。但是当你打开找到这个页面后,会发现你的支付平台并没有这个功能?!

是的,这是第一个坑。咨询了腾讯客服,回复说:这个功能目前是内测阶段,并没有全部开通,没有请耐心等待。所以,这个功能不是所有人都有。据妹纸说:如果你的流水每天正常、稳定,就有机会开通这个功能。

image

2、仔细看开发文档

腾讯的开发文档还是比较全面和规范的,要认真看,可能其中某一句话就是钥匙。比如这个文档

https://pay.weixin.qq.com/wiki/doc/api/allocation.php?chapter=26_3

要在以前的支付接口额外增加一个参数才可以,不看文档,估计调一天都不知道哪里有问题。

3、常见问题也很重要

这点似乎以前不怎么重视,但分账的常见问题,还是总结得很全面的。特别是红框里的那个地址,都是开发员经常犯的错误,过一遍,有个印象。 image

下面开始代码开发了,小板凳搬好。

请求单次分账API

注意红框里的文字,需要证书。这是什么东东?之前很少见到的。简单说,这是一种安全机制。因为涉及到钱,所以安全系数都很高。

image

证书是要下载并安装的,这个证书就是指下图里的这个证书。

image

需要下载证书制作工具,配合使用,才能下载证书。证书以文件形式下载,就是下面这几个文件,Windows系统只用第1个文件即可,双击安装。安装过程中,需要提供密码,这个密码就是你的商户号。一路默认就能安装成功。

image

证书安装好,我们在代码中也要引用它。HttpPost的时候要把证书信息传进去才可以,不然一直报错,而且你根本看不出是没有证书的问题。按照下面的代码调用即可

image

留意这个API的其中一个参数:SignType加密类型:HMAC-SHA256,但支付的API中一直都是MD5。当时没留意,调用一直报SystemError错误。。。后来是在常见问题里找到了灵感。换成这个加密就行了。

而且,虽然说是HMAC-SHA256加密,但每个语言加密方式可能都不一样。这里可以找微信支付的官方的SDK。在SDK中找到了这个加密的代码,好了,合并进自己代码后,发现还是报同样的错误。有没有头大?

image

这里要吐槽下官方的这个SDK,不知是故意留个Bug,还是没注意。总之,它提供的代码是有问题的,就是编码类型,它用的是Default,只要改成UTF-8就可以了。这个应该是整个分账功能最深的一个坑了。官文文档都不能完全相信。。。

差不多经过上面这些步骤,分账功能就没啥问题了。

但是,又有一个新的问题,就是小程序里调用微信支付,已经内置wx.requestPayment方法,支付成功后只返回一个字符串,其他啥都没有。。。可分账的API要求传入微信订单号和商户分账单号,这里有几个坑的

image.png

第1个:微信订单号容易找到,就是微信支付成功后,支付平台分配的一个订单号。在交易查询中可以拿到。那另一个商户分账单号是什么东东?查了N多资料,也问过客服,最后给出答案:这个单号是可以自己分配的。。。直接传微信订单号也可以(测试通过)。有没有欲哭无泪的感觉?看文档的描述,神乎其神的样子。

image

第2个:这些参数在小程序里是拿不到的,只能通过支付成功的回调地址才能读取到,就是下面这个地址。要用起来。在这个页面里,实现分账功能就行了

image

经过上面这些填坑,分账功能基本没啥问题了。如果再有问题,就仔细看开发文档和常见问题,基本都能解决。

 

近日一位朋友咨询我关于微信如何实现“商家对客户”派发红包和现金的功能(分账),于是做了初步的调研:

首先想到如果微信平台能提供给客户返现的接口就好了

         微信工作平台支付接口出去二维码支付包括两种方式:

       http://wenku.baidu.com/link?url=RAZwsUI6GREC1LsYf-                 bpx35PUe7FYdlX8f6wMUVAj4isJ4fKr9KDYZhjLJTs1kv5jEMw1C7mO06UiDX77OL8zRrb5wBuPpxYYlJXU2f9yee

     JS模式、原声模式两种模式都是实现“客户对商家”支付功能,在使用支付功能之前,微信给商家创建了财富通账号,在客户付款成功后,钱是直接打入商家的财付     通账户客户在微信方进行支付后通知商家,支付权是在微信方,显然通过微信公布出来的支付接口是不能实现分账的功能

然后是否可能通过获取客户的账户信息包括财付通号,支付宝号,银行账号等实现

     微信提供了获取用户信息的接口:

  http://mp.weixin.qq.com/wiki/index.php?title=%E8%8E%B7%E5%8F%96%E7%94%A8%E6%88%B7%E5%9F%BA%E6%9C%AC%E4%BF%A1%E6%81%AF

 

通过接口,我们仅能得到用户的昵称,性能,所在地,没有账号的信息,我们也就不能反向的给用户分账,显然也不能实现分账的功能

 最后是否让客户自己填写信息实现分账功能

   财付通分账功能实现,参见文档中分账功能

 http://www.doc88.com/p-518675887466.html

结论

通过初步调研发现在没有微信端提供反向支付功能之前,我们只能间接地方式实现微信方的分账功能。