支付型產品經理——支付系統設計

1.銀行卡支付

支付型產品經理——支付系統設計

先說大家比較熟悉的銀行卡支付,它分為線上支付和線下支付兩種形式。線下支付就是通常說的POS收單,這裡不介紹這個內容。對線上支付,按照卡的類別,分為貸記卡支付,也叫motopay、ePOS,即信用卡支付;和借記卡支付。按照支付形態,又分為認證支付、網銀支付、快捷支付幾種形態。銀行卡網銀支付要求銀行卡必須開通在線支付功能,而快捷支付並不需要開通在線支付功能。主要利用支付驗證要素(卡號、密碼、手機號、CVN2、CVV2等),結合安全認證(例如短信驗證碼),讓持卡人完成互聯網支付。

1.1認證支付

支付型產品經理——支付系統設計

指用戶在綁卡時,將卡信息提供給電商。這樣在支付時,用戶無需再輸入這些信息,由電商在服務器側保留用戶的賬戶信息,比如身份證號,卡號,手機號。在用戶支付時,無需再輸入這些內容,最多就提供個密碼或者校驗碼,就可以完成支付。這基本不會打斷用戶的使用體驗,所以也是電商喜歡的支付方式。但認證支付最讓人詬病的就是安全性。一方面需要向電商暴露個人信息,一旦被竊取,資金就容易被盜走。還有在手機上執行支付,一旦手機丟失,竊取者就可以輕而易舉的使用或者轉移資金。

1.2快捷支付

快捷支付和認證支付類似,不同點在於綁卡之後,有些銀行接口會返回token,後續使用token來作為支付憑證,無需提供卡號信息,這樣電商也不需要本地保留卡號了。目前主要是銀聯有提供token接口。

1.3網銀支付

相對來說,網銀支付要安全很多。網銀支付是由銀聯或者銀行提供支付界面,用戶必須在頁面上輸入卡號,密碼等驗證信息才可以執行支付。大部分銀行還要求用戶使用U盾或者其它安全硬件。但安全和易用永遠是個矛盾。網銀使用會打斷用戶體驗,增加用戶使用難度。對使用硬件加密的支付,不可能天天帶著U盤跑。另外網銀主要用在web端,在手機端,嵌入網銀頁面,還是比較難看的。

2.支付流程

支付型產品經理——支付系統設計

走一個具體的例子看看吧。比如用戶在電商系統中買了200塊錢的東西,然後通過浦發銀行卡做結算,用的是快捷支付。這個過程是:

· 用戶在交易界面上,提交訂單到交易系統中; 交易系統確認訂單無誤後,請求支付系統進行結算。這是在交易系統做的,後面工作就進入支付系統。

· 用戶被引導到收銀臺頁面,讓用戶確認交易金額,選擇支付方式,調用支付系統接口。

· 支付系統接收到支付請求,驗證請求的各個字段是否有問題,確認無誤後,調用支付網關執行支付。

· 支付網關請求浦發銀行的快捷支付接口執行支付。

· 支付網關接收到支付結果報文後,對結果報文做解析,獲取結果,並將結果告知交易系統。這可以通過URL或者RPC調用來實現。

· 商城系統收到支付結果後,開始執行後續操作。如果是支付成功,則開始準備出庫。這一步在交易系統中處理,這裡不做介紹。

支付型產品經理——支付系統設計

網銀支付,和快捷相比,就在第4步,插入一個步驟,將用戶導航到網銀頁面輸入支付信息,後續步驟是一樣的。在資金流上也是相同的。 而在第五步獲取返回結果上,一般銀行就直接同步返回,銀聯是分為同步和異步返回。同步告知操作成功或者失敗,異步告知扣款成功或者失敗。同步操作和異步操作都需要調用方提供一個回調的URL地址,銀聯會將參數附加在這個地址上。通過解析這些參數可以得到執行結果。異步操作一般有2-3秒的延遲,取決於網絡,以及該交易處理的複雜度。

3.資金流

支付型產品經理——支付系統設計

上一節說的是支付的信息流,那資金流應該是怎麼走的? 在第三步,會觸發資金流。資金從用戶個人賬戶上轉移到電商公司的賬戶。當然,銀行也不是活雷鋒,這一筆交易是要收手續費的。資金是實時到賬的,手續費一般是按月結算。有按交易筆數計費的,但大部分還是按照交易金額來收費。

同行快捷支付是比較簡單的場景,讓我們來逐步增加難度。如果支付系統沒有對接浦發銀行,那對浦發卡,就得走其它支付方式:銀聯或者第三方支付。

先說銀聯快捷。銀聯提供的多種接入方式,常說的快捷支付,在銀聯文檔中叫商戶側開通token接口。通過這個接口,可以實現同行和跨行資金結算。不管收款行是浦發還是其它行,都可以完成結算。對本地和用戶來說,體驗是一樣的。而在銀聯側,後臺資金流處理卻不一樣。瞭解這個資金流,有助於在異常情況下,瞭解資金到底跑到哪裡了。

