※ 建立通知伺服器訂單完成狀態的 API:
※ 進入Default Application帳號裡面的Add Webhook:
網址:https://developer.paypal.com/dashboard/applications/sandbox

※ 複製END_POINT的URL:.env

※ 貼到Add Webhook裡面的WebhookURL:

https://網址/orders/update
※ Event types選項中:
選擇Payment capture completed --> save


※ 成功畫面:

※ 測試訂單成功畫面:
※ 訂單更新:controller --> orderController.ts
//確保請求中有必要的交易資料程式碼解說:
if ("RtnCode" in req.body && "MerchantTradeNo" in req.body) {
...
} else if ("resource" in req.body) {
//Paypal
const { custom_id, status, update_time } = req.body.resource;
if (status !== 'COMPLETED') return res.status(500).send(500);
merchantTradeNo = custom_id;
tradeDate = update_time
};
1.檢查 req.body
是否包含 resource
:
確認請求的主體(req.body
)中是否有 resource
這個欄位。這是 PayPal webhook 通常用來存放具體交易資料的地方。
2.提取所需資訊:
從 resource
中解構出三個欄位:
- custom_id:通常是商家的自訂交易 ID,用來對應內部資料庫中的訂單。
- status:交易狀態(例如:COMPLETED 表示交易完成)。
- update_time:交易最後更新的時間。
3.檢查交易狀態是否完成:
如果 status
不等於 COMPLETED
,代表交易未完成,伺服器會返回 HTTP 500 狀態碼,表示處理失敗。
4.處理交易資訊:
merchantTradeNo = custom_id;
:將自訂交易編號(custom_id
)賦值給變數merchantTradeNo
,用於後續處理。tradeDate = update_time;
:將最後更新時間(update_time
)賦值給變數tradeDate
。
※ My Sql訂單更新結果:
