Cómo hacer la integración con la API Invoicing
El Dashboard es la forma más habitual para crear facturas. Si quieres automatizar la creación de facturas, puedes hacer la integración con la API. Diseña una integración completa y funcional con Invoicing utilizando nuestro modelo de integración.
Nota
You don’t need to integrate with the Payments API to integrate with the Invoicing API.
Set up Stripe
Usa nuestras librerías oficiales para acceder a la API de Stripe:
Create a product
To create a product, enter its name:
Crear un precio
Prices define how much and how often to charge for products. This includes how much the product costs, what currency to use, and the billing interval (when the price is for a subscription). Like products, if you only have a few prices, it’s preferable to manage them in the Dashboard. Use the unit amount to express prices in the lowest unit of the currency—in this case, cents (10 USD is 1,000 cents, so the unit amount is 1000).
Nota
Como alternativa, si no necesitas crear un precio para tu producto, puedes usar el parámetro importe durante la creación del ítem de factura.
To create a price and assign it to the product, pass the product ID, unit amount, and currency. In the following example, the price for the “Gold Special” product is 10 USD:
Crear un cliente
El objeto Customer representa al cliente que compra el producto y es necesario para generar la factura. Para crear un cliente con name
, email
y description
, agrega el siguiente código y reemplaza los valores por los que correspondan:
Después de crear el cliente, guarda su id
en tu base de datos para poder usarlo después. En el próximo paso, por ejemplo, el ID del cliente se utiliza para crear una factura.
Nota
Busca los parámetros adicionales en Crear un cliente.
Crear una factura
Establece el atributo collection_method en send_invoice
. Para que Stripe pueda marcar una factura como vencida, debes usar el parámetro days_until_due. Cuando creas una factura, Stripe se la envía al cliente por correo electrónico junto con las instrucciones de pago.
A continuación, debes crear un ítem de factura indicando el id
del cliente, el price
del producto y la invoice
del ID de la factura.
La cantidad máxima de ítems de factura es 250.
If you set auto_advance
to false
, you can continue to modify the invoice until you finalize it. To finalize a draft invoice, use the Dashboard, send it to the customer, or pay it. You can also use the Finalize API:
Nota
If you created the invoice in error, void it. You can also mark an invoice as uncollectible.
Gestionar eventos posteriores al pago
De este modo, Stripe envía un evento invoice.paid
cuando se completa el pago de una factura. Escucha este evento para garantizar un cumplimiento confiable. Si tu integración se basa únicamente en una devolución de llamada del lado del cliente, el cliente podría perder la conexión antes de que se ejecute la devolución de llamada, lo que provocaría que se le cobre al cliente sin que se le notifique a tu servidor. La configuración de tu integración para escuchar eventos asincrónicos también es lo que te permite aceptar diferentes tipos de métodos de pago con una sola integración.
Nota
Los pagos de facturas exitosos activan tanto un evento invoice.paid
como invoice.payment_succeeded
. Ambos tipos de eventos contienen los mismos datos de factura, por lo que solo es necesario escuchar a uno de ellos para recibir una notificación de pagos de facturas exitosos. La diferencia es que los eventos invoice.payment_succeeded
se envían para pagos de facturas exitosos, pero no se envían cuando marcas una factura como paid_out_of_band. Por otro lado, los eventos invoice.paid
se activan tanto para pagos exitosos como para pagos fuera de banda. Debido a que invoice.paid
cubre ambas opciones, generalmente recomendamos escuchar invoice.paid
en lugar de invoice.payment_succeeded
.
Utiliza la herramienta webhook del Dashboard o sigue el inicio rápido del webhook para recibir estos eventos y ejecutar acciones como, por ejemplo, enviar un correo electrónico de confirmación del pedido a tu cliente, registrar la venta en una base de datos o iniciar un flujo de envío.
Además de administrar el evento invoice.paid
, recomendamos administrar otros dos eventos si se cobran pagos con el Payment Element:
Evento | Descripción | cliente |
---|---|---|
payment_intent.processing | Se envía cuando el cliente inició correctamente el pago, pero el pago aún no se ha completado. Este evento se envía con mayor frecuencia cuando se inicia un débito bancario. Más adelante, lo sigue un evento invoice.paid o invoice.payment_failed . | Envía al cliente una confirmación del pedido que indique que el pago está pendiente. En caso de productos digitales, quizá te convenga completar el pedido antes de esperar que se complete el pago. |
invoice.payment_failed | Se envía cuando el cliente intentó pagar una factura, pero el pago falló. | Si un pago pasó de processing a payment_failed , ofrécele al cliente otro intento de pago. |