- Backend —
@jazadev/nodemints a client session withjaza.init(host handshake). - Client —
@jazadev/react-nativeor@jazadev/reactopens MoMo checkout; the SDK mints the top-up JWT from that session.
Prerequisites
- Dashboard setup with countries and at least one bundle
- A Jaza customer id stored on your user (
cus_…) - Secret key on the server; publishable key in the client
- Handshake wired (
POST /api/jaza/init)
1. Backend: client session (required)
- Node
2. Client: provider + top-up button
- React Native
- React
Checkout opens as a bottom sheet.
onRequestToken — the SDK handles top-up minting after the session is authenticated.
What the user sees
- Tap Top up → SDK requests a top-up JWT with the client session.
- Checkout opens → bundles and current balance.
- User picks a pack, enters phone / country / currency, confirms quote.
- Payment runs; SDK polls until success or failure.
- Balance refreshes via
GET /v1/client/wallet.
Advanced: host-minted top-up JWT
For legacy BFFs,jaza.topUp({ customerId }) still returns { token, id, … }. Prefer the session path above for new apps. Optional status polling: jaza.check({ topUpId }).
Optional: webhooks
Subscribe tojaza.webhook.topUp.completed (and related events) for server-side side effects. See Webhooks.