From 4b796fe362d68bcd2eee0c94d7b86e8f857fff2b Mon Sep 17 00:00:00 2001 From: David Bomba Date: Mon, 30 May 2022 20:05:34 +1000 Subject: [PATCH 1/2] Adjustments for Stripe Webhooks --- app/PaymentDrivers/Stripe/Jobs/StripeWebhook.php | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/app/PaymentDrivers/Stripe/Jobs/StripeWebhook.php b/app/PaymentDrivers/Stripe/Jobs/StripeWebhook.php index 6b77bb05f2f9..f36d874d2ce8 100644 --- a/app/PaymentDrivers/Stripe/Jobs/StripeWebhook.php +++ b/app/PaymentDrivers/Stripe/Jobs/StripeWebhook.php @@ -41,6 +41,8 @@ class StripeWebhook implements ShouldQueue public string $company_key; + private bool $url_found = false; + private array $events = [ 'source.chargeable', 'charge.succeeded', @@ -64,9 +66,7 @@ class StripeWebhook implements ShouldQueue $company_gateway = CompanyGateway::find($this->company_gateway_id); - $driver = $company_gateway->driver(); - - $stripe = $driver->init(); + $stripe = $company_gateway->driver()->init(); $endpoints = \Stripe\WebhookEndpoint::all([], $stripe->stripe_connect_auth); @@ -77,19 +77,22 @@ class StripeWebhook implements ShouldQueue if($endpoint->url === $webhook_url) { - \Stripe\WebhookEndpoint::update($endpoint->id, $this->events, $stripe->stripe_connect_auth); + + \Stripe\WebhookEndpoint::update($endpoint->id, ['enabled_events' => $this->events], $stripe->stripe_connect_auth); + + $this->url_found = true; } } /* Add new webhook */ - if(count($endpoints['data'] == 0) + if(!$this->url_found) { \Stripe\WebhookEndpoint::create([ 'url' => $webhook_url, 'enabled_events' => $this->events, - ], $stripe->stripe_connect_auth) + ], $stripe->stripe_connect_auth); } } From a96ff66dee84786e15d1079185c30847ad9e9539 Mon Sep 17 00:00:00 2001 From: David Bomba Date: Mon, 30 May 2022 20:08:12 +1000 Subject: [PATCH 2/2] Configure webhooks on gateway creation --- app/Http/Controllers/CompanyGatewayController.php | 6 ++++++ app/PaymentDrivers/Stripe/Jobs/StripeWebhook.php | 1 + 2 files changed, 7 insertions(+) diff --git a/app/Http/Controllers/CompanyGatewayController.php b/app/Http/Controllers/CompanyGatewayController.php index 2bed2fb65f05..ec3858b48225 100644 --- a/app/Http/Controllers/CompanyGatewayController.php +++ b/app/Http/Controllers/CompanyGatewayController.php @@ -23,6 +23,7 @@ use App\Http\Requests\CompanyGateway\UpdateCompanyGatewayRequest; use App\Jobs\Util\ApplePayDomain; use App\Models\Client; use App\Models\CompanyGateway; +use App\PaymentDrivers\Stripe\Jobs\StripeWebhook; use App\Repositories\CompanyRepository; use App\Transformers\CompanyGatewayTransformer; use App\Utils\Traits\MakesHash; @@ -212,6 +213,11 @@ class CompanyGatewayController extends BaseController ApplePayDomain::dispatch($company_gateway, $company_gateway->company->db); + if(in_array($company_gateway->gateway_key, $this->stripe_keys)) + { + StripeWebhook::dispatch($company_gateway->company->company_key, $company_gateway->id); + } + return $this->itemResponse($company_gateway); } diff --git a/app/PaymentDrivers/Stripe/Jobs/StripeWebhook.php b/app/PaymentDrivers/Stripe/Jobs/StripeWebhook.php index f36d874d2ce8..f97088950570 100644 --- a/app/PaymentDrivers/Stripe/Jobs/StripeWebhook.php +++ b/app/PaymentDrivers/Stripe/Jobs/StripeWebhook.php @@ -81,6 +81,7 @@ class StripeWebhook implements ShouldQueue \Stripe\WebhookEndpoint::update($endpoint->id, ['enabled_events' => $this->events], $stripe->stripe_connect_auth); $this->url_found = true; + } }