亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

當我用 spatie 包處理 stripewebbook 時沒有任何反應

當我用 spatie 包處理 stripewebbook 時沒有任何反應

PHP
胡子哥哥 2023-05-12 15:58:58
我使用 spatie/laravel-stripe-webhook 來處理從 stripe 發送的 webhook。我使用 stripe CLI 通過以下命令進行測試:stripe listen --events checkout.session.completed --forward-to localhost:8000/api/webhook/checkout一切順利,我的控制臺中有這樣的回應:> Ready! Your webhook signing secret is whsec_mSz72pLPb4B******rfvvYajj641iqZ7 (^C to quit)2020-06-10 14:12:07   --> \checkout.session.completed\ [\evt_1GsSmjLG****Fak7OpFNC8c2\]2020-06-10 14:12:07  <--  [200] POST http://localhost:8000/api/webhook/checkout [\evt_1GsSmj*****OFak7OpFNC8c2\]但是...什么也沒發生...我的 laravel.log 中沒有任何錯誤...我關注了 github Spatie 中的所有自述文件,然后我這樣做了:路線/api.php :Route::stripeWebhooks('webhook/checkout');應用程序/提供商/EventServiceProvider.php :protected $listen = [        Registered::class => [            SendEmailVerificationNotification::class,        ],        'stripe-webhooks::checkout.session.completed' => [            App\Listeners\HandleSubscriptions::class        ]    ];我必須禁用:Parent::boot();因為如果啟用這個,我會拋出異常:[object] (ReflectionException(code: -1): Class App\\Providers\\App\\Listeners\\HandleSubscriptions does not exist at /var/www/private/bnb-v2/bnb-back/vendor/laravel/framework/src/Illuminate/Container/Container.php:803)而且我無法處理 stripeWebhook。
查看完整描述

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.

查看完整回答
反對 回復 2023-05-12
?
烙印99

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,

],


查看完整回答
反對 回復 2023-05-12
  • 2 回答
  • 0 關注
  • 180 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號