訂閱支付:支付巨頭的必爭之地

1 評論 894 瀏覽 0 收藏 14 分鐘

支付巨頭們紛紛布局訂閱支付領(lǐng)域,試圖通過技術(shù)創(chuàng)新和業(yè)務(wù)拓展來搶占市場份額。本文將深入探討訂閱支付的業(yè)務(wù)流程、風(fēng)控要點、技術(shù)實現(xiàn)方式以及主流支付平臺的接口對比分析,幫助大家全面了解這一支付領(lǐng)域的競爭格局和發(fā)展趨勢。

目錄概覽

  • 主要參與方
  • 典型信息流
  • 風(fēng)控與合規(guī)要點
  • 案例:微信支付周期扣費產(chǎn)品業(yè)務(wù)流程
  • 商戶接口調(diào)用process
  • 訂閱支付的UML流程概覽
  • 主流競品接口對比分析

主要參與方

  • 用戶:就是你我這樣的消費者,想訂閱個服務(wù),比如會員、自動續(xù)費啥的,就得先發(fā)起請求,授權(quán)支付方式(比如綁卡),然后等著接收扣款通知。
  • 商戶:就是提供那些訂閱服務(wù)的商家,比如視頻網(wǎng)站、軟件開發(fā)商。他們得配置好訂閱計劃,等收到支付結(jié)果后,就給你開通服務(wù)。
  • 支付公司(聚合支付平臺):這幫家伙就像是支付界的“中間人”,把各種支付渠道都集成起來。他們得處理訂閱的那些事兒,比如周期性扣款、扣款失敗了咋辦,還得負(fù)責(zé)資金清算和對賬。
  • 銀行/卡組織:他們是“真金白銀”的搬運工,負(fù)責(zé)實際的資金劃轉(zhuǎn),還提供代收付接口和風(fēng)控支持。
  • 第三方服務(wù)商:比如 WildCard(虛擬卡)、Stripe(支付網(wǎng)關(guān))這些,他們在一些特定場景下,給支付能力“加把勁”。

典型信息流

訂閱發(fā)起階段

用戶(就是你咯)在前端頁面上選好訂閱計劃,然后授權(quán)支付方式(比如填個虛擬卡信息)。

支付公司就會調(diào)用銀行或支付網(wǎng)關(guān)的 API,生成一個訂閱協(xié)議(比如 PayPal 的 Billing Agreement),順便把扣款周期和金額給記下來。

商戶收到訂閱 ID 后,就會給你開通服務(wù)權(quán)限,你就能開始享受服務(wù)啦。

周期性扣款階段

到了該扣款的時候,支付公司就會按周期觸發(fā)扣款請求,通過銀行或卡組織把錢劃走。

扣款結(jié)果會通過 Webhook 通知商戶(成功了就繼續(xù)服務(wù),失敗了就提醒一下,具體細(xì)節(jié)流程見下文:訂閱支付UML流程)。用戶(還是你)會收到扣款通知,還能通過支付公司或商戶平臺管理訂閱狀態(tài),比如查看、修改或者取消訂閱。

異常處理階段

支付失敗:系統(tǒng)會自動嘗試重試,要是還是不行,就暫停服務(wù)。這時候,得把失敗原因(比如余額不足、風(fēng)控攔截)記錄下來,并且通知用戶(還是你)。后續(xù)如能扣到款是否支持恢復(fù)服務(wù)?

取消訂閱:要是用戶(你)不想訂閱了,發(fā)起取消請求后,支付公司就會終止扣款計劃,并且把狀態(tài)同步給商戶。

業(yè)務(wù)方面:

如扣款周期已過,仍然沒有扣款成功,是否立即停止用戶的服務(wù),具體業(yè)務(wù)場景措施肯定不同?

更改訂閱計劃:

  • 正好在扣款等待期更改訂閱計劃,如訂單金額和周期,如何處理。
  • 扣款等待期是否允許修改,或者是否需要定義扣款等待期的變更計劃下月生效?

Webhook消息丟失

商戶系統(tǒng)檢測到訂閱一直處于pending狀態(tài)(超過30分鐘)。

調(diào)用支付平臺提供的「訂閱狀態(tài)查詢接口」主動補(bǔ)償:

GET /v1/subscriptions/{subscription_id}

Response:

{

“status”: “active”,

“last_payment_time”:

“2024-05-20 14:00:00”

}

根據(jù)查詢結(jié)果更新本地狀態(tài),并補(bǔ)發(fā)用戶通知。

