支付系統設計:綁卡、簽約和身份驗證(四)

20 評論 72271 瀏覽 381 收藏 15 分鐘

在上一篇 支付系統之銀行卡支付中,挖了個坑,就是關于綁卡的坑。 在用戶使用銀行卡做支付之前,首先需要完成綁卡的操作。怎么實現綁卡,怎么驗證用戶綁的是自己的而不是隔壁老王的卡,這就是本期的重點。

為什么要求用戶綁卡?這和快捷支付有關。參見上一篇文章的分析,綁卡是將用戶卡信息提供給電商,以后電商就用這個信息去銀行完成支付。綁卡實際上是一個授權,讓用戶允許商家自動從他的賬戶上扣除資金。所以綁卡也叫簽約,用戶和銀行,商家的三方簽訂的支付合約。 但我們知道,綁卡對用戶和商戶來說都存在巨大風險。

如果說用戶綁卡是圖省事,那商戶為什么要做這個事?首先當然是提升用戶體驗了,讓用戶花錢更容易。其次,提升支付成功率。使用網銀支付成功率在20%左右,銀聯直聯成功率一般在50%左右,銀行卡直聯可以提升到70%左右。這是相當可觀的數據。所以,當你看到綁卡送洗衣粉之類做法時,不需要擔心商家會不會賠本。

怎么綁卡?我們知道對接銀行有兩種途徑,直接對接銀行接口和通過銀聯來間接對接。這兩種情況下綁卡處理也不同。

綁卡場景

直觀的,電商網站會在用戶后臺提供一個綁卡的入口,讓用戶直接綁卡。以支付寶綁卡流程為例,我們可以體驗下:

alipay-1

這里有如下要點:

  • 只能綁自己的卡,這主要從安全角度考慮。
  • 需要用戶在銀行側預留的手機號進行短信驗證。但不是所有銀行都需要。這個時候,為了統一處理,可以考慮自己發驗證短信。

對這個入口不要指望太多,更多的用戶是在支付中綁卡。也就是提交訂單后,發現沒有銀行卡了,就開始綁卡。 和純綁卡流程不同的是,最后一步,綁卡成功后,一般都同時完成支付。有些渠道會提供綁卡并支付的接口,減少交互次數。

綁卡流程

先介紹比較簡單的銀聯直聯綁卡。為了保證卡的安全,綁卡有這些前置需求:

  1. 用戶必須已經綁定了手機號。該手機號用于修改支付密碼;
  2. 用戶需設置了支付密碼。支付密碼不同于登錄密碼。

針對用戶不同狀態,綁卡流程上有區別。當然,綁卡是安全操作,要求用戶必須登錄到系統中。為了避免和服務器端的交互被劫持,所有操作必須在安全鏈接中進行,即使用https。當用戶開始綁卡時,執行如下流程:

  1. 檢查用戶是否有手機號。沒有則進入設置手機號流程。
  2. 檢查用戶是否設置支付密碼。如果已經設置,則需要用戶輸入密碼。確認后開始綁卡。否則,也是先進去綁卡后設置密碼。
  3. 用戶輸入卡號,系統根據卡號判斷卡的發卡行,并顯示給用戶。有些實現,如微信支付,會提供掃卡識碼功能。
  4. 用戶輸入銀行預留手機。對于沒有綁過卡的用戶,需要用戶提供真實姓名和身份證號。對于信用卡,還需要輸入cv碼和有效期。這一步,卡的信息都收集全了。
  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格式的。

短信和身份驗證

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

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

  • 版本號:當前接口的版本號;
  • 編碼方式: 默認都是UTF-8,指傳輸的內容的編碼方式;
  • 簽名和簽名方法: 生成報文的簽名。 不是所有的字段都需要放到簽名中,文檔中會說明哪些字段需要簽名;
  • 簽名算法:生成簽名的算法,RSA, RSA128, MD5等。
  • 商戶代碼:在渠道側注冊的商戶號。
  • 商戶訂單號:即發送給渠道的訂單號;
  • 發送時間:該請求送出的時間。
  • 賬號和賬號類型: 銀行卡、存折、IC卡等支持的賬號類型以及對應的賬號;
  • 卡的加密信息:如信用卡的CVN2,有效期等。
  • 開戶行信息:開戶行所在地以及名稱;大部分是不需要的。
  • 身份證件類型和身份證號: 可以用于實名驗證的證件,指 身份證、軍官證、護照、回鄉證、臺胞證、警官證、士兵證等。不同銀行可以支持的證件類型不一樣,這也不是問題。大部分就是身份證了。
  • 姓名:真實姓名,必須和身份證一致;
  • 手機號:在所在銀行注冊的手機號。

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

綁卡接口

