[分享摘要]支付中心設(shè)計(jì)與實(shí)踐

收集金幣的馬里奧

演示 DEMO:掃碼支付

支付“不難做”:App 支付,一名 iOS 工程師唰唰唰搞定;微信 JS 支付,一名前端工程師唰唰唰搞定桃纯。而如果想做一個(gè)通用可擴(kuò)展的支付系統(tǒng),90% 的工作在后端披坏,做起來(lái)也并不是很容易态坦。

背景

  • 早期業(yè)務(wù)A已引入支付寶支付
    • 發(fā)起支付邏輯在客戶端,支付單號(hào)業(yè)務(wù)關(guān)聯(lián)性強(qiáng)不通用(客戶端寫死邏輯影響后端重構(gòu)一坑此處不表)
    • 支付網(wǎng)關(guān)回調(diào)接口在 API 項(xiàng)目中棒拂,API 項(xiàng)目異常會(huì)引起支付問(wèn)題(客戶端一臉萌比)
    • 測(cè)試支付伞梯?先把業(yè)務(wù)邏輯走一遍
  • 業(yè)務(wù) B 有單獨(dú)的網(wǎng)頁(yè)端掃碼支付,跟客戶端沒什么關(guān)系……
  • 后來(lái)業(yè)務(wù)C需要引入支付寶
    • 原有邏輯無(wú)法重用帚屉,依舊是寫一套新的谜诫,對(duì)應(yīng)業(yè)務(wù)邏輯依舊耦合
    • 對(duì)客戶端來(lái)說(shuō),API 也是兩套
    • 后端支付網(wǎng)關(guān)回調(diào)也是兩套
  • 產(chǎn)品說(shuō)要加微信支付……??
  • 后來(lái)說(shuō)要有更多業(yè)務(wù)攻旦、商品需要支付……??????

一次支付背后發(fā)生的故事

支付寶支付簡(jiǎn)化模型:

最簡(jiǎn)支付模型.png
  • 最簡(jiǎn)喻旷,如果是微信支付需要預(yù)下單
  • 最簡(jiǎn)單支付除了必備價(jià)格,其它并不重要
  • 支付發(fā)起在客戶端牢屋,看似沒問(wèn)題且预,但是沒擴(kuò)展性
  • 客戶端發(fā)起最大的問(wèn)題是成單邏輯在客戶端槽袄,不可控:難以追蹤統(tǒng)計(jì),不可變更

Review 需求:

  • 工程師角度:擴(kuò)展锋谐?(我只是不想寫重復(fù)代碼遍尺,改來(lái)改去)
    • 新增業(yè)務(wù)支付、商品支付怀估,支付中心狮鸭、客戶端及前端不需要?jiǎng)哟a
    • 新增支付渠道合搅,業(yè)務(wù)不需要?jiǎng)哟a多搀,支付相關(guān)不需要?jiǎng)永洗a
    • 支付中心自洽,模塊職能清晰灾部,有日志康铭,可追溯分析
    • 易測(cè)試
  • 產(chǎn)品運(yùn)營(yíng)角度:
    • 上新商品支付,快
    • 支持優(yōu)惠券
    • 靈活赌髓,多端支付从藤,自定義價(jià)格支付,發(fā)個(gè)消息支付……
    • 數(shù)據(jù)完善
    • 有沒有更多可能锁蠕?
  • 公司角度:安全
  • 注:以上皆為完成后臆測(cè) 夷野;)

一次“復(fù)雜的”支付背后發(fā)生的故事

支付中心業(yè)務(wù)時(shí)序圖.png

劃重點(diǎn)

  • 定義支付中心(PayCenterServer & 客戶端 & 前端):
    • 封裝支付邏輯,與終端&支付網(wǎng)關(guān)直接對(duì)接荣倾,對(duì)業(yè)務(wù)方透明
    • 對(duì)外方便對(duì)接多個(gè)業(yè)務(wù)方
    • 對(duì)內(nèi)方便擴(kuò)展終端悯搔,擴(kuò)展支付網(wǎng)關(guān)
  • 業(yè)務(wù)方拿到 PayOrderId,其它的支付過(guò)程都交給終端舌仍,坐等 PayCenterServer 的 bizNotifyUrl 通知(有模仿的重復(fù)通知邏輯)
  • 支付中心需要理解的外部概念: bizOrderId, bizNotifyUrl, (couponId, goodsId, unionOrderId)
  • 內(nèi)部數(shù)據(jù)只有兩類:PayOrder, GatewayOrder
  • 易測(cè)試

