今日有个在同一个小程序支付 款项需要付到不同的银行卡里去???

于是找了下微信小程序支付文档,只有个requestPayment方法

emmm 去看看小程序后台吧

ok 有个微信支付  但是只能绑定一个商户号。。。死路

遂找到一位踩过坑的大佬的文章https://www.jianshu.com/p/209001043837

试试。
首先

注册服务号!划重点 一定是服务号。别的不行。然后就是例行操蛋的微信认证。300元。

认证完找到微信支付----》服务商申请

其中:无资金结算功能,商户交易资金直接结算至商户的账户; 

这不就是我们要的功能吗?!开搞

 

然后又是例行操蛋申请过程 繁复无比。ok不要紧 ,能实现需求就是好猫?

然后开始配置服务商

1、API密钥  这个很重要,支付的签名验证需要它 这个是在账户中心--》API安全--》API密钥

 

修改好即可 生成密钥可以去这里---》http://tool.chinaz.com/tools/md5.aspx

2、申请服务商的特约商户  即申请需要支付到对应对公账户的商户号(这里说明下,注册服务商需要对公账户,这个对公账户已经注册为服务商了 就不能再成为特约商户,需要注意。即总店不能作为分店再次注册)

申请过程略

申请完后找到 服务商功能--》特约商户管理--》配置

(1)修改公众号支付域名 即自己api域名

 

(2)支付回调地址修改 注意 这里是地址 不是域名

 

(3)特约商户APPID配置 即绑定需要支付的功能小程序

 

至此 服务商配置完成。OK 开始激(fei)动(chang)人(e)心的代码环节。

首先的打开坑爹的微信服务商统一下单文档

ok 头有点晕  咱们先不去深入理解他 提取几个需要的参数(keng)就好

1、appid  注意⚠️ 这里是用服务号的appid 不是小程序的

2、mch_id 这里是用服务商的id 在我的账号一栏可以找到

 

3、sub_appid  这里才是小程序的appid

4、sub_mch_id 这里对应特约商户号id 付款到对应商户的凭证就是这个 在注册特约商户的时候邮件里可以找到 这里建议配置到数据库动态传递

5、nonce_str 随机字符串  没什么好说的

6、body 自行看文档

7、out_trade_no 订单号

8、total_fee 自行看文档

9、trade_type 自行看文档

10、sub_openid 此参数是巨坑 需要在发起支付前在小程序内调起wx.login 方法获得code 然后后台通过置换 获得用户openid,与之前登陆时获取保存的openid不是同一个 需要注意

11、spbill_create_ip 自行看文档

12、notify_url 自行看文档

13、sign 此参数为签名参数 需要将需要传递的参数进行排序并且进行md5签名,需要注意的是需添加参数key 即之前修改的服务商api密钥(见代码)

 

 好了 参数分析完毕 在后台调用统一下单方法 不出意外是成功的 代码见这里(此代码为java且是本人整理的 如有错误请指正)

返回结果居然是xml格式的  emmm

ok 获取到我们此行的重要参数 prepay_id  

同时还获取到了一堆!@#¥%

 

不管 直接回传小程序

至此 统一下单预支付完成,具体实现还得结合自身业务需求

 

--------------分割线-------------------

 

小程序开始调起微信支付 也就是我们最先看的微信小程序支付文档 

惊(ju)喜(keng)来了

参数分析

1、timeStamp 没什么好说 注意是精确到秒的时间戳 毫秒貌似不行

2、nonceStr 这个参数是统一支付回传回来  使用即可 建议存数据库

3、package 格式如下:"prepay_id=xxxxxxx" 此参数也使用统一支付回传回来的 建议存数据库

4、signType 填md5  没什么好说

5、paySign 此参数巨坑 ,请注意

首先进行此参数拼接 先看文档--https://pay.weixin.qq.com/wiki/doc/api/wxa/wxa_api.php?chapter=7_7&index=3

其中的巨坑就是这两个参数

(1)appId 此参数不是回传的appid啊 使用小程序的appid!!

(2)key 此参数也不要使用回传的 是用之前在服务商里修改api密钥!

 

哎呀吗 可把我坑惨了 往死了报 商户签名错误  我!@#¥%& 坑爹文档 记住一点不要使用回传里的参数即可

可以考虑在回传之前就在后台拼接好并且签名好此参数 直接将签名后的参数传回小程序此方式

然后进行md5签名 MD5.hexMD5(sign).toUpperCase()   (sign为之前拼接的参数)

ok 坑排完了 调起支付  扣钱 美滋滋

写此文档是因为发现网上都没有对应的完整的解决步骤。。。或许是太简单了??emmm

反正我觉得挺坑爹的这文档 

与大家共勉吧~
————————————————
版权声明:本文为****博主「Charli๑」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.****.net/qq_18881987/java/article/details/94428628