公司是做電商的,近期開(kāi)發(fā)了一款小程序,準(zhǔn)備線上線下同步銷(xiāo)售玩具。這里就涉及到微信支付的功能,網(wǎng)上有很多教程,官方也有文檔和Demo,因此微信支付還是比較容易實(shí)現(xiàn)的。
由于我們公司是和其他公司合作運(yùn)營(yíng)的,這就涉及到收入分配問(wèn)題。比較傳統(tǒng)的分配模式是月結(jié)、周結(jié)、日結(jié)這種,這些都無(wú)法實(shí)時(shí)到賬。后來(lái)發(fā)現(xiàn)微信支付平臺(tái)里,有個(gè)分賬功能,正好解決這個(gè)問(wèn)題。今天重點(diǎn)聊的這個(gè)功能,目前網(wǎng)絡(luò)上資源很少,就寫(xiě)了一篇教程,希望能夠幫助到其他開(kāi)發(fā)員。
1、哪里開(kāi)通?
這個(gè)功能在微信支付平臺(tái)-產(chǎn)品中心-支付擴(kuò)展工具。但是當(dāng)你打開(kāi)找到這個(gè)頁(yè)面后,會(huì)發(fā)現(xiàn)你的支付平臺(tái)并沒(méi)有這個(gè)功能?!
是的,這是第一個(gè)坑。咨詢了騰訊客服,回復(fù)說(shuō):這個(gè)功能目前是內(nèi)測(cè)階段,并沒(méi)有全部開(kāi)通,沒(méi)有請(qǐng)耐心等待。所以,這個(gè)功能不是所有人都有。據(jù)妹紙說(shuō):如果你的流水每天正常、穩(wěn)定,就有機(jī)會(huì)開(kāi)通這個(gè)功能。
2、仔細(xì)看開(kāi)發(fā)文檔
騰訊的開(kāi)發(fā)文檔還是比較全面和規(guī)范的,要認(rèn)真看,可能其中某一句話就是鑰匙。比如這個(gè)文檔
https://pay.weixin.qq.com/wiki/doc/api/allocation.php?chapter=26_3
<https://pay.weixin.qq.com/wiki/doc/api/allocation.php?chapter=26_3>
要在以前的支付接口額外增加一個(gè)參數(shù)才可以,不看文檔,估計(jì)調(diào)一天都不知道哪里有問(wèn)題。
3、常見(jiàn)問(wèn)題也很重要
這點(diǎn)似乎以前不怎么重視,但分賬的常見(jiàn)問(wèn)題,還是總結(jié)得很全面的。特別是紅框里的那個(gè)地址,都是開(kāi)發(fā)員經(jīng)常犯的錯(cuò)誤,過(guò)一遍,有個(gè)印象。?
下面開(kāi)始代碼開(kāi)發(fā)了,小板凳搬好。
請(qǐng)求單次分賬API
注意紅框里的文字,需要證書(shū)。這是什么東東?之前很少見(jiàn)到的。簡(jiǎn)單說(shuō),這是一種安全機(jī)制。因?yàn)樯婕暗藉X(qián),所以安全系數(shù)都很高。
證書(shū)是要下載并安裝的,這個(gè)證書(shū)就是指下圖里的這個(gè)證書(shū)。
需要下載證書(shū)制作工具,配合使用,才能下載證書(shū)。證書(shū)以文件形式下載,就是下面這幾個(gè)文件,Windows系統(tǒng)只用第1個(gè)文件即可,雙擊安裝。安裝過(guò)程中,需要提供密碼,這個(gè)密碼就是你的商戶號(hào)。一路默認(rèn)就能安裝成功。
證書(shū)安裝好,我們?cè)诖a中也要引用它。HttpPost的時(shí)候要把證書(shū)信息傳進(jìn)去才可以,不然一直報(bào)錯(cuò),而且你根本看不出是沒(méi)有證書(shū)的問(wèn)題。按照下面的代碼調(diào)用即可
留意這個(gè)API的其中一個(gè)參數(shù):SignType加密類(lèi)型:HMAC-SHA256,但支付的API中一直都是MD5。當(dāng)時(shí)沒(méi)留意,調(diào)用一直報(bào)SystemError錯(cuò)誤。。。后來(lái)是在常見(jiàn)問(wèn)題里找到了靈感。換成這個(gè)加密就行了。?
而且,雖然說(shuō)是HMAC-SHA256加密,但每個(gè)語(yǔ)言加密方式可能都不一樣。這里可以找微信支付的官方的SDK。在SDK中找到了這個(gè)加密的代碼,好了,合并進(jìn)自己代碼后,發(fā)現(xiàn)還是報(bào)同樣的錯(cuò)誤。有沒(méi)有頭大?
這里要吐槽下官方的這個(gè)SDK,不知是故意留個(gè)Bug,還是沒(méi)注意??傊?,它提供的代碼是有問(wèn)題的,就是編碼類(lèi)型,它用的是Default,只要改成UTF-8就可以了。這個(gè)應(yīng)該是整個(gè)分賬功能最深的一個(gè)坑了。官文文檔都不能完全相信。。。
差不多經(jīng)過(guò)上面這些步驟,分賬功能就沒(méi)啥問(wèn)題了。
但是,又有一個(gè)新的問(wèn)題,就是小程序里調(diào)用微信支付,已經(jīng)內(nèi)置wx.requestPayment方法,支付成功后只返回一個(gè)字符串,其他啥都沒(méi)有。。??煞仲~的API要求傳入微信訂單號(hào)和商戶分賬單號(hào),這里有幾個(gè)坑的
第1個(gè):微信訂單號(hào)容易找到,就是微信支付成功后,支付平臺(tái)分配的一個(gè)訂單號(hào)。在交易查詢中可以拿到。那另一個(gè)商戶分賬單號(hào)是什么東東?查了N多資料,也問(wèn)過(guò)客服,最后給出答案:這個(gè)單號(hào)是可以自己分配的。。。直接傳微信訂單號(hào)也可以(測(cè)試通過(guò))。有沒(méi)有欲哭無(wú)淚的感覺(jué)?看文檔的描述,神乎其神的樣子。
第2個(gè):這些參數(shù)在小程序里是拿不到的,只能通過(guò)支付成功的回調(diào)地址才能讀取到,就是下面這個(gè)地址。要用起來(lái)。在這個(gè)頁(yè)面里,實(shí)現(xiàn)分賬功能就行了
經(jīng)過(guò)上面這些填坑,分賬功能基本沒(méi)啥問(wèn)題了。如果再有問(wèn)題,就仔細(xì)看開(kāi)發(fā)文檔和常見(jiàn)問(wèn)題,基本都能解決。
熱門(mén)工具 換一換
