getContent(); $sigHeader = $request->header('Stripe-Signature'); $secret = config('services.stripe.webhook_secret'); try { $event = Webhook::constructEvent( $payload, $sigHeader, $secret ); } catch (SignatureVerificationException $e) { return response()->json(['error' => 'Webhook inválido'], 400); } switch ($event->type) { case 'checkout.session.completed': $session = $event->data->object; Pago::where('id',$session->id)->update(['estado'=>'pagado']); break; case 'payment_intent.payment_failed': // manejar fallo de pago break; } return response()->json(['status' => 'ok']); } }