public void TestUnpack() { var fieldData = "FF2081919F02060000000010009F03060000000000004F07A0000000041010820258009F360200019F2608E4539FFFFAA341DB9F2701808E100000000000000000420341031E031F009F34034203009F10120212A0000F240000DAC000000000000000FF9F3303E0F0C89F1A0202889F350122950500000480009F420208409A031106239F4104000000019C01009F37048202D9DC"; var tagData = fieldData.ToByteArray(); var tags = EmvUtils.UnpackEmvTags(tagData); Assert.AreEqual(1, tags.Count); }
public void TestUnpack() { var msg = "9f0607a00000000310109a03100824".ToByteArray(); var tags = EmvUtils.UnpackEmvTags(msg); Assert.AreEqual(2, tags.Count); var date = tags[Tag.tran_date]; var appl = tags[Tag.appl_id]; CollectionAssert.AreEqual("100824".ToByteArray(), date); CollectionAssert.AreEqual("a0000000031010".ToByteArray(), appl); }
private static string GetEntryMode(AuthorizationBuilder builder, Channel channel) { if (channel == Channel.CardPresent) { if (builder.PaymentMethod is ITrackData) { var paymentMethod = (ITrackData)builder.PaymentMethod; if (!string.IsNullOrEmpty(builder.TagData)) { if (paymentMethod.EntryMethod == EntryMethod.Proximity) { return("CONTACTLESS_CHIP"); } var emvData = EmvUtils.ParseTagData(builder.TagData); if (emvData.isContactlessMsd()) { return("CONTACTLESS_SWIPE"); } return("CHIP"); } if (paymentMethod.EntryMethod == EntryMethod.Swipe) { return("SWIPE"); } } if (builder.PaymentMethod is ICardData && ((ICardData)builder.PaymentMethod).CardPresent) { return("MANUAL"); } return("SWIPE"); } else { if (builder.PaymentMethod is ICardData) { var paymentMethod = (ICardData)builder.PaymentMethod; if (paymentMethod.ReaderPresent) { return("ECOM"); } else { switch (paymentMethod?.EntryMethod) { case ManualEntryMethod.Phone: return("PHONE"); case ManualEntryMethod.Moto: return("MOTO"); case ManualEntryMethod.Mail: return("MAIL"); default: break; } } } if (builder.TransactionModifier == TransactionModifier.EncryptedMobile && builder.PaymentMethod is CreditCardData && ((CreditCardData)builder.PaymentMethod).HasInAppPaymentData()) { return("IN_APP"); } return("ECOM"); } }