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

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

image

因为咱们公司是和其余公司合做运营的,这就涉及到收入分配问题。比较传统的分配模式是月结、周结、日结这种,这些都没法实时到帐。后来发现微信支付平台里,有个分帐功能,正好解决这个问题。今天重点聊的这个功能,目前网络上资源不多,就写了一篇教程,但愿可以帮助到其余开发员。小程序

image

一、哪里开通?api

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

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

image

二、仔细看开发文档网络

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

https://pay.weixin.qq.com/wiki/doc/api/allocation.php?chapter=26_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

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