react-native-nfc-card-scanner
Pembaca kartu kredit & debit kontakless EMV untuk React Native. Mengekstrak PAN dan tanggal kedaluwarsa lewat NFC di lingkungan terkontrol, tergantung kebijakan penerbit kartu dan dukungan perangkat.
Catatan platform: Android adalah jalur yang didukung. Apple Core NFC tidak mendukung AID terkait pembayaran, jadi membaca PAN kartu bank di iPhone umumnya diblokir.
Dibangun di atas react-native-nfc-manager.
Fitur
- Baca kartu pembayaran kontakless EMV lewat NFC
- Ekstrak nomor kartu (PAN) dan tanggal kedaluwarsa
- Deteksi skema kartu otomatis dari AID
- Parser EMV TLV bawaan
- Mendukung template respons EMV flat (
70) dan nested (77) - Dukungan TypeScript dengan definisi tipe lengkap
Skema kartu yang didukung
| Scheme | AID prefix |
|---|---|
| Visa | A000000003 |
| Mastercard | A000000004 |
| JCB | A000000065 |
| American Express | A000000025 |
| UnionPay | A000000333 |
| Discover / Diners Club | A000000152, A000000324, A000000444 |
Instalasi
npm install react-native-nfc-card-scanner react-native-nfc-manager
react-native-nfc-manager adalah peer dependency wajib. Paket ini tidak bisa jalan di Expo Go; gunakan dev client / prebuild.
Penggunaan
import {
scanNfc,
stopNfc,
isNfcSupported,
isNfcEnabled,
} from "react-native-nfc-card-scanner";
async function handleScanCard() {
try {
const supported = await isNfcSupported();
if (!supported) return;
const enabled = await isNfcEnabled();
if (!enabled) return;
const result = await scanNfc();
console.log("Nomor Kartu:", result.pan);
console.log("PAN Masked:", result.maskedPan);
console.log("Tanggal Kedaluwarsa:", result.exp);
console.log("Skema Kartu:", result.scheme);
} catch (error) {
if (error instanceof Error) {
console.error("Scan NFC gagal:", error.message);
}
}
}
function handleCancel() {
stopNfc();
}
Keterbatasan
- Tidak semua kartu mengekspos data PAN yang bisa dibaca
- Beberapa penerbit mengembalikan nilai masked atau parsial
- iOS tidak bisa andal membaca PAN kartu pembayaran
- Hasil bergantung pada wilayah dan konfigurasi kartu
Lisensi
MIT
Untuk detail lebih lanjut, kunjungi repositori GitHub.