make(Illuminate\Contracts\Console\Kernel::class)->bootstrap(); $key=config('services.stripe.secret'); if(!str_starts_with((string)$key,'sk_test_')) throw new RuntimeException('Test mode required'); $creds=json_decode(file_get_contents('/tmp/pawzody-stripe-test-user.json'),true); $user=App\Models\User::findOrFail($creds['user_id']); $stripe=new Stripe\StripeClient($key); $verified=0;$https=0; foreach($user->payments()->where('status','paid')->get() as $p) { $s=$stripe->checkout->sessions->retrieve($p->stripe_checkout_session_id); if($s->livemode || $s->mode!=='payment' || $s->payment_status!=='paid' || ($p->payload['source']??null)!=='stripe_webhook') throw new RuntimeException('Unexpected checkout status'); $event=$stripe->events->retrieve($p->payload['stripe_event']); if($event->livemode || $event->pending_webhooks!==0) throw new RuntimeException('Webhook delivery not verified'); $https+=parse_url($s->success_url,PHP_URL_SCHEME)==='https'?1:0; $verified++; } echo 'Actual sandbox payments verified: '.$verified.PHP_EOL; echo 'Stripe event delivery confirmed: '.$verified.PHP_EOL; echo 'HTTPS return URLs after fix: '.($https===$verified-1?'verified':'check needed').PHP_EOL; echo 'All paid sessions: one-time mode; livemode=false'.PHP_EOL;