Mendapatkan dan memahami data strip magnetik

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

Berlangganan *Peristiwa DataReceived

Setiap kali pembaca mengenali kartu yang digesek, itu akan meningkatkan salah satu dari tiga peristiwa:

Aplikasi Anda hanya perlu berlangganan acara 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;
        }
    }
}

Penangan peristiwa akan melewati ClaimedMagneticStripeReader dan objek args , yang jenisnya akan bervariasi tergantung pada peristiwa:

Dapatkan 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 dari parameter args . Ini adalah jenis MagneticStripeReaderReport.

Anda dapat menggunakan properti CardType untuk mencari tahu jenis kartu apa yang telah digesek, lalu menggunakannya untuk menginformasikan bagaimana Anda menafsirkan data dari Track1, Track2, Track3, dan Track4.

Data dari masing-masing 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

Punya pertanyaan? Tanyakan kepada kami di forum Docs QA& kami dengan tag UWP atau di Stack Overflow dengan tag pointofservice.

Bantu kami menemukan pertanyaan Anda:

  • Tambahkan tag pointofservice ke pertanyaan Anda di Stack Overflow.
  • Sertakan istilah "UWP" di posting Anda di forum QA&

Lihat juga