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 6b77bb05f2f9..f97088950570 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,23 @@ 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); } }