如果收款行也是浦發銀行,銀聯發報文給浦發,浦發使用內部系統完成兩個賬戶間的轉帳,即時完成。

如果收款行是他行,比如工行。銀聯發指令給浦發和工行,分別完成各自賬戶上資金餘額的增減,對個人和電商來說,這筆資金算是落地了。但實際資金流並不是立即發生。銀聯會在半夜做清結算後處理這筆資金。這個過程就是金融機構之間的清結算了,一般不需要關注。

如果使用的是第三方支付,對用戶來說,處理的流程和銀聯一樣。但資金流會不一樣。 第三方支付在浦發和工行一般都會有落地的託管資金。 發生交易後,一般來說不會產生跨行資金流動。用戶在浦發行的錢會被結算到第三方支付在浦發行的託管賬戶,而在工行的錢,會由第三方支付在工行的賬戶打到客戶賬戶上。 這就降低了跨行資金流動成本。

目前國內主要銀行都提供快捷和直聯的接口。對電商來說,要對接哪些銀行是個需要考慮的問題。

4.銀聯Token支付

一般來說,大部分銀行都提供直聯和網銀接口,但不需要直接對接所有銀行。銀聯和第三方支付也提供直聯接口,可以直接對接國內主要銀行。也不是所有銀行都被銀聯支持,這和銀聯簽約的接口有關,需要在對接時諮詢銀聯。從我們使用情況看, 浦發借記卡、郵儲銀行卡是不支持的。 另外 交行、平安(含原深發)、上海銀行、浦發、北京銀行,上述銀行卡需通過 這個地址 開通銀聯在線支付業務。

5.對接銀行

支付型產品經理——支付系統設計

大部分銀行提供的銀行卡支付接口,借記卡支付和貸記卡支付是不一樣的。但也有幾個好心的銀行,可以用一套接口同時開通借記卡和貸記卡。點名贊一下這些銀行: 宇宙第一大行工商銀行和建設銀行。其他同學對接中如果也發現借記卡和貸記卡用一個接口的,也請及時告知。 作為國內最保守的軟件團隊,和銀行對接時務必做好足夠的準備。在商務談判完成、拿到銀行的接口文檔後,需要考慮兩個問題:專線問題、加密問題。

6.卡bin

對接銀行有一個逃避不了的問題,就是如何根據判斷髮卡行?這就需要卡bin。 BIN號即銀行標識代碼的英文縮寫。BIN由6位數字表示,出現在卡號的前6位,由國際標準化組織(ISO)分配給各從事跨行轉接交換的銀行卡組織。銀行卡的卡號是標識髮卡機構和持卡人信息的號碼,由以下三部分組成:髮卡行標識代碼(BIN號)、髮卡行自定義位、校驗碼。

目前,國內的 銀行卡 按照數字打頭的不同分別歸屬於不同的銀行卡組織,其中以BIN號“4”字打頭的銀行卡屬於VISA卡組織,以“5”字打頭的屬於MASTERCARD卡組織,以“9”字和“62”、“60”打頭的屬於中國銀聯,而“62”、“60”打頭的銀聯卡是符合國際標準的銀聯標準卡 ,可以在國外使用,這也是中國銀聯近幾年來主要發行的銀行卡片。 大部分銀行卡號前6位即可確定髮卡行和卡類型,但也有非標卡需要6-10位才可以判斷出來。需要維護一個卡bin庫。附件是一個比較完整的卡bin庫, csv格式的。

髮卡機構

BIN範圍

卡號長度

驗證方式

美國運通國際股份有限公司(America Express)

340000~349999 370000~379999

15位

LUHN

銀聯

620000~629999

16~19位

LUHN

大萊信用卡有限公司(Diners Club)

300000~305999

300000~305999

309000~309999

306000~369999

380000~399999

14位

LUHN

大萊信用卡有限公司(美國加拿大)

540000~559999

16位

LUHN

日本JCB

352800~358999

16位

LUHN

萬事達卡(Master Card)

510000~559999

16位

LUHN

維薩卡(Visa)

400000~499999

13,16,19位

LUHN

上述LUHN驗證方式,是一種驗證銀行卡號是否合法的算法,其具體步驟為:

1.從卡號最後一位數字開始,逆向將奇數位(1、3、5…)相加。

2.從卡號最後一位數字開始,逆向將偶數位數字先乘以2,如果乘積結果為兩位數,則將其減去9,再求和。

3.將奇數位總和加上偶數位總和,結果應該可以被10整除。

在加卡的時候先做LUHN,可以排出一部分輸錯卡號的情況。但要注意,國內有些銀行的卡號不符合上述各種規定。

7.短信和身份驗證

