Estoy usando laravel con elemento de pago de rayas. Estoy tratando de mostrar las tarjetas guardadas para los clientes que ya tenemos. Seguí los documentos de Stripe y descubrí cómo puedo mostrarlo al finalizar la compra. Pero el problema es que no obtengo las tarjetas guardadas para el cliente. Y en cambio, me encuentro con un error en mi consola como:
Al autenticarse con una clave efímera, debe configurar el encabezado Stripe-Version en una versión API explícita, como 2020-08-27
He comprobado y cambiado muchas versiones desde aquí:
$ephemeralKey = \Stripe\EphemeralKey::create( ['customer' => "$user->stripe_customer_id"], ['stripe_version' => '2019-11-05'] );Cambié la versión a una versión diferente que puedo ver en mi tablero de stripe:
Esta es mi función Js Initialize:
// Fetches a payment intent and captures the client secret async function initialize() { // Customize the appearance of Elements using the Appearance API. const appearance = { /* ... */ }; // Enable the skeleton loader UI for the optimal loading experience. const loader = 'auto'; const { clientSecret, customerOptions } = await fetch("{{ route("user-create-stripe-element-payment") }}", { method: "POST", headers: { "Content-Type" : "application/json", "accept" : "application/json", 'X-CSRF-TOKEN': "{{ csrf_token() }}", 'stripe_version':"2019-11-05" }, body: JSON.stringify({ totalCharge:total }), }).then((r) => r.json()); elements = stripe.elements({ clientSecret, appearance, loader, customerOptions }); const paymentElement = elements.create("payment"); paymentElement.mount("#payment-element"); }Y también estoy usando las versiones beta que se dan en la documentación:
const stripe = Stripe("{{env('STRIPE_KEY')}}", { betas: ['elements_customers_beta_1'], });Pero este error no va a desaparecer. Y ni siquiera está poblando el elemento Pago.
Por favor, ayúdame a depurar esto o si alguien tiene alguna sugerencia para verificar qué está pasando aquí.
Gracias por adelantado.
No está proporcionando una versión de API en su JS aquí
const stripe = Stripe("{{env('STRIPE_KEY')}}", { betas: ['elements_customers_beta_1'], });cambiar el código anterior a
const stripe = Stripe("{{env('STRIPE_KEY')}}", { betas: ['elements_customers_beta_1'], apiVersion: 'Your Version Here' });En tu caso, debería ser algo como esto.
const stripe = Stripe("{{env('STRIPE_KEY')}}", { betas: ['elements_customers_beta_1'], apiVersion: '2019-11-05' });Puede leer más aquí. https://stripe.com/docs/api/versioning?lang=node Es para nodejs, pero la anulación de la versión de la API funcionará de la misma manera.