聊聊一些坑

  • 微信開放平臺(tái)(open)和公眾號(hào)平臺(tái)(mp)是不同的 appId妒貌,支付字段也略有區(qū)別
  • 多鐘支付類型的字段解析歸納,是局部實(shí)現(xiàn)的難點(diǎn):
    • 每種支付渠道都不同铸豁,同種支付渠道掃碼灌曙、H5、App 也不完全相同
    • 簽名階段节芥、終端展示在刺、驗(yàn)簽階段
    • DEMO:各終端需要的不同字段
      • 微信為例:JS,掃碼头镊,APP
  • 簽名蚣驼、驗(yàn)簽邏輯理解
    • 銀聯(lián)證書的坑
  • TRADE_FINISHED,遲來(lái)三個(gè)月的 bug

后續(xù)

  • 優(yōu)惠券
  • 商品中心
  • 訂單中心

總結(jié)

  • 區(qū)分變化很重要
    • 前期很容易因?yàn)橹Ц读鞒淌菑?fù)雜的拧晕,簽名是復(fù)雜的隙姿,錯(cuò)誤認(rèn)為這是變化部分。支付流程梳理清楚后這部分反而是穩(wěn)定的
    • 支付流程厂捞、簽名是固定的输玷,不變的队丝,而且是內(nèi)部的
    • 與業(yè)務(wù)端,終端以及支付網(wǎng)關(guān)后臺(tái)的交互是設(shè)計(jì)重點(diǎn)
  • 測(cè)試優(yōu)先(線上也要易測(cè)試)
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末欲鹏,一起剝皮案震驚了整個(gè)濱河市机久,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌赔嚎,老刑警劉巖膘盖,帶你破解...
    沈念sama閱讀 221,548評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異尤误,居然都是意外死亡侠畔,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,497評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門损晤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)软棺,“玉大人,你說(shuō)我怎么就攤上這事尤勋〈洌” “怎么了?”我有些...
    開封第一講書人閱讀 167,990評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵最冰,是天一觀的道長(zhǎng)瘦棋。 經(jīng)常有香客問(wèn)我,道長(zhǎng)暖哨,這世上最難降的妖魔是什么赌朋? 我笑而不...
    開封第一講書人閱讀 59,618評(píng)論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮鹿蜀,結(jié)果婚禮上箕慧,老公的妹妹穿的比我還像新娘。我一直安慰自己茴恰,他們只是感情好颠焦,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,618評(píng)論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著往枣,像睡著了一般伐庭。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上分冈,一...
    開封第一講書人閱讀 52,246評(píng)論 1 308
  • 那天圾另,我揣著相機(jī)與錄音,去河邊找鬼雕沉。 笑死集乔,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的坡椒。 我是一名探鬼主播扰路,決...
    沈念sama閱讀 40,819評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼尤溜,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了汗唱?” 一聲冷哼從身側(cè)響起宫莱,我...
    開封第一講書人閱讀 39,725評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎哩罪,沒想到半個(gè)月后授霸,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,268評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡际插,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,356評(píng)論 3 340
  • 正文 我和宋清朗相戀三年碘耳,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片腹鹉。...
    茶點(diǎn)故事閱讀 40,488評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡藏畅,死狀恐怖敷硅,靈堂內(nèi)的尸體忽然破棺而出功咒,到底是詐尸還是另有隱情,我是刑警寧澤绞蹦,帶...
    沈念sama閱讀 36,181評(píng)論 5 350
  • 正文 年R本政府宣布力奋,位于F島的核電站,受9級(jí)特大地震影響幽七,放射性物質(zhì)發(fā)生泄漏景殷。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,862評(píng)論 3 333
  • 文/蒙蒙 一澡屡、第九天 我趴在偏房一處隱蔽的房頂上張望猿挚。 院中可真熱鬧,春花似錦驶鹉、人聲如沸绩蜻。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,331評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)办绝。三九已至,卻和暖如春姚淆,著一層夾襖步出監(jiān)牢的瞬間孕蝉,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,445評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工腌逢, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留降淮,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,897評(píng)論 3 376
  • 正文 我出身青樓搏讶,卻偏偏與公主長(zhǎng)得像佳鳖,于是被迫代替她去往敵國(guó)和親纳本。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,500評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容