Elige cómo paga el comprador
| Opción | Ideal para | Esfuerzo |
|---|---|---|
Página de pago alojada — redirige a checkout_url | Cualquier web, el lanzamiento más rápido. Muestra importe, red, dirección, QR y estado en vivo | Una llamada a la API |
Tu propio checkout — muestra crypto.address y crypto.amount_coin | UX propia, el comprador no sale de tu dominio | Llamada a la API + tu interfaz |
| CMS — WooCommerce, Shopify | Tiendas en plataformas | Ver las secciones de abajo |
Paso 1: crea un pedido en tu servidor
Nunca crees pedidos desde el navegador con una clave secreta. Llama a la API desde tu backend con el total del carrito y la moneda que eligió el comprador:
curl -X POST https://api.utopay.app/v1/crypto/payments \
-H "Authorization: Bearer utopay_sk_live_..." \
-H "content-type: application/json" \
-d '{ "coin": "bep20/usdt", "amount": 49.90, "currency": "EUR",
"description": "Order #1042",
"success_url": "https://shop.example/thanks",
"cancel_url": "https://shop.example/cart" }'
Con cuenta, la wallet de cobro se toma de los ajustes del proyecto. Sin cuenta, usa POST /v1/crypto/pay y pasa payout_address. La lista de monedas y redes con sus mínimos está en GET /v1/crypto/coins.
Paso 2: envía al comprador a pagar
- Redirige a
checkout_url: la página muestra el importe exacto, la red, el código QR y el estado en vivo, y luego devuelve al comprador a tusuccess_url. - O muestra tú mismo
crypto.addressycrypto.amount_coiny consultaGET /v1/payments/:idmientras el comprador está en la página.
Paso 3: confirma el pago por webhook
No te fíes solo de la redirección. Marca el pedido como pagado cuando tu endpoint reciba un evento firmado payment.succeeded; gestiona payment.underpaid si llegó menos de lo pedido. Verifica la cabecera x-utopay-signature con tu secreto whsec_…: hay ejemplos en Node.js, PHP y Python en la documentación de webhooks.
<?php // PHP: verificar un webhook de UTOPAY
$raw = file_get_contents("php://input");
parse_str(str_replace(",", "&", $_SERVER["HTTP_X_UTOPAY_SIGNATURE"]), $sig);
$expected = hash_hmac("sha256", $sig["t"] . "." . $raw, getenv("UTOPAY_WHSEC"));
if (!hash_equals($expected, $sig["v1"] ?? "") || abs(time() - (int)$sig["t"]) > 300) {
http_response_code(400); exit;
}
$event = json_decode($raw, true);
if ($event["event"] === "payment.succeeded") { /* marcar $event["data"]["id"] como pagado */ }
http_response_code(200);
WordPress y WooCommerce
Hay un plugin de UTOPAY listo para WooCommerce: consulta los plugins. Sin el plugin, una tienda WooCommerce se integra con la API: crea el pedido en el hook woocommerce_checkout_order_processed, redirige a checkout_url y completa el pedido desde el manejador del webhook.
Shopify
Shopify solo muestra como pasarela de pago las apps de pago aprobadas. La configuración práctica es un método de pago manual (por ejemplo «Pagar con cripto») más una página de pago de UTOPAY: al realizarse el pedido, tu app o automatización crea un pedido de UTOPAY por el total y envía al comprador el checkout_url por email. El webhook marca después el pedido de Shopify como pagado.
Lista de comprobación antes del lanzamiento
- Prueba todo el flujo con claves de prueba (
utopay_sk_test_…): los pedidos de prueba nunca tocan la blockchain. - Comprueba que la wallet de cobro admite todas las redes que ofreces.
- Muestra el nombre de la red junto al importe: las transferencias a la red equivocada son la consulta de soporte más habitual.
- Guarda el
iddel pedido de UTOPAY junto a tu pedido y deduplica los webhooks por él. - Decide antes del lanzamiento qué harás con los pedidos
underpaid.
Actualizado · Equipo de UTOPAY