Testing payments in the sandbox¶
How to run a test payment end-to-end in the sandbox environment without a real card or real money. You play both sides of the tap:
- a virtual Visa card on an Android phone, and
- the adunopay terminal app (in sandbox mode) on a second device.
Tap the phone against the terminal and a sandbox authorisation flows through the stack — same path as a live tap-to-pay payment, but against test rails.
What you need¶
| # | Side | What | Runs on |
|---|---|---|---|
| 1 | Card | Visa Mobile CDET — a virtual contactless Visa card | An Android phone with NFC |
| 2 | Terminal | adunopay terminal app in sandbox mode | An Android SoftPOS device |
Both devices need NFC. Two separate phones — one is the card, one is the terminal.
1. The test card — Visa Mobile CDET¶
Visa Mobile CDET turns an Android phone into a virtual Visa card over NFC, so you can present a "card" to a contactless terminal without any physical plastic. It's Visa's own test tool, intended for sandbox / certification testing — not real funds.
:material-google-play: Get it on Google Play
Android only
CDET emulates the card via Android NFC (HCE). There is no iOS equivalent — the card side of the test must be an Android phone.
2. The terminal — adunopay sandbox app¶
Install the adunopay terminal app on a second Android device and point it at the sandbox environment. This is the same app a merchant runs in production (MPOS / SoftPOS), just configured against test rails.
To confirm
- Where the sandbox build / sandbox config of the terminal app comes from (separate APK, build flavour, or an in-app environment switch).
- Which sandbox credentials / merchant to log in with, and where they live (they belong in 1Password, not here).
3. Run the payment¶
- Open adunopay on the terminal device and start a sale for a test amount.
- Open Visa Mobile CDET on the card phone and select a test card.
- Tap the card phone to the terminal device.
- The terminal shows an approval; check the transaction lands in the sandbox reporting / backend.
sequenceDiagram
participant C as Visa CDET<br/>(card phone)
participant T as adunopay app<br/>(terminal phone)
participant B as adunopay sandbox<br/>backend
T->>T: Start sale (test amount)
C-->>T: Tap (NFC / contactless)
T->>B: Authorisation request (sandbox)
B-->>T: Approved
T-->>C: Receipt / approval
Sandbox only — no real money
Both the CDET card and the sandbox terminal config are test-only. Never run CDET against a production terminal, and never log into the production environment from the terminal app while testing.