1. 程式人生 > >微信支付中分賬功能 填坑指南V1

微信支付中分賬功能 填坑指南V1

公司是做電商的,近期開發了一款小程式,準備線上線下同步銷售玩具。這裡就涉及到微信支付的功能,網上有很多教程,官方也有文件和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個:這些引數在小程式裡是拿不到的,只能通過支付成功的回撥地址才能讀取到,就是下面這個地址。要用起來。在這個頁面裡,實現分賬功能就行了

經過上面這些填坑,分賬功能基本沒啥問題了。如果再有問題,就仔細看開發文件和常見問題,基本都能解決