支付型產品經理——支付系統設計

一般綁卡操作第五步需要銀行下發短信驗證碼。 短信驗證的接口,不同銀行還不一樣。有些銀行是短信和身份驗證一起做了;有些銀行是可以配置身份驗證是否同時發短信。還有些比較奇葩的機構,比如某聯,接口中讓你傳身份信息,但實際上沒傳也是可以的,也不驗證身份信息到底對不對。這在對接渠道時需要特別注意。

此類接口一般包含如下內容:

· 版本號:當前接口的版本號;

· 編碼方式: 默認都是UTF-8,指傳輸的內容的編碼方式;

· 簽名和簽名方法: 生成報文的簽名。 不是所有的字段都需要放到簽名中,文檔中會說明哪些字段需要簽名;

· 簽名算法:生成簽名的算法,RSA, RSA128, MD5等。

· 商戶代碼:在渠道側註冊的商戶號。

· 商戶訂單號:即發送給渠道的訂單號;

· 發送時間:該請求送出的時間。

· 賬號和賬號類型: 銀行卡、存摺、IC卡等支持的賬號類型以及對應的賬號;

· 卡的加密信息:如信用卡的CVN2,有效期等。

· 開戶行信息:開戶行所在地以及名稱;大部分是不需要的。

· 身份證件類型和身份證號: 可以用於實名驗證的證件,指 身份證、軍官證、護照、回鄉證、臺胞證、警官證、士兵證等。不同銀行可以支持的證件類型不一樣,這也不是問題。大部分就是身份證了。

· 姓名:真實姓名,必須和身份證一致;

· 手機號:在所在銀行註冊的手機號。

系統會返回上述數據的驗證結果。如果驗證通過,則會發短信。但這不是所有的渠道都是這樣。哪些字段會參與驗證、需不需要發短信,需要注意看接口文檔。

8.綁卡接口

銀聯直接綁卡和銀行綁卡類似,銀聯直聯綁卡和銀行綁卡類似,但是得注意驗證接口,僅驗證卡號和姓名,不驗證身份證號和手機號。這導致第5步無法正常進行。銀聯只有到第六步執行綁卡時才做身份驗證。 所以在處理上,還需要做一些調整,來確保和銀行的流程的一致。 一種處理方法是,對銀聯,在第五步就開始調用銀聯接口執行綁卡操作,但是在本地標記為預綁卡狀態;商戶側發送短信驗證碼,驗證通過後,才將狀態設置為綁卡成功。

銀聯網銀綁卡處理起來比較麻煩。用戶在電商頁面上輸入卡號,然後被導航到銀聯頁面上去完成綁卡操作,成功後,銀聯返回一個token作為簽約號,用於支持後續操作。這問題就來了,用戶可以在銀聯頁面上綁定一個別人的卡,而電商側是無法知道這個卡的情況的。所以這種方式儘量不要用。

9.實名認證

綁卡操作有個不錯的副產品,就是實名認證。常說的二要素,三要素,四要素認證,可以通過這個操作完成。 二要素指姓名和身份證號,三要素加上銀行卡號,四要素則加上手機號。看起來,似乎銀行都應該支持四要素驗證,但大部分銀行接口僅支持三要素,畢竟手機號還是非常容易變。 當然,實名認證,也就是二要素認證,是應用最多的認證了。國內唯一的庫是在公安部這,由NCIIC負責對外提供接口。可以提供如下功能:

簡項核查:返回“一致”“不一致”“庫中無此號”

返照核查:返回“一致+網紋照片”“不一致”“庫中無此號”

人像核查:返回“同一人”“不同人”“庫中無此號”

官方接口收費是 5元/條。 市面上主要的第三方服務提供商有國政通(簡項、返照)、諾證通(簡項)、IDface(三接口)等,收費簡項核查:0.5~2.0元、返照核查為0.8~2.1元、 人像核查2.0~8.0元不等。一般都和訪問量有關,量大從優。 當然,這裡也要注意,涉密人員是沒法查到相關信息的。 性能上, XX通一般在200ms內即可返回結果,普通商用應該是沒問題的。 有些公司還會額外提供四要素接口,以XX通為例,它號稱支持大部分銀行卡的四要素認證。但是實現上有點兒懵,居然是實時請求銀行的接口,這就導致接口延遲非常高,1秒以上的佔大部分,甚至10秒以上的都不少見,基本無法商用。這種情況下,還不如直接上銀聯呢。

支付型產品經理——支付系統設計

關注我,成為一個真正的產品人!

需要注意的問題:

1. 驗證短信由誰來發送。

2. 對接的是總行還是分行接口;

3. 是否支持重複綁卡,重複綁卡返回的Token是一樣的還是不同的?

4. 身份驗證是三要素還是四要素驗證

5. Token和賬號是否相同。


分享到:


相關文章: