如何使用 Stripe Webhooks 實現(xiàn)訂單狀態(tài)自動更新

Stripe Webhooks(網(wǎng)絡(luò)鉤子) 是實現(xiàn)真正的支付結(jié)果異步監(jiān)聽與自動狀態(tài)變更。本文深入講解如何配置 Stripe Webhooks,并在實際項目中實現(xiàn)訂單狀態(tài)的自動更新機制。

圖片[1]-如何使用 Stripe Webhooks 實現(xiàn)訂單狀態(tài)自動更新

一、什么是 Stripe Webhooks?

Webhooks 是 Stripe 向你服務(wù)器發(fā)送事件通知的一種機制。當(dāng)某個事件,如付款成功、退款完成、訂閱變更等發(fā)生時,Stripe 會向你預(yù)設(shè)的 URL(Webhook 端點)發(fā)送一個 POST 請求,包含事件詳細信息。

使用 Webhooks 有哪些優(yōu)勢?

  • 異步通知:不用用戶跳轉(zhuǎn)或刷新頁面,也能獲取訂單狀態(tài)。
  • 實時更新:支付結(jié)果可以瞬時反饋,提高用戶信任度。
  • 穩(wěn)定可靠:Stripe 會自動重試失敗的 webhook 事件,確保消息到達。
  • 擴展靈活:支持監(jiān)聽幾十種事件類型,如 payment_intent.succeeded、charge.refundedinvoice.payment_failed 等。
圖片[2]-如何使用 Stripe Webhooks 實現(xiàn)訂單狀態(tài)自動更新

二、如何配置 Stripe Webhook 端點?

第一步:進入 Webhook 配置頁面

  1. 打開 Stripe 后臺:https://dashboard.stripe.com
  2. 登錄賬戶后,切換為測試模式(頁面上方顯示“測試模式”)在搜索欄中直接搜索 Webhook 即可快速創(chuàng)建
  3. 也可點擊進入 Webhook 頁面:
    ?? https://dashboard.stripe.com/test/workbench/webhooks
圖片[3]-如何使用 Stripe Webhooks 實現(xiàn)訂單狀態(tài)自動更新

第二步:創(chuàng)建 Webhook 的“向?qū)Я鞒獭?/h3>

第一步選擇偵聽的事件類型

圖片[4]-如何使用 Stripe Webhooks 實現(xiàn)訂單狀態(tài)自動更新

推薦勾選的事件:

類別推薦事件說明
PaymentIntentpayment_intent.succeeded支付成功(常用于標(biāo)記訂單已支付)
PaymentIntentpayment_intent.payment_failed支付失敗
圖片[5]-如何使用 Stripe Webhooks 實現(xiàn)訂單狀態(tài)自動更新

選好后,點擊頁面右下角的紫色按鈕:
?? 繼續(xù)

第三步:配置 Webhook 端點信息

第 1 步:選擇你要監(jiān)聽的事件(推薦選擇):

  • ? payment_intent.succeeded(支付成功)
  • ? payment_intent.payment_failed(支付失?。?/li>

第 2 步:選擇接收端類型

  • 選擇Webhook端點,然后點繼續(xù)
圖片[6]-如何使用 Stripe Webhooks 實現(xiàn)訂單狀態(tài)自動更新

第四步:填寫配置接收端

在這一步你將看到一個表單,填寫:

字段內(nèi)容
端點 URL(Endpoint URL)輸入你的服務(wù)器接收地址,如:https://yourdomain.com/webhook/stripe
描述(可選)如“訂單狀態(tài)更新監(jiān)聽”

然后點擊 創(chuàng)建目的地“ 即可完成 Webhook 配置!

圖片[7]-如何使用 Stripe Webhooks 實現(xiàn)訂單狀態(tài)自動更新
圖片[8]-如何使用 Stripe Webhooks 實現(xiàn)訂單狀態(tài)自動更新

三、訂單狀態(tài)自動化更新流程

1. 客戶提交訂單并跳轉(zhuǎn)支付

創(chuàng)建 PaymentIntent 時附加訂單 ID:

\Stripe\PaymentIntent::create([
    'amount' => 29900,
    'currency' => 'usd',
    'metadata' => ['order_id' => 'ORDER12345'],
]);

2. 客戶完成支付,Stripe 自動觸發(fā) Webhook

事件如 payment_intent.succeeded 被觸發(fā),Stripe 將發(fā)送請求到你的 webhook 端點。

圖片[9]-如何使用 Stripe Webhooks 實現(xiàn)訂單狀態(tài)自動更新
圖片[10]-如何使用 Stripe Webhooks 實現(xiàn)訂單狀態(tài)自動更新

3. 后端解析事件,更新訂單狀態(tài)

運用 $event->type 區(qū)分事件,調(diào)用系統(tǒng)的訂單更新邏輯(數(shù)據(jù)庫寫入、日志記錄、通知發(fā)送等)。

4. 自動通知客戶

webhook 接收邏輯中還可以:

  • 發(fā)送支付成功郵件
  • 推送站內(nèi)通知
  • 通知發(fā)貨系統(tǒng)準(zhǔn)備物流

四、安全性與調(diào)試建議

1. 驗證 Stripe 簽名

建議啟用 webhook 的簽名驗證,確保數(shù)據(jù)來源真實可靠。密鑰簽名可在 Stripe 后臺 Webhook 配置頁中找到。

圖片[11]-如何使用 Stripe Webhooks 實現(xiàn)訂單狀態(tài)自動更新

2. 本地開發(fā)推薦使用 stripe-cli

使用命令工具把 Stripe 事件轉(zhuǎn)發(fā)到本地服務(wù)器:

stripe listen --forward-to localhost:8000/webhook/stripe

還可以使用模擬測試特定事件:

stripe trigger payment_intent.succeeded

五、支持的常用事件推薦清單

事件類型描述
payment_intent.succeeded支付成功,常用于確認訂單
payment_intent.payment_failed支付失敗,可用于重試提醒
charge.refunded退款完成,更新狀態(tài)為已退款
checkout.session.completedCheckout 支付成功(如用 Stripe Checkout)
invoice.payment_succeeded訂閱類賬單支付成功
invoice.payment_failed自動續(xù)費失敗

更多事件類型可參考官方文檔:
https://stripe.com/docs/api/events/types

六、總結(jié)

Stripe Webhooks構(gòu)建一個穩(wěn)定、高效、不用人工介入的訂單狀態(tài)自動更新系統(tǒng)。無論是一次性支付、訂閱服務(wù)、退款處理,Webhook 都可以幫助系統(tǒng)在第一時間做出響應(yīng),是現(xiàn)代電商系統(tǒng)的核心機制。


聯(lián)系我們
教程看不懂?聯(lián)系我們?yōu)槟赓M解答!免費助力個人,小企站點!
客服微信
客服微信
電話:020-2206-9892
QQ咨詢:1025174874
郵件:info@361sale.com
工作時間:周一至周五,9:30-18:30,節(jié)假日休息
? 轉(zhuǎn)載聲明
本文作者:Millie
THE END
喜歡就支持一下吧
點贊835 分享
評論 搶沙發(fā)

請登錄后發(fā)表評論

    暫無評論內(nèi)容