風(fēng)控與合規(guī)要點

  • 反欺詐:支付公司會結(jié)合 IP 檢測、交易行為分析(比如有沒有高頻小額扣款這種異常行為)來攔截異常交易。像 WildCard 這種,還會針對高風(fēng)控平臺(比如 OpenAI)優(yōu)化支付渠道。
  • 數(shù)據(jù)隱私:大家都得遵循 GDPR 這些法規(guī),把用戶支付信息加密存儲好。尤其是虛擬卡服務(wù),得注意別讓敏感信息泄露(比如 WildCard 就沒有 KYC 選項)。
  • 資金存管:支付公司要和銀行合作,實現(xiàn)資金分賬,確保商戶結(jié)算合規(guī),別出現(xiàn)什么二清風(fēng)險。

案例:微信支付周期扣費產(chǎn)品業(yè)務(wù)流程

下發(fā)扣費前通知后,在約定時間內(nèi):

  • 若用戶拒絕續(xù)費,可關(guān)閉扣費服務(wù)
  • 若用戶接受續(xù)費,則無需額外操作

注意:目前支持通知后24小時自動扣費、或提前使用獨立的通知接口兩種模式。(支付中簽約:pay/contractorder是獨立接口,以下扣款規(guī)則只適用于申請扣款接口:pay/pappayapply,兩種模式只能二選一)

微信周期扣費商戶接口調(diào)用流程

1)商戶在1號調(diào)用預(yù)扣費通知。

2)2號為扣費等待期,商戶不可扣費,用戶可隨時關(guān)閉。

3)3~9號共7天為可扣費期

    • 扣費期內(nèi)僅在每天7:00~22:00期間可以發(fā)起扣費
    • 扣費期內(nèi)可多次嘗試扣費
    • 扣費期內(nèi)實時扣費
    • 扣費失敗用戶無感知
    • 扣費成功后用戶可收到扣費憑證,扣費成功后,當(dāng)前周期提前結(jié)束

訂閱支付的實現(xiàn)方式

1. 技術(shù)集成方案

  • 支付SDK/API對接:通過集成支付網(wǎng)關(guān)(如Stripe、PayPal)或銀行提供的訂閱接口,實現(xiàn)周期性扣款。例如,Laravel Cashier通過Stripe API管理訂閱計劃,支持創(chuàng)建、取消訂閱及處理失敗支付。
  • 智能合約與區(qū)塊鏈:基于Cardano的Revuto平臺利用智能合約自動執(zhí)行訂閱扣款,用戶可通過質(zhì)押代幣(如REVU)或穩(wěn)定幣(EURR)支付,同時引入DeFi借貸功能降低費用。
  • 虛擬卡解決方案:針對跨境支付場景,WildCard等虛擬卡服務(wù)支持綁定國際訂閱平臺(如Patreon、ChatGPT Plus),通過支付寶/微信充值,規(guī)避國內(nèi)銀行卡限制。

2. 核心功能模塊

  • 訂閱計劃管理:支持靈活設(shè)置周期(月/季/年)、價格階梯及試用期,例如PayPal需提前24小時創(chuàng)建訂閱協(xié)議并設(shè)置首次扣款費用7。
  • 支付失敗處理:自動觸發(fā)郵件提醒、重試扣款或凍結(jié)服務(wù),需結(jié)合Webhook接收支付狀態(tài)通知(如PAYMENT.SALE.COMPLETED)7。
  • 合規(guī)與用戶通知:根據(jù)《消費者權(quán)益保護(hù)法實施條例》,需顯著提醒自動續(xù)費條款,并在扣款前通過多通道(短信、郵件)通知用戶

主流競品接口對比分析

Stripe訂閱支付接口

接口功能:支持創(chuàng)建訂閱計劃、周期性扣款、試用期設(shè)置及失敗重試。

核心請求參數(shù)

  • customer(必填):用戶唯一標(biāo)識,需通過創(chuàng)建客戶接口獲取。
  • items[price](必填):訂閱計劃價格ID,需預(yù)先在Stripe后臺配置。
  • payment_behavior:控制首次扣款行為(如允許失敗后自動重試)。
  • trial_period_days:試用期天數(shù)。

響應(yīng)參數(shù)

  • id:訂閱ID,用于后續(xù)管理。
  • status:訂閱狀態(tài)(如active、past_due)。
  • current_period_start/end:當(dāng)前計費周期起止時間。

調(diào)用流程

  1. 用戶選擇訂閱計劃并授權(quán)支付。
  2. 商戶調(diào)用POST /v1/subscriptions創(chuàng)建訂閱。
  3. Stripe驗證支付方式并生成首次扣款。
  4. 商戶通過Webhook接收invoice.payment_succeeded事件更新訂閱狀態(tài)。

PayPal定期付款接口

接口功能:支持固定周期扣款、賬單協(xié)議管理。

