-
GPO returns
|
Beta Was this translation helpful? Give feedback.
Replies: 1 comment
-
|
Short answer: real Visa cards require a PDOL-aware GPO, and the TTQ "Online cryptogram required" bit must be cleared for read-only flows. Both landed in v0.3.0 (PR #57 for PDOL, PR #59 for the TTQ default change). If you're on Why it failsSynthetic fixtures usually accept an empty GPO command (
What v0.3.0 does
Upgrade path (Android)// Old
ContactlessReader.fromTag(tag).read()
// v0.3.0 — same call, now PDOL-aware by default
ContactlessReader.fromTag(tag).read()
// Override TTQ if a specific issuer kernel needs the legacy bit set
val cfg = TerminalConfig.default().copy(
terminalTransactionQualifiers = byteArrayOf(0x36, 0x00, 0x80.toByte(), 0x00)
)
ContactlessReader.fromTag(tag).read(cfg)Upgrade path (iOS)
Two more real-card gotchas v0.3.0 fixed
If you upgrade to Out of scope reminderThis library is read-only by design. It does not generate ARQC, perform online authorization, or run kernel certification (C-2 / C-3). If your |
Beta Was this translation helpful? Give feedback.
Short answer: real Visa cards require a PDOL-aware GPO, and the TTQ "Online cryptogram required" bit must be cleared for read-only flows. Both landed in v0.3.0 (PR #57 for PDOL, PR #59 for the TTQ default change). If you're on
v0.2.xor older, upgrade.Why it fails
Synthetic fixtures usually accept an empty GPO command (
80 A8 00 00 02 83 00 00) — real Visa qVSDC kernel-3 cards reject it because:9F38(PDOL) — a list of terminal data the card wants in the GPO command. Sending an empty PDOL response triggers6A 80.9F66). The legacy TTQ value36 00 80 00has the "Online crypto…