Bibliotecas SDK

SDK NPM

Instala el SDK oficial de JavaScript y TypeScript de MakePay para enlaces de pago, configuración y verificación de webhooks.

SDK NPM de MakePay

Resumen

El SDK npm de MakePay es una biblioteca tipada de JavaScript y TypeScript para integraciones server-side de MakePay. Envuelve autenticación con clave API, operaciones de enlaces de pago alojados, configuración MakePay y verificación de webhooks firmados.

Paquete:

@makecrypto/makepay

Instalación

npm install @makecrypto/makepay
pnpm add @makecrypto/makepay

El SDK apunta a Node.js 18 o superior y usa la implementación runtime de fetch.

Autenticación

Crea una clave API de MakePay desde el área de desarrolladores del merchant en MakeCrypto y guarda el secreto solo en tu servidor.

import { MakePayClient } from "@makecrypto/makepay";

const makepay = new MakePayClient({
  keyId: process.env.MAKEPAY_KEY_ID!,
  keySecret: process.env.MAKEPAY_KEY_SECRET!,
  // Optional: override only when MakePay gives you a custom checkout origin.
  checkoutBaseUrl: "https://makepay.io",
});

El SDK envía las cabeceras x-makecrypto-key-id y x-makecrypto-key-secret a la API partner de MakePay.

Crear enlace de pago

const response = await makepay.createPaymentLink({
  title: "Order #1042",
  description: "Checkout for order #1042",
  amount: "129.99",
  currency: "USDT",
  orderId: "order_1042",
  customerEmail: "buyer@example.com",
  returnUrl: "https://merchant.example/orders/1042",
  successUrl: "https://merchant.example/orders/1042/success",
  failureUrl: "https://merchant.example/orders/1042/pay",
  expirationTime: "12h",
});

console.log(response.paymentLink);

Envía un email de solicitud de pago MakePay durante la creación:

await makepay.createPaymentLink(payload, {
  sendPaymentRequestEmail: true,
});

Checkout embebido

Usa URLs de checkout alojado para redirecciones, o los helpers de embed cuando tu frontend mantiene al comprador en la página del merchant.

import {
  buildMakePayEmbeddedCheckoutUrl,
  buildMakePayHostedCheckoutUrl,
  mountMakePayCheckout,
  openMakePayCheckout,
} from "@makecrypto/makepay";

const paymentUid = response.paymentLink.uid;

const hostedUrl = buildMakePayHostedCheckoutUrl(paymentUid);
const embedUrl = buildMakePayEmbeddedCheckoutUrl(paymentUid, {
  parentOrigin: "https://merchant.example",
});

await openMakePayCheckout({
  paymentUid,
  onEvent(event) {
    if (event.type === "makepay.payment.redirect_requested") {
      window.location.assign(String(event.payload?.redirectUrl || hostedUrl));
    }
  },
});

mountMakePayCheckout({
  container: "#makepay-checkout",
  paymentUid,
});

Para páginas CMS estáticas, buildMakePayEmbedButtonHtml(paymentUid) devuelve un snippet de botón que carga el script modal de MakePay.

Leer y actualizar enlaces

await makepay.listPaymentLinks();
await makepay.getPaymentLink("PAYMENT_LINK_UID");

await makepay.updatePaymentLink("PAYMENT_LINK_UID", {
  status: "paused",
});

await makepay.sendPaymentRequestEmail("PAYMENT_LINK_UID", "buyer@example.com");

Configuración

await makepay.getSettings();

await makepay.updateSettings({
  callbackUrl: "https://merchant.example/webhooks/makepay",
});

Verificación de webhooks

Lee el cuerpo bruto exacto antes de parsear JSON.

import { parseMakePayWebhook } from "@makecrypto/makepay";

export async function POST(request: Request) {
  const rawBody = await request.text();
  const event = parseMakePayWebhook(
    rawBody,
    request.headers.get("x-makepay-signature"),
    process.env.MAKEPAY_WEBHOOK_SECRET!,
  );

  if (event.event?.type === "status_changed") {
    // Update your local order.
  }

  return new Response("ok");
}

Usa verifyMakePayWebhook cuando solo necesites un resultado booleano.

Manejo de errores

Las llamadas API lanzan MakePayError. Incluye el estado HTTP y el cuerpo de respuesta decodificado.

import { MakePayError } from "@makecrypto/makepay";

try {
  await makepay.getPaymentLink("PAYMENT_LINK_UID");
} catch (error) {
  if (error instanceof MakePayError) {
    console.error(error.status, error.responseBody);
  }
}

Estructura del código

El código fuente canónico vive en apps/plugins/npm-sdk. El paquete npm publicado contiene JavaScript ESM compilado y declaraciones TypeScript desde dist.

Notas de release

El paquete se publica como @makecrypto/makepay con acceso público. La publicación de releases debe usar un token de automatización npm en la organización makecrypto o un token compatible con OTP cuando se requiera 2FA.

¿Necesitas ayuda con la configuración de partner?

Abre la vista de detalles del enlace de pago en MakeCrypto para copiar los snippets generados para un UID de pago real, o vuelve al portal para gestionar la configuración del merchant.

Abrir portal