核心請求參數(shù)

  • plan_id(必填):訂閱計劃ID,需通過產(chǎn)品創(chuàng)建接口生成。
  • subscriber:用戶信息(如郵箱、姓名)。
  • application_context:定義支付流程的返回URL及取消頁面。

響應(yīng)參數(shù)

  • subscription_id:訂閱唯一標(biāo)識。
  • status:狀態(tài)碼(如APPROVAL_PENDING、ACTIVE)。
  • links:包含用戶授權(quán)支付的跳轉(zhuǎn)鏈接。

調(diào)用流程:

  1. 商戶調(diào)用POST /v1/billing/plans創(chuàng)建訂閱計劃。
  2. 用戶通過授權(quán)鏈接完成支付授權(quán)。
  3. PayPal通過Webhook通知商戶激活訂閱。
  4. 周期性扣款自動執(zhí)行,商戶監(jiān)聽PAYMENT.SALE.COMPLETED事件。

支付寶自動扣款接口(alipay.fund.auth.order.app.freeze)

接口功能:基于預(yù)授權(quán)協(xié)議實現(xiàn)定期扣款。

核心請求參數(shù)

  • out_order_no(必填):商戶訂單號,需唯一。
  • auth_code:用戶授權(quán)碼(通過掃碼或SDK獲取)。
  • product_code:固定為PRE_AUTH。
  • amount:預(yù)授權(quán)金額。

響應(yīng)參數(shù)

  • auth_no:支付寶資金授權(quán)號。
  • status:授權(quán)狀態(tài)(如SUCCESS)。
  • gmt_trans:授權(quán)時間戳。

調(diào)用流程

微信支付合約支付接口

接口功能:支持按周期或按次扣款,適用于會員訂閱。

核心請求參數(shù)

  • contract_id(必填):簽約協(xié)議號,通過用戶授權(quán)獲取。
  • body:訂單描述(如“月度會員費”)。
  • total_fee:扣款金額(單位:分)。

響應(yīng)參數(shù)

  • transaction_id:微信支付訂單號。
  • time_end:支付完成時間。
  • trade_state:交易狀態(tài)(如SUCCESS)。

調(diào)用流程

接口文檔設(shè)計關(guān)鍵點

冪等性處理

  • Token機(jī)制:通過唯一請求ID(如idempotency_key)避免重復(fù)扣款,需在請求頭或參數(shù)中傳遞。
  • 數(shù)據(jù)庫約束:在扣款邏輯中使用update … where status=unpaid確保僅處理一次扣款。

有容錯能力的序列設(shè)計

用戶 -> 商戶系統(tǒng): 選擇訂閱計劃并支付

商戶系統(tǒng) -> 支付平臺: 調(diào)用創(chuàng)建訂閱接口(攜帶idempotency_key)

支付平臺 -> 支付平臺: 校驗冪等性(通過idempotency_key)

支付平臺 -> 銀行: 驗證支付方式并扣款

alt 扣款成功

支付平臺 –> 商戶系統(tǒng): 返回{“code”:0, “subscription_id”:”sub_123″, “status”:”pending”}

支付平臺 -> 商戶系統(tǒng): Webhook發(fā)送PAYMENT_SUCCESS事件

商戶系統(tǒng) -> 商戶系統(tǒng): 更新狀態(tài)為active,開通服務(wù)

商戶系統(tǒng) -> 用戶: 發(fā)送成功郵件

else 扣款失敗

支付平臺 –> 商戶系統(tǒng): 返回{“code”:2001, “message”:”余額不足”}

支付平臺 -> 支付平臺: 記錄待重試任務(wù)(定時觸發(fā))

loop 重試邏輯(最多3次)

支付平臺 -> 銀行: 重試扣款

alt 重試成功

支付平臺 -> 商戶系統(tǒng): Webhook發(fā)送PAYMENT_SUCCESS事件

else 重試失敗

支付平臺 -> 商戶系統(tǒng): Webhook發(fā)送PAYMENT_FAILED事件

本文由 @支付唧唧咋咋 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理。未經(jīng)作者許可,禁止轉(zhuǎn)載

題圖來自Unsplash,基于CC0協(xié)議

該文觀點僅代表作者本人,人人都是產(chǎn)品經(jīng)理平臺僅提供信息存儲空間服務(wù)

更多精彩內(nèi)容,請關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號或下載App
評論
評論請登錄
  1. 用戶授權(quán)后,支付平臺會執(zhí)行首次扣款,并在后續(xù)周期自動扣款。
    支付平臺會將扣款結(jié)果通過異步通知發(fā)送給商家系統(tǒng)。

    來自廣東 回復(fù)