綁卡接口和發短信接口類似,還需要將用戶的卡號,身份證等信息傳遞過去。在綁卡成功后,會返回一個簽約號。這個簽約號是后續調用支付,解約等接口所必須的。 這里有個問題,已經綁卡的用戶,調用綁卡簽約接口再綁一次,會出現什么情況?這個和銀行實現有關。 大部分銀行,如農業、浦發、建行等,對綁卡簽約接口調用,會首先驗證身份信息,如果驗證不通過,則不執行后續操作。驗證通過后,再檢查這個卡在該商戶下是否已經綁過了, 如果沒有綁過,則執行綁卡,否則會提示卡已經綁定過了,不能重復簽約。 但工行的實現不一樣,他是首先驗證這個卡是不是已經綁過了,如果已經綁卡,則不繼續驗證身份信息。 總之,銀行都不支持重復綁卡。

銀聯綁卡

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

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

實名認證

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

  • 簡項核查:返回“一致”“不一致”“庫中無此號”
  • 返照核查:返回“一致+網紋照片”“不一致”“庫中無此號”
  • 人像核查:返回“同一人”“不同人”“庫中無此號”

官方接口收費是 5元/條。 市面上主要的第三方服務提供商有國政通(簡項、返照)、諾證通(簡項)、IDface(三接口)等,收費簡項核查:0.5~2.0元、返照核查為0.8~2.1元、 人像核查2.0~8.0元不等。一般都和訪問量有關,量大從優。

當然,這里也要注意,涉密人員是沒法查到相關信息的。 性能上, XX通一般在200ms內即可返回結果,普通商用應該是沒問題的。 有些公司還會額外提供四要素接口,以XX通為例,它號稱支持大部分銀行卡的四要素認證。但是實現上有點兒懵,居然是實時請求銀行的接口,這就導致接口延遲非常高,1秒以上的占大部分,甚至10秒以上的都不少見,基本無法商用。這種情況下,還不如直接上銀聯。

相關閱讀

支付系統設計:支付系統的賬戶模型(一)

支付系統設計:對賬處理(二)

支付系統設計:銀行卡支付(三)

 

作者:鳳凰牌老熊,程序員 & 架構師,來自中科大的本科,研究生在軟件所學習。先后在中科輔龍、三星(中國)研究院和國內一些大型的互聯網公司呆過。在中科輔龍公司負責電子政務內容管理系統建設,負責研發龍馭系列產品的研發,這款產品最終實施到2000多個電子政務網站上,期間也參與了一些支付反洗錢以及支付系統的建設。之后在三星中國研究院,負責自然語言處理(NLP)以及智能家居相關項目。智能家居項目在2014CES消費電子展上作為三星重點項目推介。2014年開始加入愛奇藝公司,負責數據倉庫和支付系統的建設。

本文由@鳳凰牌老熊(微信公眾號:shamphone) 原創發布于人人都是產品經理 。未經許可,禁止轉載。

更多精彩內容,請關注人人都是產品經理微信公眾號或下載App
評論
評論請登錄
  1. 這個實名認證是按條收費的,那怎么防止別人惡意刷次數造成成本增加呢?

    來自浙江 回復
    1. 設置驗證的間隔時間是一種方法

      回復
  2. 商戶端

    回復
  3. 贊~~不過分享的Bin庫打開亂碼了呢,能否重新分享一下呢~感謝~

    來自北京 回復
  4. 大拿 ??

    來自北京 回復
  5. 熊老師 感覺內容很好但是很多地方寫的度不太明白,主要表現在 1.綁卡的分類 沒看出來怎么分的 所以讀完了還是沒明白 到底有幾種綁卡 ,2. 每種綁卡的過程不是很清楚,哪些是發生在客戶側的,哪些是發生在商戶側的,哪些是發生在銀行側的等,沒有寫清楚,所以整個過程讀起來還是不清楚,謝謝

    來自上海 回復
    1. 參看http://blog.lixf.cn/

      來自北京 回復
    2. 看到目錄之后 我震驚啦 ,厲害了熊哥

      來自上海 回復
    3. 非常感謝您的分享。

      來自浙江 回復
    4. 大佬好,這個鏈接打不開是怎么回事啊qaq

      來自北京 回復
  6. 受益匪淺,感謝~請問:使用網銀支付成功率在20%左右,銀聯直聯成功率一般在50%左右,銀行卡直聯可以提升到70%左右。這數據指的是用戶支付的成功率么?為何成功率會那么低?

    來自湖南 回復
    1. 從創建訂單開始算,成功率一般不高。當然,這和行業有關。

      來自北京 回復
  7. 鳳凰熊老師你好,請問綁卡只能支持銀聯或者銀行直連嗎,可以走其他的第三方支付公司綁卡嗎?通常用戶綁卡后的支付行為是屬于認證支付還是快捷支付呢?

    回復
    1. 可以通過第三方支付公司綁卡。 綁卡后,一般是走快捷支付

      來自北京 回復
  8. 好專業,大神不打算收徒弟么? ?? 雖然不太明白,還是堅持看完這一個系列的,感覺很有幫助,理清了一些思路

    來自北京 回復
  9. 剛好在做支付,卡bin的“附件”打不開啊

    回復
    1. 是不是dns有問題?我這可以打開。

      來自北京 回復
    2. 卡bin的“附件”打開是亂碼呢

      來自四川 回復
    3. 我這兒下載下來也是亂碼

      來自北京 回復
    4. 我下載了也是亂碼

      來自廣東 回復