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

公司是做电商的,近期开发了一款小程序,准备线上线下同步销售玩具。这里就涉及到微信支付的功能,网上有很多教程,官方也有文档和Demo,因此微信支付还是比较容易实现的。

image

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

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

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

原文地址:https://www.cnblogs.com/xiyang1011/p/11561654.html