Example #1
0
        public void TestUnpack()
        {
            var fieldData =
                "FF2081919F02060000000010009F03060000000000004F07A0000000041010820258009F360200019F2608E4539FFFFAA341DB9F2701808E100000000000000000420341031E031F009F34034203009F10120212A0000F240000DAC000000000000000FF9F3303E0F0C89F1A0202889F350122950500000480009F420208409A031106239F4104000000019C01009F37048202D9DC";
            var tagData = fieldData.ToByteArray();
            var tags    = EmvUtils.UnpackEmvTags(tagData);

            Assert.AreEqual(1, tags.Count);
        }
Example #2
0
        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");
            }
        }