最近在對接微信支付寶支付的時候出現了一個需求,因爲咱們公司在不一樣的地區有分公司,爲了實現財務對帳方便,不一樣公司的客戶須要打款到相應的公司的帳戶,也就是要實現接口分帳,一聽到這個需求,我一臉懵逼,以前作商城的時候,一個APP的收款不論是微信仍是支付寶,都是隻打到一個帳戶裏面去,如今須要實現無論對於微信支付仍是支付寶支付都須要有多個支付帳戶,實現接口分帳,當時總經理提出這個需求,Android跟ios歷史性地異口同聲地說,這個作不到,而且從技術的角度在那兒跟總經理彈了一下子琴,畢竟仍是太年輕了,總經理說,這個確定是能夠實現的,由於在他眼裏,沒有什麼是實現不了的,而後咱們就回去搬磚了,而後思考這個問題的解決方案。ios
用戶支付的時候,根據用戶的uid,來把錢達到相應的帳戶裏面去,判斷身份很簡單,問題主要在於如何使得一個APP接入多個微信或者支付寶帳戶,下面來逐個分析一下微信跟支付寶的接入方式微信
對接過微信支付的應該很熟悉上面的這些東西,首先你得去微信開放平臺註冊一個帳號,一年300塊錢,而後再在這個帳號裏面開通微信支付功能,因此一開始咱們嘗試的就是不停地去騷擾微信客服,問問能不能經過一個微信支付帳號進行接口分帳,每次那邊的回答都是不能夠,而後又問一個APP能不能申請多個微信支付帳號,那邊回答也說是不能夠,臥槽,基本上到這個份上,咱們已是放棄了,由於若是一個APP不能申請多個微信支付帳號,那麼微信基本上是作不了接口分帳了,當時IOS瞭解到的微信支付狀況是這個樣子的,下面看看支付寶的過程。測試
支付接入的時候其實也比較鬱悶,苦逼之處在於支付寶之前是支持接口分帳的,也就是隻須要註冊一個支付寶主帳戶,而後在註冊幾個子帳戶就能夠進行接口分帳,只是咱們的APP生不逢時,支付寶關閉了這個服務,並且那邊的客服也是說一個APP只能註冊一個支付寶帳戶微信支付
基本上到這裏,咱們已經打算放棄了,由於畢竟跟咱們最初的設想是同樣的,可是仍是有點不甘心,由於在跟支付寶的技術客服,注意是技術客服,不是普通的人工客服,當時跟他說了一下咱們的使用場景,他說能夠經過註冊多個支付寶帳號,其實這一點跟我以前的設想是同樣的,由於Android在介入支付寶的時候不須要應用的簽名,能夠經過服務端動態下發簽名,從而調起支付寶支付,我忽然間好像明白了什麼,由於以前的思路走不通的緣由在於老是想經過一個APP來註冊多個支付寶帳號,沒有想到用多個支付寶帳戶來實線曲線救國。ui
支付寶支付跟微信支付最大的區別在於Android客戶端的接入,須要應用的簽名,因此若是用兩個APP註冊的話勢必會致使簽名不一致,支付寶的註冊只須要填寫一個應用名稱就行了,注意應用名稱不能同樣,不然會失敗。3d
基本上到這裏,支付寶實現接口分帳的鏈路打通了,測試也徹底經過,吼吼cdn
對於微信來講,一個APP對應惟一的APPID,註冊信息大體以下:blog
受到支付寶的啓發,能不能註冊在微信開放平臺註冊兩個帳號,而後申請兩個微信支付帳號,只不過這兩個帳號除了名稱不同之外,其他地全都同樣,不過雖然這麼想仍是有點虛,由於IOS在跟客服溝通的時候客服只是說同一個APP只能申請一個微信支付帳號,可是咱們反問客服微信的判斷規則是什麼的時候,微信那邊卻說不知道,若是是名稱,那麼就可以經過審覈,若是是應用的包名或者bundleid那基本上微信接入原生的APP支付完全走不通了。接口
當時是分了兩步走,總經理說微信支付必須得接入,萬一不行只能接入微信H5支付,由於H5的話就能夠實現動態下發了。因此當時H5支付跟原生支付的帳號同時在申請,服務端那邊也是在作兩手的準備,比較苦逼。最後萬幸的是,微信是經過應用名稱來判斷APP的惟一性,很幸運,能夠徹底放棄H5支付了,微信支付接口分帳也打通了。支付寶
這篇文章沒有涉及到任何技術,可是此次實現一個APP實現多個接口分帳,確實讓我感觸不少,不少時候,咱們在作一件事情的時候,會調用咱們以往的經驗,有好也有壞,以前作的支付都是單個微信支付寶,按照以前的經驗,在嘗試以前就作出了錯誤的判斷,不少時候仍是須要勇於拆掉思惟裏的牆,去嘗試一些新東西,包括在實現一些功能的時候,要敢於嘗試一些新的思惟,新的解決方式,尤爲是在用已有的知識實現不了或者實現起來比較痛苦的時候,畢竟改變是痛苦的,不改變只會更加痛苦。