微信小程序服務商模式支付巨坑解決!


今日有個在同一個小程序支付 款項需要付到不同的銀行卡里去???

於是找了下微信小程序支付文檔,只有個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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM