PROGRAMADORES
PRÉ-VISUALIZAÇÃOAdicione 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.
- 1A assinatura é válida com uma chave VenaPass atual.
- 2Não expirou (os tokens são válidos durante cerca de dois minutos).
- 3txn corresponde exatamente ao montante e à moeda que vai cobrar.
- 4terminal_id corresponde ao terminal POS que enviou a venda.
- 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