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

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

1、哪里开通?

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

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

2、仔细看开发文档

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

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

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

3、常见问题也很重要

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

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

请求单次分账API

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

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

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

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

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

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

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

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

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

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

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

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

微信支付中分账功能 填坑指南V1的更多相关文章

  1. 微信小程序开发填坑指南V1

    近期用了一星期的时间,开发了一个小程序.小程序名称是:小特Jarvis,取自钢铁侠的管家. 后台采用C#编写,WebAPI接口.其实开发时间并不多,小程序本身提供的API,相比公众号的API来说,已经 ...

  2. 微信分账功能与微信支付企业付款相关内容详解(payjs版)

    PAYJS开通微信分账功能以来,有很多同学咨询相关情况.很多同学关心有没有什么办法,可以让自己的商户号快速开通企业付款功能.这里就介绍下微信分账的具体相关内容,可以完美解决问题. 一.什么是微信分账? ...

  3. vue+node.js+webpack开发微信公众号功能填坑——v -for循环

    页面整体框架实现,实现小功能,循环出数据,整体代码是上一篇 vue+node.js+webpack开发微信公众号功能填坑--组件按需引入 修改部门代码 app.vue <yd-flexbox&g ...

  4. 微信支付中的jsapi返回提示信息

    jsapi中跳转到微信支付中触发的方法是js中的getBrandWCPayRequest方法. 改方法中的返回结果msg提示信息如下: err_msg:get_brand_wcpay_request: ...

  5. Kubernetes Fluentd+Elasticsearch+Kibana统一日志管理平台搭建的填坑指南

    在初步完成Kubernetes集群架构的建立后,通过搭建一些监控组件,我们已经能够实现 图形化的监控每个node,pod的状态信息和资源情况 通过scale进行replicateSet的扩展和伸缩 通 ...

  6. Hive 填坑指南

    Hive 填坑指南 目录 Hive 填坑指南 数据表备份 数据表备份 方法1:create table 表名_new as select * from 原表 create table 表名_new a ...

  7. Flutter 开发填坑指南

    引言 第一次在使用Flutter是在Ubuntu机器上,但是因为Android Studio还有Sdk配置问题,flutter doctor总是在这一步报错...最近又在win10上配了一下环境(真香 ...

  8. Vue3+Typescript+Node.js实现微信端公众号H5支付(JSAPI v3)教程--各种填坑

    ----微信支付文档,不得不说,挺乱!(吐槽截止) 功能背景 微信公众号中,点击菜单或者扫码,打开公众号中的H5页面,进行支付. 一.技术栈 前端:Vue:3.0.0,typescript:3.9.3 ...

  9. 坑爹的微信支付v3,其实没有那么坑

    http://www.cnblogs.com/zskbll/p/wxpay.html 研究微信开发一年多了,每个新接口,都会第一时间进行研究.微信支付开放很久,一直没机会接触到支付接口,等了好久终于从 ...

随机推荐

  1. 【Python3爬虫】学习分布式爬虫第一步--Redis分布式爬虫初体验

    一.写在前面 之前写的爬虫都是单机爬虫,还没有尝试过分布式爬虫,这次就是一个分布式爬虫的初体验.所谓分布式爬虫,就是要用多台电脑同时爬取数据,相比于单机爬虫,分布式爬虫的爬取速度更快,也能更好地应对I ...

  2. 清缓存的姿势不对,真的会出生产bug哦

    最近解决了一个生产bug,bug的原因很简单,就是清理缓存的方式不对.本来没啥好说的,但是考虑到我们有时候确实会在一些小问题上栽跟头,最终决定把这个小故事拿出来跟大家分享下. 风起有一天在撸代码,突然 ...

  3. Kafka监控工具汇总

    对于大数据集群来说,监控功能是非常必要的,通过日志判断故障低效,我们需要完整的指标来帮我们管理Kafka集群.本文讨论Kafka的监控以及一些常用的第三方监控工具. 一.Kafka Monitorin ...

  4. shiro 定义realm

    public class UserRealm extends AuthorizingRealm { private UserService userService = new UserServiceI ...

  5. Visual Studio 中 Build、Rebuild 、 Clean 之间的区别是什么?

    今天翻看c-sharpcorner技术网站看到了这样一篇小记,标题为:What Is The Difference Between Build, Rebuild And Clean In Visual ...

  6. 服务注册发现、配置中心集一体的 Spring Cloud Consul

    前面讲了 Eureka 和 Spring Cloud Config,今天介绍一个全能选手 「Consul」.它是 HashiCorp 公司推出,用于提供服务发现和服务配置的工具.用 go 语言开发,具 ...

  7. Python之高阶函数如何理解?

    我们先要了解一下什么是所谓的高阶函数: 看定义:什么是高阶函数? 高阶函数:我们知道一个函数可以作为参数传给另外一个函数,或者一个函数的返回值为另外一个函数(若返回值为该函数本身,则为递归),如果满足 ...

  8. 9406LaTeX公式

    需要注意的是: 1.本文只对第四章排版数学公式进行简单整理 2.本文大量内容直接引自官网,尤其是涉及4.开头的标题,为方便读者查阅对比,就不一一删改和引注,你可以点此访问官网对应内容,也可以点此下载我 ...

  9. 随笔编号-15 重构--改善既有代码的设计--Day01--学习笔记

    最近公司开发的系统在进行大批量数据查询的时候发现响应速度变得让人无法忍受,so 老大安排我进行代码重构的工作,主要目的就是为提高代码的执行效率.减小方法之间的响应时间.降低方法之间的耦合度.= =! ...

  10. Unity进阶:PlayMaker

    版权申明: 本文原创首发于以下网站: 博客园『优梦创客』的空间:https://www.cnblogs.com/raymondking123 优梦创客的官方博客:https://91make.top ...