2 回答

TA貢獻1951條經驗 獲得超3個贊
您要求 Stripe 聯系本地主機,以便您可以在本地測試您的代碼,但因為它不是公共 URL,Stripe 看不到它,也無法向您發送請求。使用“localhost”只會在你的機器上工作。
要在本地使用 Stripe webhooks 測試您的代碼,您可以使用 expose.sh 使用 Stripe 可以使用的公共 HTTPS URL 公開您的本地服務器。
安裝暴露.sh
對于 Mac 或 Linux,轉到Expose.sh并將顯示的安裝代碼復制/粘貼到終端中。
對于 Windows,轉到Expose.sh,下載二進制文件并將其放在您的 PATH 中的某個位置。
將您的本地 API 服務器公開到網絡
啟動您的 API 服務器。然后運行,expose <port>
其中端口是您的 API 服務器運行的端口,例如 80 或 8080。
Expose.sh 將生成一個隨機的公共 expose.sh URL。你會看到類似的輸出
https://s3rh.expose.sh?is?forwarding?to?localhost:80 http://s3rh.expose.sh?is?forwarding?to?localhost:80
然后您可以讓 Stripe 使用公共 HTTPS URL,該 URL 將轉發到您本地運行的服務器。
獲得 URL 后,您可以使用stripe listen --events checkout.session.completed --forward-to <https expose.sh url>
輸出中的 URL 進行替換,這類似于https://s3rh.expose.sh
.

TA貢獻1829條經驗 獲得超13個贊
我有一個類似的問題,我在浪費了幾個小時后終于設法解決了。這個問題調試起來特別煩人,因為 Laravel 的日志中沒有記錄任何內容,并且完全錯誤地指定格式會在 Stripe CLI 中返回成功的狀態代碼。
至少在我的情況下,問題是 webhook 事件stripe-webhook.php需要完全用下劃線分隔:
'jobs' => [
"payment_intent_succeeded" => \App\Jobs\StripeWebhooks\PaymentIntentSucceeded::class,
// 'source_chargeable' => \App\Jobs\StripeWebhooks\HandleChargeableSource::class,
// 'charge_failed' => \App\Jobs\StripeWebhooks\HandleFailedCharge::class,
],
- 2 回答
- 0 關注
- 180 瀏覽
添加回答
舉報