? ? ? ?對于未知,一般來說我們有兩種心理:恐懼,或者崇拜。
? ? ? ?恐懼如小時候,我去河里游泳,對于望不見底,黑漆漆、涼颼颼的河水,心中充滿了各種可怕的想法。
? ? ? ?崇拜如長大后,對于瑞士銀行的軟件系統,覺得一定是最頂尖掰的程序猿開發的,直到我發現了我同事的秘密(關于這個梗,咱們改天當面聊)。
? ? ? ?所以如果你跟當年的我一樣,也處于初學者或者剛進入開發不久,那么你對于銀行、轉賬、支付、第三方等等概念一定也處在崇拜或者恐懼階段。而其實只要打破這種未知,你就會發現:原來不過如此。
? ? ? ?我的從業生涯中,現在還記得的,大概接觸過如下幾種支付通道:銀聯、工商銀行、農業銀行、通聯、支付寶、微信、paypal、apple支付等。到現在,還老有人時不時找我做支付接口,比如就在昨天,有人還Q我做農行支付~~。說真的,我都不知道大家從哪里搞到我QQ號的。
? ? ? ?你沒做過,就會覺得可怕,各種高端神奇、調試不出來。你如果做過,就會發現,這特么的不就是調用個Http服務嗎:
? ? ? ?并且,如果你做過了,你就會發現,各家銀行和第三方支付的技術支持、開發能力也是各種良莠不分、殘次不齊。尤其是一些小行,那個技術能力簡直令人發指。我們在做一家小行的企業支付的時候,甚至達到了要教對方的開發怎么去做接口的程度……。還有,不要覺得覺得拿他們的offer很難,我們有一個學員以外包的形式進駐到某第三方支付公司進行開發,未到多久,對方就想將其挖為正式員工。
1.?破除恐懼
? ? ? ?要破除恐懼,我們先拿將支付做到極致的支付寶來入手。
? ? ? ?如果你想增加恐懼,請隔壁去試微信支付,那個調試可不是一般的復雜哦。
? ? ? ?好了,如果你的公司要將平臺接入支付寶,那么首先,就得以公司的形式去支付寶的網站申請資質。不要管我問哪里是申請的地方,這么多年來,支付寶不僅支付接口本身,連開發者網站都不知道改版了多少次。那么到底申請資質這件事情在一個公司里面是誰來做?一般來說,是技術和財務一起配合來做。為什么吶,因為你去讓財務申請,財務會說,我完全看不懂啊,但是你作為技術直接去申請,由于驗證公司資料、公帳等一系列操作,你沒有財務的支持,也是不行的。除非你像當初的我一樣,一人身兼董事長、總經理、財務總監、技術總監、市場總監、保潔總監于一職,公司隨身用皮包裝著走。
? ? ? ?申請下來后,對方會給你一堆配置參數或電子證書等。NB如支付寶,一定是讓你登錄網站后臺自己查看或者下載證書。不NB如某些小行,居然會讓你加入一個QQ群,或者給你一個QQ號,由相關的人員點對點給你發過來……
? ? ? ?有了基本的參數,一般來說,對方還會提供DEMO,那么接下來,我們就把DEMO中的參數替換為剛才獲得的參數,如果有證書的,則把證書部署到你自己的服務器上,DEMO就能運行起來了。
? ? ? ?再說一遍,能力有大小,對方寫DEMO以及撰寫API文檔的能力也不見得比你更好,所以你一次能調試成功的機會就得看你運氣了。
2.?支付寶即時到賬
? ? ? ?來看看最簡單的支付寶的DEMO。這是支付寶網站下載回來的demo。可以看到,有不同的語言的版本:
? ? ? ?我們將它引入到eclipse中,長這個樣子:
? ? ? ?這個demo中,主要有上圖所示的幾個文件,下文會挑主要的講。
3.?修改參數
? ? ? ?在參數的修改中,主要是上圖紅框內的五個地方,
? ? ? ?Partner:公司的身份,支付寶分配給你的,相當于銀行賬號;
? ? ? ?兩個Key:一個是公鑰一個是私鑰,有些支付通道是以電子證書的形式給我們的,可以是文件。也可以是一個U盤,但是里面存的就是公鑰和私鑰。有同學可能注意到,我單獨給私鑰打碼了,而沒有給公鑰打碼。這個以后我們說到加解密的時候再說哦,總之,保護好你的私鑰就是了,這個私密性等同于你的銀行賬號密碼。
? ? ? ?兩個url:一個叫做return-url,是什么意思呢?就是支付完成后(一會看實操),支付寶得把支付結果返回給咱們,他怎么返回給我們呢?我們也得給支付寶一個網址,這樣它就能給這個網址發消息了不是。
? ? ? ?但是,這個notify_url是個什么鬼?我們想象一下這個場景:
? ? ? ?為了阻止上面情況發生,我們就得提供另外一個URL,這個URL用來在支付寶發送消息給return-url失敗的時候,會在接下來的時間內,不間斷的定時發送補充消息到這個地址,把這個壞掉的邏輯補回來。
4.?操作演示
? ? ? ?來,不管三七二十一,先來波操作,首先,運行index.jsp,如下圖:
? ? ? ?這個頁面沒什么稀奇的,無非就是訂單號和商品和金額。
? ? ? ?然后點擊發送,關鍵的一刻產生了,我們就得把上面的顯然可見的信息,和隱藏在表單后的參數信息一起包裝到httprequest中發送到支付寶的網站去。看一下,大致有什么:
? ? ? ?發送出去后,就是下面的界面。熟悉不,剁手吧。
? ? ? ?在這個界面中,支付寶就會讓你打開手機APP,讓你掃一掃支付,或者讓你登錄支付寶網站支付。如果是銀行,一般就會讓你打開網銀,進行支付。這些操作,都是在他們的平臺中進行的。在這一步,跟咱們的網站無關(你可以看下圖的瀏覽器地址)。
? ? ? ?支付完畢,提醒如下:
? ? ? ?緊接著,再次跳轉提醒
? ? ? ?緊接著,支付寶再次跳轉回我們的網站,看到沒,return_url.jsp,就是我們配置的返回地址。到此,完成支付。謝謝大家,請先轉100W過來。
5.?企業級支付中其它問題
? ? ? ?即便解決了上文中同步操作的異常問題,還是有可能有其它一些意外情況的發生,比如你的數據庫崩潰了,導致你保存的收付款情況和支付寶(或銀行)那邊的首付款情況不一致。故,一般來說,除了類似上面的接口,支付平臺還會提供一些對賬接口供你調用,進行一個階段內的批量對賬。
? ? ? ?那這些對賬接口怎么調用?當然是跟上面一樣了。其返回的response中的數據,可能就是一個階段內的所有賬單信息,然后,我們作為程序員,就要去寫程序跟自己保存的數據進行一致性的校驗。
6.?認識一下銀行的支付通道
看過了支付寶的支付通道,我們再來看一個農行的支付通道。注意,其原理是完完全全一致的。
在這里,我們僅僅放置一段發送代碼感受一下吧,同時,這段代碼是用PHP寫的,從現在起,不要說,你只會Java編程了:-)
? ? ? ?還有,農行的支付通道是使用文件證書來存儲公鑰和私鑰的,如下
7.?支付通道在互聯網借貸平臺中的應用
擁有了以上的知識,是不是就意味著支付與轉賬在所有的互聯網應用中你就能放心應付了呢?非也,在電子商務中,以上知識可能差不多了,但是在互聯網借貸平臺(俗稱P2P)中,還不夠。
我們都知道,P2P平臺最大的一個風險就是平臺跑路。這些年的新聞可謂是層出不窮。我修正一下,5年前的P2P平臺,你利用我上文描述中的知識就能做一個P2P了,但是現在,不能了。
這個不能,不是指技術上不能夠,而是政策上不能夠。
在上文的即時轉賬中,用戶轉給公司的錢,公司瞬間就可以提走。如果這種模式存在于P2P平臺中,那么風險就很大,因為公司隨時可以轉走投資者的錢而跑路。
? ? ? ?用幾句話來描述P2P公司的業務模式:
? ? ? ?注意,上面的過程中哪些環節能出現風險呢?讓我們再把上面的描述復述一遍,同時加上備注,你只看備注就可以了:
? ? ? ?為了解決這樣的問題,金融監管機構就出現了。金融監管機構要求所有的P2P平臺:
? ? ? ?1:不能有自己的資金池;
? ? ? ?2:在銀行開立的用于收付款的賬號是專門的虛擬賬號,不能直接打到自己的公司賬號,這些錢,只能發起申請直接打給投資者和借款人;
? ? ? ?3:所有的借款人和投資者在平臺上的賬號對應在銀行那里也得有虛擬賬號,所有平臺上的投資和借錢行為發生在這些受監控的虛擬賬號內,實際要提現必須由本人發起申請。
? ? ? ?以上,講完了。
? ? ? ?通過上文的了解,現在的你,是要去做一個電商網站呢,還是一個P2P平臺?回歸一句話,記住:萬事萬物兼HTTP服務……
==================================================================
以下是廣告時間:最課程(http://zuikc.com)正在招收Java就業班學員,如果你想了解或參與的這樣的項目,請聯系我們哦。