PROGRAMADORES

PRÉ-VISUALIZAÇÃO

Adicione o pagamento com a palma a um POS numa tarde.

O seu POS pede à aplicação VenaPass no mesmo terminal que identifique o cliente. Recebe de volta o seu próprio ID de cliente e um token assinado em que o seu prestador de pagamentos pode confiar.

POS Android: abrir o ecrã de pagamento

A VenaPass mostra o montante, lê a palma e devolve o resultado. Os montantes são indicados em unidades menores, com uma moeda 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 do gateway: chamar a aplicação no terminal

Para software POS com endereço de gateway de pagamento configurável. Repita com o mesmo request_id, nunca com um novo.

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 prestadores de pagamentos: confiar no token

A asserção é um JWT assinado padrão (EdDSA). Qualquer biblioteca JWT a pode verificar com as nossas chaves públicas:

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

O campo sub é a sua própria referência de cliente, pelo que cobra no meio de pagamento que já detém para esse cliente.

  1. 1A assinatura é válida com uma chave VenaPass atual.
  2. 2Não expirou (os tokens são válidos durante cerca de dois minutos).
  3. 3txn corresponde exatamente ao montante e à moeda que vai cobrar.
  4. 4terminal_id corresponde ao terminal POS que enviou a venda.
  5. 5Ainda não aceitou este jti anteriormente.

Modo gateway: receber cobranças da VenaPass

Se escolher o modo gateway, enviamos cada venda identificada para o seu URL, assinada com um segredo que só nós e o senhor detemos. Trate o request_id como chave de idempotência.

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" }

Registe clientes a partir do seu POS

Inicie com.venapass.action.ENROLL com o seu customer_ref. A VenaPass orienta três leituras da palma e devolve o sucesso. Não nos é enviado nenhum nome nem número de telefone.

Pedir acesso à sandbox