Ir al contenido principal

Checkout SDK - Tu página. Pagos de COPE. Conectados sin fricciones.

El COPE Checkout SDK es un browser SDK (una librería que simplifica la integración de COPE en tu proyecto) para flujos de checkout del comprador. Te da control sobre la página de producto y la experiencia de compra, mientras COPE se encarga del cobro, el cálculo de impuestos y la creación de pedidos.

Usa el SDK cuando tu sitio posee la experiencia de producto y compra – y COPE posee el resto.

📄 Documentación completa: [Checkout SDK overview - COPE]


Instalación

bash

npm install @copecart/sdk

ts

import { CopeCart } from "@copecart/sdk"  const cope = new CopeCart({   publishableKey: "cope_pk_live_...", })

Sin bundler – build global:

html

<script src="https://unpkg.com/@copecart/sdk@latest/dist/index.global.js"></script> <script>   const cope = new CopeCart.CopeCart({     publishableKey: "cope_pk_live_...",   }) </script>

El SDK requiere HTTPS – excepto http://localhost durante el desarrollo.


Configuración

Opción

Obligatorio

Por defecto

Notas

publishableKey

Empieza con cope_pk_, seguro en código de navegador

baseUrl

No

COPE production API

Solo cambiar si el soporte de COPE lo indica

checkoutBaseUrl

No

Origen de baseUrl

Valida las URLs de checkout devueltas por la API


Flujo típico

ts

const product = await cope.getProduct("prd_...") const cart = await cope.createCart({ currency: product.currency })  await cope.addLine(cart.id, {   product_id: product.id,   plan_id: product.payment_plans[0].id,   quantity: 1, })  await cope.setBuyerIdentity(cart.id, {   email: "buyer@example.com",   tax_location: { country: "DE", postal_code: "10115" }, })  await cope.reprice(cart.id)  const checkout = await cope.checkout(cart.id, {   success_url: "https://your-site.example/thank-you",   cancel_url: "https://your-site.example/cart",   consents: [{ type: "buyer_tos" }], })  cope.redirectToCheckout(checkout)

Tras el pago exitoso, COPE redirige a success_url con order_id añadido:

https://your-site.example/thank-you?order_id=ord_...

Métodos principales

Método

Propósito

getProduct(productId)

Obtener detalles del producto y planes de pago

createCart(payload)

Crear carrito y almacenar credencial de checkout

addLine(cartId, payload)

Añadir producto, plan y cantidad

setBuyerIdentity(cartId, payload)

Fijar ubicación y datos de contacto para impuestos y checkout

reprice(cartId)

Calcular impuestos, descuentos y totales finales

checkout(cartId, payload)

Crear sesión de hosted checkout

redirectToCheckout(checkout)

Redirigir el navegador al hosted checkout

cancelCheckout(checkoutId)

Cancelar una sesión de checkout abierta


Manejo de errores

ts

import {   CopeApiError,   CopeCartExpiredError,   CopeNetworkError, } from "@copecart/sdk"  try {   await cope.reprice(cart.id) } catch (error) {   if (error instanceof CopeApiError) {     console.log(error.status, error.code, error.errors)   }   if (error instanceof CopeCartExpiredError) {     const replacement = await cope.createCart({ currency: "EUR" })   }   if (error instanceof CopeNetworkError) {     console.log("Reintentar más tarde")   } }

Los errores 4xx son permanentes – corrige el payload y reintenta con una nueva petición. El SDK reintenta automáticamente fallos transitorios de red o servidor con backoff.


Casos de uso

Página de producto propia
Tú construyes la UI, COPE gestiona el cobro, el cálculo de impuestos y la creación de pedidos. Ideal cuando quieres control total sobre la experiencia de compra sin construir tu propio backend de pagos.

Productos multi-plan
Obtén planes de pago dinámicamente desde COPE y preséntalos al comprador – mensual, anual, pago único. El SDK devuelve todos los planes disponibles directamente con el producto.

Enlaces de pago
Crea una sesión de checkout en el servidor y envía la hosted_checkout_url por email, WhatsApp o CRM – sin necesidad de una UI de checkout propia.

Lanzamiento rápido
Integración rápida sin backend de pagos propio. COPE gestiona el cumplimiento PCI, la lógica fiscal y todo el flujo de pago.

¿Ha quedado contestada tu pregunta?