Cobra en tu tienda con EvePay
Tres pasos, desde tu servidor. No hay SDK que instalar ni JavaScript que pegar en tu página: son tres llamadas HTTP.
- Creas el cobro. Tu servidor llama a
POST /v1/pagoscon el monto y tu referencia. La respuesta trae uncheckoutUrl. - Mandas al comprador a pagar. Lo rediriges a ese
checkoutUrl. Cuando termina, vuelve a la página de tu tienda que registraste. - Recibes el aviso y despachas. EvePay llama a tu webhook con
payment.completed. Verificas la firma y marcas el pedido como pagado.
El paso 3 es el que decide, no el paso 2. Que el comprador vuelva a tu página no significa que te hayan pagado: pudo cerrar la pestaña, o abrir esa dirección a mano. Despacha cuando llegue el webhook. Es el error más común al integrar una pasarela, y cuesta mercancía.
El cobro, completo
curl https://api.evetev.com/v1/pagos \
-H "Authorization: Bearer evpk_tu_llave" \
-H "Idempotency-Key: pedido-4417" \
-H "Content-Type: application/json" \
-d '{
"merchantId": "33333333-3333-4333-8333-333333333333",
"montoMinor": 89000,
"moneda": "COP",
"referencia": "pedido-4417",
"urlRetorno": "https://tutienda.co/pedido/4417/gracias"
}'
En PHP, que es donde está buena parte del comercio colombiano:
<?php
$ch = curl_init("https://api.evetev.com/v1/pagos");
curl_setopt_array($ch, [
CURLOPT_POST => true,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
"Authorization: Bearer " . getenv("EVEPAY_LLAVE"),
"Idempotency-Key: pedido-4417",
"Content-Type: application/json",
],
CURLOPT_POSTFIELDS => json_encode([
"merchantId" => $merchantId,
"montoMinor" => 89000, // en pesos: COP no tiene centavos
"moneda" => "COP",
"referencia" => "pedido-4417",
"urlRetorno" => "https://tutienda.co/pedido/4417/gracias",
]),
]);
$cobro = json_decode(curl_exec($ch), true);
header("Location: " . $cobro["checkoutUrl"]);
Y en Node:
const res = await fetch("https://api.evetev.com/v1/pagos", {
method: "POST",
headers: {
authorization: `Bearer ${process.env.EVEPAY_LLAVE}`,
"idempotency-key": "pedido-4417",
"content-type": "application/json"
},
body: JSON.stringify({
merchantId,
montoMinor: 89000, // en pesos: COP no tiene centavos
moneda: "COP",
referencia: "pedido-4417",
urlRetorno: "https://tutienda.co/pedido/4417/gracias"
})
});
const cobro = await res.json();
redirigir(cobro.checkoutUrl);
Por dónde seguir
Empieza por lo que hay que dejar listo antes: sin registrar tu sitio, la API rechaza los cobros. Después, crear un cobro y recibir el aviso.
Todo lo que está aquí sale del código de EvePay o de una prueba real contra la pasarela. Si algo no te cuadra con lo que ves, escríbenos: el error es nuestro.