小Q的博客

  • 首页
  • net编程
    • 产品和框架
    • 开发实例
    • 经验技巧
    • 开源组件
  • wp独立站
  • 自媒体
  • 日记本
  • 工具箱
每个程序员,都应该有一个自己的博客站
  1. 首页
  2. net编程
  3. 开发实例
  4. 正文

c#实现微信支付中的分账功能,从开通到部署

2022年9月6日 579点热度 1人点赞 0条评论

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

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

目录

  • 1、哪里开通?
  • 2、看开发文档
  • 3、常见问题也很重要
  • 4、请求单次分账API
    • 4.1下载证书
    • 4.2、留意这个参数
    • 4.3、又有新问题
      • 4.3.1、微信订单号容易找到
      • 4.3.2、这些参数在小程序里是拿不到的

1、哪里开通?

这个功能在微信支付平台-产品中心-支付扩展工具。但是当你打开找到这个页面后,会发现你的支付平台并没有这个功能?!
是的,这是第一个坑。咨询了腾讯客服,回复说:这个功能目前是内测阶段,并没有全部开通,没有请耐心等待。所以,这个功能不是所有人都有。据妹纸说:如果你的流水每天正常、稳定,就有机会开通这个功能。

2、看开发文档

腾讯的开发文档还是比较全面和规范的,要认真看,可能其中某一句话就是钥匙。比如这个文档
https://pay.weixin.qq.com/wiki/doc/api/allocation.php?chapter=26_3
要在以前的支付接口额外增加一个参数才可以,不看文档,估计调一天都不知道哪里有问题。

3、常见问题也很重要

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

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

4、请求单次分账API

4.1下载证书

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

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

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

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

4.2、留意这个参数

SignType加密类型:HMAC-SHA256,但支付的API中一直都是MD5。当时没留意,调用一直报SystemError错误。。。后来是在常见问题里找到了灵感。换成这个加密就行了。
而且,虽然说是HMAC-SHA256加密,但每个语言加密方式可能都不一样。这里可以找微信支付的官方的SDK。在SDK中找到了这个加密的代码,好了,合并进自己代码后,发现还是报同样的错误。有没有头大?

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

4.3、又有新问题

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

4.3.1、微信订单号容易找到

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

4.3.2、这些参数在小程序里是拿不到的

只能通过支付成功的回调地址才能读取到,就是下面这个地址。要用起来。在这个页面里,实现分账功能就行了

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

提供部分代码,加博主微信:xiyang1011即可领取

标签: c#实现 分账功能 微信支付
最后更新:2022年9月23日

小Q

80后中年不油腻大叔,喜欢编写代码、打羽毛球、做木制玩具。目前定居浙江杭州

打赏 点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

COPYRIGHT © 2022 小Q的博客. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

浙ICP备2022019157号-2