Mendapatkan dan memahami data strip magnetik

Topik ini menjelaskan cara mendapatkan dan menginterpretasikan data dari pembaca strip magnetik menggunakan API Titik Layanan (POS) Platform Windows Universal (UWP).

Berlangganan *Peristiwa DataReceived

Setelah menyiapkan pembaca strip magnetik di aplikasi Anda menggunakan langkah-langkah yang diuraikan dalam Memulai Point of Service, Anda siap untuk mulai mendapatkan data darinya.

Setiap kali pembaca mengenali kartu yang di-geser, itu akan menaikkan salah satu dari tiga peristiwa:

Aplikasi Anda hanya perlu berlangganan peristiwa yang didukung oleh pembaca strip magnetik. Anda dapat melihat jenis kartu apa yang didukung dengan MagneticStripeReader.SupportedCardTypes.

Kode berikut menunjukkan berlangganan tiga peristiwa *DataReceived :

private void SubscribeToEvents(ClaimedMagneticStripeReader claimedReader, MagneticStripeReader reader)
{
    foreach (var type in reader.SupportedCardTypes)
    {
        if (item == MagneticStripeReaderCardTypes.Aamva)
        {
            claimedReader.AamvaCardDataReceived += Reader_AamvaCardDataReceived;
        }
        else if (item == MagneticStripeReaderCardTypes.Bank)
        {
            claimedReader.BankCardDataReceived += Reader_BankCardDataReceived;
        }
        else if (item == MagneticStripeReaderCardTypes.ExtendedBase)
        {
            claimedReader.VendorSpecificDataReceived += Reader_VendorSpecificDataReceived;
        }
    }
}

Penanganan aktivitas akan dilewatkan ClaimedMagneticStripeReader dan objek args , yang jenisnya akan bervariasi tergantung pada peristiwa:

Mendapatkan data

Untuk peristiwa AamvaCardDataReceived dan BankCardDataReceived, Anda bisa mendapatkan beberapa data langsung dari objek args. Contoh berikut menunjukkan mendapatkan beberapa properti dan menetapkannya ke variabel anggota:

private string _accountNumber;
private string _expirationDate;
private string _firstName;

private void Reader_BankCardDataReceived(
    ClaimedMagneticStripeReader sender, 
    MagneticStripeReaderBankCardDataReceivedEventArgs args)
{
    _accountNumber = args.AccountNumber;
    _expirationDate = args.ExpirationDate;
    _firstName = args.FirstName;
    // etc...
}

Namun, beberapa data, termasuk semua data dari peristiwa VendorSpecificDataReceived , harus diambil melalui objek Laporan , yang merupakan properti parameter args . Ini adalah jenis MagneticStripeReaderReport.

Anda dapat menggunakan properti CardType untuk mencari tahu jenis kartu apa yang telah di-swiped, lalu menggunakannya untuk menginformasikan cara Menginterpretasikan data dari Track1, Track2, Track3, dan Track4.

Data dari setiap trek direpresentasikan sebagai objek MagneticStripeReaderTrackData . Dari kelas ini, Anda bisa mendapatkan jenis data berikut:

Cuplikan kode berikut mendapatkan laporan dan data trek, lalu memeriksa jenis kartu:

private void GetTrackData(MagneticStripeReaderBankCardDataReceivedEventArgs args)
{
    MagneticStripeReaderReport report = args.Report;
    IBuffer track1 = report.Track1.Data;
    IBuffer track2 = report.Track2.Data;
    IBuffer track3 = report.Track3.Data;
    IBuffer track4 = report.Track4.Data;

    if (report.CardType == MagneticStripeReaderCardTypes.Aamva)
    {
        // Card type is AAMVA
    }
    else if (report.CardType == MagneticStripeReaderCardTypes.Bank)
    {
        // Card type is bank card
    }
    else if (report.CardType == MagneticStripeReaderCardTypes.ExtendedBase)
    {
        // Card type is vendor-specific
    }
    else if (report.CardType == MagneticStripeReaderCardTypes.Unknown)
    {
        // Card type is unknown
    }
}

Dukungan dan umpan balik

Temukan jawaban atas pertanyaan Anda

Ada pertanyaan? Tanyakan kepada kami di forum Tanya Jawab Dokumen kami dengan tag UWP atau di Stack Overflow dengan tag pointofservice.

Bantu kami menemukan pertanyaan Anda:

Baca juga