Estoy tratando de aplicar un cupón mientras estoy creando una intención de pago en stripe. Todo va bien, pero no puedo actualizar manualmente la cantidad de veces que se usó ese cupón.
Revisé el documento de la raya, pero no encontré nada. ¿Alguien puede ayudar?
Este es el documento específico del cupón de Stripe: Documento API de objeto de cupón de Stripe
Este es mi código donde estoy cambiando el precio de acuerdo con el porcentaje de descuento del cupón. Todo va bien, pero al final, cuando llamo a la función updateCoupon, me muestra un error.
import { stripe } from "../utils/stripeInstance"; export const createPaymentIntent = async (req, res) => { try { const { tplan, couponCode, cust_id } = req.body; console.log("Coupon Code==>", couponCode); let price = 0; //coupon redeemed let cr = 0; if (tplan === "smash") price = 599 * 100; else if (tplan === "smash+") price = 999 * 100; else return res.status(400).send("Invalid plan"); console.log("Price Before Coupon==>", price); if (couponCode) { const coupon = await stripe.coupons.retrieve(couponCode); if (coupon.valid) { price = price - (price * coupon.percent_off) / 100; cr = coupon.times_redeemed; } } console.log("Price After Coupon==>", price); const paymentIntent = await stripe.paymentIntents.create({ amount: price, currency: "inr", payment_method_types: ["card"], customer: cust_id, }); const updateCoupon = await stripe.coupons.update(couponCode, { times_redeemed: cr + 1, metadata: { used: true, }, }); return res.status(200).send({ paymentId: paymentIntent.id, status: paymentIntent.status, clientSecret: paymentIntent.client_secret, }); } catch (err) { res.status(500).json({ statusCode: 500, message: err.message }); } };El error es solo cuando estoy actualizando el cupón llamando a la función updateCoupon anterior. Esto se muestra como un error.
Básicamente, lo que asumo es que no obtiene los atributos adecuados, es posible que haya otra forma correcta de hacerlo. Alguien me puede ayudar, gracias ❤️
Las únicas cosas sobre un cupón que puede actualizar una vez que se crea son los metadata y las propiedades del name , como se especifica aquí .
Stripe incrementa times_redeemed cuando se aplica un cupón a la compra de un cliente como parte de una factura.
Sin embargo, parece que hay una gran confusión aquí. La razón por la que tiene que escribir todas estas funciones (recuperar el cupón, modificar el monto a cobrar, etc.) es que está tratando de aplicar cupones a cargos únicos con Intentos de pago.
También por qué Stripe no permite la actualización manual de times_redeemed . Está pensado como un contador interno y solo se incrementa a medida que procesa un cargo en el que se aplicó el código de cupón.
Los cupones no funcionan con cargos únicos convencionales.
-- Ref. API de banda
Puede revisar cómo se supone que funcionan los cupones de Stripe con las suscripciones aquí .
Si desea ofrecer a sus clientes una forma de aplicar sus propios cupones de descuento al monto que cobra, deberá mantener esos registros en sus propios modelos de datos. Puede utilizar el objeto Stripe Coupon como punto de partida y diseñar sus propios registros de base de datos.
Pero en la actualidad, Stripe no admite cupones para compras únicas.