微信小程序服务商模式支付巨坑解决!
Posted chzhcenter
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了微信小程序服务商模式支付巨坑解决!相关的知识,希望对你有一定的参考价值。
今日有个在同一个小程序支付 款项需要付到不同的银行卡里去???
于是找了下微信小程序支付文档,只有个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
反正我觉得挺坑爹的这文档
与大家共勉吧~
————————————————
版权声明:本文为CSDN博主「Charli?」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_18881987/java/article/details/94428628
以上是关于微信小程序服务商模式支付巨坑解决!的主要内容,如果未能解决你的问题,请参考以下文章