# 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.

1. **Creas el cobro.** Tu servidor llama a `POST /v1/pagos` con el monto y tu referencia. La respuesta trae un `checkoutUrl`.
2. **Mandas al comprador a pagar.** Lo rediriges a ese `checkoutUrl`. Cuando termina, vuelve a la página de tu tienda que registraste.
3. **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

```bash
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
<?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:

```js
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](/empezar): sin registrar tu sitio, la API rechaza los cobros. Después, [crear un cobro](/cobros) y [recibir el aviso](/webhooks).

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.
