单个APP接入多个微信支付宝支付的一种解决方案
背景
最近在對接微信支付寶支付的時候出現(xiàn)了一個需求,由于我們公司在不同的地區(qū)有分公司,為了實(shí)現(xiàn)財務(wù)對賬方便,不同公司的客戶需要打款到相應(yīng)的公司的賬戶,也就是要實(shí)現(xiàn)接口分賬,一聽到這個需求,我一臉懵逼,之前做商城的時候,一個APP的收款不管是微信還是支付寶,都是只打到一個賬戶里面去,現(xiàn)在需要實(shí)現(xiàn)不管對于微信支付還是支付寶支付都需要有多個支付賬戶,實(shí)現(xiàn)接口分賬,當(dāng)時總經(jīng)理提出這個需求,Android跟ios歷史性地異口同聲地說,這個做不到,并且從技術(shù)的角度在那兒跟總經(jīng)理彈了一會兒琴,畢竟還是太年輕了,總經(jīng)理說,這個肯定是可以實(shí)現(xiàn)的,因?yàn)樵谒劾?#xff0c;沒有什么是實(shí)現(xiàn)不了的,然后我們就回去搬磚了,然后思考這個問題的解決方案。
分析問題
- 需要實(shí)現(xiàn)的技術(shù)點(diǎn)
用戶支付的時候,根據(jù)用戶的uid,來把錢達(dá)到相應(yīng)的賬戶里面去,判斷身份很簡單,問題主要在于如何使得一個APP接入多個微信或者支付寶賬戶,下面來逐個分析一下微信跟支付寶的接入方式
- 微信
對接過微信支付的應(yīng)該很熟悉上面的這些東西,首先你得去微信開放平臺注冊一個賬號,一年300塊錢,然后再在這個賬號里面開通微信支付功能,所以一開始我們嘗試的就是不停地去騷擾微信客服,問問能不能通過一個微信支付賬號進(jìn)行接口分賬,每次那邊的回答都是不可以,然后又問一個APP能不能申請多個微信支付賬號,那邊回答也說是不可以,臥槽,基本上到這個份上,我們已經(jīng)是放棄了,因?yàn)槿绻粋€APP不能申請多個微信支付賬號,那么微信基本上是做不了接口分賬了,當(dāng)時IOS了解到的微信支付情況是這個樣子的,下面看看支付寶的過程。
- 支付寶
支付接入的時候其實(shí)也比較郁悶,苦逼之處在于支付寶以前是支持接口分賬的,也就是只需要注冊一個支付寶主賬戶,然后在注冊幾個子賬戶就可以進(jìn)行接口分賬,只是我們的APP生不逢時,支付寶關(guān)閉了這個服務(wù),而且那邊的客服也是說一個APP只能注冊一個支付寶賬戶
發(fā)現(xiàn)希望
基本上到這里,我們已經(jīng)打算放棄了,因?yàn)楫吘垢覀冏畛醯脑O(shè)想是一樣的,但是還是有點(diǎn)不甘心,因?yàn)樵诟Ц秾毜募夹g(shù)客服,注意是技術(shù)客服,不是普通的人工客服,當(dāng)時跟他說了一下我們的使用場景,他說可以通過注冊多個支付寶賬號,其實(shí)這一點(diǎn)跟我之前的設(shè)想是一樣的,因?yàn)锳ndroid在介入支付寶的時候不需要應(yīng)用的簽名,可以通過服務(wù)端動態(tài)下發(fā)簽名,從而調(diào)起支付寶支付,我突然間好像明白了什么,因?yàn)橹暗乃悸纷卟煌ǖ脑蛟谟诳偸窍胪ㄟ^一個APP來注冊多個支付寶賬號,沒有想到用多個支付寶賬戶來實(shí)線曲線救國。
支付寶實(shí)現(xiàn)接口分賬
- 注冊支付寶賬戶
支付寶支付跟微信支付最大的區(qū)別在于Android客戶端的接入,需要應(yīng)用的簽名,所以如果用兩個APP注冊的話勢必會導(dǎo)致簽名不一致,支付寶的注冊只需要填寫一個應(yīng)用名稱就好了,注意應(yīng)用名稱不能一樣,否則會失敗。
基本上到這里,支付寶實(shí)現(xiàn)接口分賬的鏈路打通了,測試也完全通過,吼吼
微信實(shí)現(xiàn)接口分賬
對于微信來說,一個APP對應(yīng)唯一的APPID,注冊信息大致如下:
微信支付應(yīng)用名稱 微信支付應(yīng)用信息受到支付寶的啟發(fā),能不能注冊在微信開放平臺注冊兩個賬號,然后申請兩個微信支付賬號,只不過這兩個賬號除了名稱不一樣以外,其余地全都一樣,不過雖然這么想還是有點(diǎn)虛,因?yàn)镮OS在跟客服溝通的時候客服只是說同一個APP只能申請一個微信支付賬號,但是我們反問客服微信的判斷規(guī)則是什么的時候,微信那邊卻說不知道,如果是名稱,那么就能夠通過審核,如果是應(yīng)用的包名或者bundleid那基本上微信接入原生的APP支付徹底走不通了。
當(dāng)時是分了兩步走,總經(jīng)理說微信支付必須得接入,萬一不行只能接入微信H5支付,因?yàn)镠5的話就可以實(shí)現(xiàn)動態(tài)下發(fā)了。所以當(dāng)時H5支付跟原生支付的賬號同時在申請,服務(wù)端那邊也是在做兩手的準(zhǔn)備,比較苦逼。最后萬幸的是,微信是通過應(yīng)用名稱來判斷APP的唯一性,很幸運(yùn),可以完全放棄H5支付了,微信支付接口分賬也打通了。
小結(jié)
這篇文章沒有涉及到任何技術(shù),但是這次實(shí)現(xiàn)一個APP實(shí)現(xiàn)多個接口分賬,確實(shí)讓我感觸很多,很多時候,我們在做一件事情的時候,會調(diào)用我們以往的經(jīng)驗(yàn),有好也有壞,之前做的支付都是單個微信支付寶,按照之前的經(jīng)驗(yàn),在嘗試之前就做出了錯誤的判斷,很多時候還是需要敢于拆掉思維里的墻,去嘗試一些新東西,包括在實(shí)現(xiàn)一些功能的時候,要勇于嘗試一些新的思維,新的解決方式,尤其是在用已有的知識實(shí)現(xiàn)不了或者實(shí)現(xiàn)起來比較痛苦的時候,畢竟改變是痛苦的,不改變只會更加痛苦。
《新程序員》:云原生和全面數(shù)字化實(shí)踐50位技術(shù)專家共同創(chuàng)作,文字、視頻、音頻交互閱讀總結(jié)
以上是生活随笔為你收集整理的单个APP接入多个微信支付宝支付的一种解决方案的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Zsh vs. Bash不完全对比解析,
- 下一篇: 图形参数