make(Illuminate\Contracts\Console\Kernel::class)->bootstrap(); $key = config('services.stripe.secret'); if (!str_starts_with((string)$key,'sk_test_')) throw new RuntimeException('Stripe test mode required'); try { $stripe = new Stripe\StripeClient($key); $balance = $stripe->balance->retrieve(); echo 'Stripe API connection: verified'.PHP_EOL; echo 'Stripe livemode: '.($balance->livemode?'true':'false').PHP_EOL; $host=parse_url(config('app.url'),PHP_URL_HOST); $count=0; foreach ($stripe->webhookEndpoints->all(['limit'=>100])->data as $endpoint) { if (parse_url($endpoint->url,PHP_URL_HOST) === $host) { echo 'Website webhook: '.$endpoint->status.'; checkout completion event: '.(in_array('checkout.session.completed',$endpoint->enabled_events)||in_array('*',$endpoint->enabled_events)?'enabled':'missing').PHP_EOL; $count++; } } echo 'Matching test webhook endpoints: '.$count.PHP_EOL; } catch (Stripe\Exception\ApiErrorException $e) { echo 'Stripe API error class: '.get_class($e).PHP_EOL; echo 'HTTP status: '.$e->getHttpStatus().PHP_EOL; echo 'Stripe error code: '.($e->getStripeCode() ?? 'none').PHP_EOL; exit(1); }