Saltar al contenido principal

Cobrar con links de pago

Cobra con links de pago usando la librería landapay: crea el link, compártelo y confirma el pago con tarjeta, Nequi, Bancolombia o PSE antes de entregar.

Cómo funciona

  1. Tu servidor crea un link de pago de monto fijo con la librería.
  2. Envías al cliente a la url del link, donde paga con tarjeta, Nequi, Bancolombia o PSE.
  3. El cliente vuelve a tu redirectUrl con el id del pago.
  4. Confirmas el estado del pago o esperas el webhook y entregas el pedido.

Compartir el link

Redirige al cliente a link.url desde tu sitio o envíasela por WhatsApp, correo o SMS. El mismo link sirve mientras esté activo y no haya vencido.

Confirmar el pago

Cuando el pagador vuelve a tu redirectUrl recibes payment_id y payment_link_id en la URL. Confirma siempre el estado con landapay.payments.retrieve antes de entregar el pedido.

Solo approved confirma un cobro

Un pago puede quedar en pending mientras la entidad lo confirma, o terminar en declined o error. No entregues el pedido solo porque el cliente volvió a tu URL.
Confirmar el pago al volver del checkoutTypeScript
app.get("/pago/resultado", async (req, res) => {  const payment = await landapay.payments.retrieve(String(req.query.payment_id));  const order = await findOrder(payment.paymentLink);   // amount y order.total van en centavos de la moneda del link  if (payment.status === "approved" && payment.amount >= order.total) {    await markOrderPaid(payment.paymentLink, payment.id);    return res.redirect("/gracias");  }  res.redirect("/pago/pendiente");});

Para no depender de que el cliente vuelva, escucha el evento payment.approved en tu servidor. Mira cómo en Recibir webhooks.

Probar la integración

Crea el link con una llave lp_sk_test_. El checkout muestra el aviso de modo de prueba y solo acepta tarjetas y números de prueba, sin mover dinero real. Cuando todo funcione, cambia LANDAPAY_API_KEY por tu llave lp_sk_live_.

Editar y desactivar

Editar, desactivar y reactivarTypeScript
await landapay.paymentLinks.update(link.id, { amount: 12_000_000 }); await landapay.paymentLinks.disable(link.id); // deja de recibir pagosawait landapay.paymentLinks.enable(link.id); // vuelve a recibirlos

Cambiar amount solo afecta el próximo cobro de ese link. Un pago ya aprobado por el monto anterior no paga un pedido nuevo, y un total distinto necesita un link nuevo.

Revisa todos los campos en la referencia de links de pago.