DESARROLLADORES

VISTA PREVIA

Añada el pago con la palma a un POS en una tarde.

Su POS pide a la app VenaPass del mismo terminal que identifique al cliente. Recibe su propio ID de cliente y un token firmado en el que su proveedor de pago puede confiar.

POS Android: abra la pantalla de pago

VenaPass muestra el importe, escanea la palma y devuelve el resultado. Los importes van en unidades menores con una moneda ISO 4217.

val pay = Intent("com.venapass.action.PAY")
    .putExtra("amount", 500000L)        // NGN 5,000.00
    .putExtra("currency", "NGN")
    .putExtra("terminal_id", "LEKKI-POS-1")
    .putExtra("request_id", UUID.randomUUID().toString())
startActivityForResult(pay, PAY_WITH_PALM)

// Result extras: success, customer_ref,
// assertion, receipt_id (gateway mode), message

URL de pasarela: llame a la app en el terminal

Para software POS con una dirección de pasarela de pago configurable. Reintente con el mismo request_id, nunca con uno nuevo.

POST http://127.0.0.1:9090/api/pay_direct
{ "amount": 500000, "currency": "NGN",
  "terminal_id": "LEKKI-POS-1",
  "request_id": "6f1c2e9a-…" }

200 OK
{ "success": true,
  "customer_ref": "CUST-1042",
  "assertion": "eyJhbGciOiJFZERTQSIs…",
  "receipt_id": null,
  "message": "Identity verified" }

Para proveedores de pago: confíe en el token

La aserción es un JWT firmado estándar (EdDSA). Cualquier biblioteca JWT puede verificarla con nuestras claves públicas:

https://api.venapass.com/.well-known/venapass-keys

Su sub es su propia referencia de cliente, así que cobra con el método de pago que ya tiene para ese cliente.

  1. 1La firma se verifica con una clave vigente de VenaPass.
  2. 2No ha caducado (los tokens duran unos dos minutos).
  3. 3txn coincide con el importe y la moneda exactos que va a cobrar.
  4. 4terminal_id coincide con el terminal POS que envió la venta.
  5. 5No ha aceptado este jti anteriormente.

Modo pasarela: reciba cobros desde VenaPass

Si elige el modo pasarela, enviamos cada venta identificada a su URL, firmada con un secreto que solo usted y nosotros conocemos. Trate request_id como clave de idempotencia.

POST https://your-provider.example/venapass
X-VenaPass-Signature: sha256=<HMAC of the body>
{ "assertion": "eyJ…", "customer_ref": "CUST-1042",
  "amount": 500000, "currency": "NGN",
  "terminal_id": "LEKKI-POS-1", "request_id": "6f1c…" }

Reply: { "approved": true, "reference": "PSP-88213",
         "message": "Approved" }

Registre clientes desde su POS

Inicie com.venapass.action.ENROLL con su customer_ref. VenaPass guía tres escaneos de la palma y confirma el registro. No se nos envía ningún nombre ni número de teléfono.

Solicitar acceso al sandbox