示例#1
0
        public void DecodeQR()
        {
            var qrData  = "00020101021229300012D156000000000510A93FO3230Q31280012D15600000001030812345678520441115802CN5914BEST TRANSPORT6007BEIJING64200002ZH0104最佳运输0202北京540523.7253031565502016233030412340603***0708A60086670902ME91320016A0112233449988770708123456786304A13A";
            var payload = MerchantPayload.FromQR(qrData);

            Assert.Equal(1, payload.PayloadFormatIndicator);
            Assert.Equal(12, payload.PointOfInitializationMethod);
            Assert.Equal("A13A", payload.CRC);
            Assert.Equal(4111, payload.MerchantCategoryCode);
            Assert.Equal("CN", payload.CountyCode);
            Assert.Equal(23.72m, payload.TransactionAmount);
            Assert.Equal(156, payload.TransactionCurrency);
            Assert.Equal(1, payload.TipOrConvenienceIndicator);

            Assert.Equal("D15600000000", payload.MerchantAccountInformation[29].GlobalUniqueIdentifier);
            Assert.Equal("A93FO3230Q", payload.MerchantAccountInformation[29].PaymentNetworkSpecific[5]);
            Assert.Equal("D15600000001", payload.MerchantAccountInformation[31].GlobalUniqueIdentifier);
            Assert.Equal("12345678", payload.MerchantAccountInformation[31].PaymentNetworkSpecific[3]);

            Assert.Equal("ZH", payload.MerchantInformation.LanguagePreference);
            Assert.Equal("最佳运输", payload.MerchantInformation.MerchantNameAlternateLanguage);
            Assert.Equal("北京", payload.MerchantInformation.MerchantCityAlternateLanguage);

            Assert.Equal("1234", payload.AdditionalData.StoreLabel);
            Assert.Equal("***", payload.AdditionalData.CustomerLabel);
            Assert.Equal("A6008667", payload.AdditionalData.TerminalLabel);
            Assert.Equal("ME", payload.AdditionalData.AdditionalConsumerDataRequest);

            Assert.Equal("A011223344998877", payload.UnreservedTemplate[91].GlobalUniqueIdentifier);
            Assert.Equal("12345678", payload.UnreservedTemplate[91].ContextSpecificData[7]);
        }
示例#2
0
        public void FullEncodeAndDecode()
        {
            var globalUniqueIdentifier = Guid.NewGuid().ToString().Replace("-", string.Empty);
            var merchantPayload        = MerchantPayload
                                         .CreateDynamic(globalUniqueIdentifier, 4111, Iso4217Currency.MexicoPeso.Value.NumericCode, Iso3166Countries.Mexico, "Chocolate Powder", "Mexico City")
                                         .WithAlternateLanguage(Iso639Languages.SpanishCastilian, "Chocolate en Polvo", "CDMX")
                                         .WithTransactionAmount(34.95m)
                                         .WithTipByUser()
                                         .WithAdditionalData(
                billNumber: "1234",
                mobileNumber: "5512341234",
                storeLabel: "The large store",
                loyaltyNumber: "A12341234",
                referenceLabel: "***",
                terminalLabel: "T12341",
                purposeOfTransaction: "We do commerce",
                additionalConsumerDataRequest: "AME")
                                         .WithUnreservedTemplate(globalUniqueIdentifier, new Dictionary <int, string>
            {
                { 1, "Some value" },
                { 2, "Another value" }
            });

            merchantPayload.PostalCode = "12345";

            var qr = merchantPayload.GeneratePayload();

            merchantPayload = MerchantPayload.FromQR(qr);
            Assert.Equal(globalUniqueIdentifier, merchantPayload.MerchantAccountInformation.First().Value.GlobalUniqueIdentifier);
            Assert.Equal(4111, merchantPayload.MerchantCategoryCode);
            Assert.Equal(Iso4217Currency.MexicoPeso.Value.NumericCode, merchantPayload.TransactionCurrency);
            Assert.Equal(Iso3166Countries.Mexico, merchantPayload.CountyCode);
            Assert.Equal("Chocolate Powder", merchantPayload.MerchantName);
            Assert.Equal("Mexico City", merchantPayload.MerchantCity);
            Assert.Equal(Iso639Languages.SpanishCastilian, merchantPayload.MerchantInformation.LanguagePreference);
            Assert.Equal("Chocolate en Polvo", merchantPayload.MerchantInformation.MerchantNameAlternateLanguage);
            Assert.Equal("CDMX", merchantPayload.MerchantInformation.MerchantCityAlternateLanguage);
            Assert.Equal(34.95m, merchantPayload.TransactionAmount);
            Assert.Equal(1, merchantPayload.TipOrConvenienceIndicator);
            Assert.Equal("1234", merchantPayload.AdditionalData.BillNumber);
            Assert.Equal("5512341234", merchantPayload.AdditionalData.MobileNumber);
            Assert.Equal("The large store", merchantPayload.AdditionalData.StoreLabel);
            Assert.Equal("A12341234", merchantPayload.AdditionalData.LoyaltyNumber);
            Assert.Equal("***", merchantPayload.AdditionalData.ReferenceLabel);
            Assert.Equal("T12341", merchantPayload.AdditionalData.TerminalLabel);
            Assert.Equal("We do commerce", merchantPayload.AdditionalData.PurposeOfTransaction);
            Assert.Equal("AME", merchantPayload.AdditionalData.AdditionalConsumerDataRequest);
            Assert.Equal(globalUniqueIdentifier, merchantPayload.UnreservedTemplate.First().Value.GlobalUniqueIdentifier);
            Assert.Equal("Some value", merchantPayload.UnreservedTemplate.First().Value.ContextSpecificData[1]);
            Assert.Equal("Another value", merchantPayload.UnreservedTemplate.First().Value.ContextSpecificData[2]);
            Assert.Equal("12345", merchantPayload.PostalCode);
            Assert.NotNull(merchantPayload.CRC);
        }
        public void DecodeQR5()
        {
            var qrData  = "00020101021102154382871085619335204541153039365802GH5907PANDORA6005Accra63049C22";
            var payload = MerchantPayload.FromQR(qrData);

            Assert.Equal(1, payload.PayloadFormatIndicator);
            Assert.Equal(11, payload.PointOfInitializationMethod);
            Assert.Equal("9C22", payload.CRC);
            Assert.Equal(5411, payload.MerchantCategoryCode);
            Assert.Equal(936, payload.TransactionCurrency);
            Assert.Equal("PANDORA", payload.MerchantName);
            Assert.Equal("Accra", payload.MerchantCity);
            Assert.Equal("GH", payload.CountyCode);

            Assert.True(payload.MerchantAccountInformation.Count == 1);
            Assert.Equal("438287108561933", payload.MerchantAccountInformation[2].GlobalUniqueIdentifier);

            Assert.Null(payload.AdditionalData);
        }
        public void DecodeQR1()
        {
            var qrData  = "0002010102110213404587173785204155326311010619815204829953039365802GH5909CIB GHANA6005ACCRA622407088656730603088656730663041437";
            var payload = MerchantPayload.FromQR(qrData);

            Assert.Equal(1, payload.PayloadFormatIndicator);
            Assert.Equal(11, payload.PointOfInitializationMethod);
            Assert.Equal("1437", payload.CRC);
            Assert.Equal(8299, payload.MerchantCategoryCode);
            Assert.Equal(936, payload.TransactionCurrency);
            Assert.Equal("CIB GHANA", payload.MerchantName);
            Assert.Equal("ACCRA", payload.MerchantCity);
            Assert.Equal("GH", payload.CountyCode);

            Assert.Equal("4045871737852", payload.MerchantAccountInformation[2].GlobalUniqueIdentifier);
            Assert.Equal("532631101061981", payload.MerchantAccountInformation[4].GlobalUniqueIdentifier);

            Assert.Equal("86567306", payload.AdditionalData.StoreLabel);
            Assert.Equal("86567306", payload.AdditionalData.TerminalLabel);
        }
        public void DecodeQR4()
        {
            var qrData  = "0002010102110213404587793527804155326311019494035204529553039365802GH5915JULITET LIMITED6005ACCRA62240708324313220308324313226304A5FA";
            var payload = MerchantPayload.FromQR(qrData);

            Assert.Equal(1, payload.PayloadFormatIndicator);
            Assert.Equal(11, payload.PointOfInitializationMethod);
            Assert.Equal("A5FA", payload.CRC);
            Assert.Equal(5295, payload.MerchantCategoryCode);
            Assert.Equal(936, payload.TransactionCurrency);
            Assert.Equal("JULITET LIMITED", payload.MerchantName);
            Assert.Equal("ACCRA", payload.MerchantCity);
            Assert.Equal("GH", payload.CountyCode);

            Assert.Equal("4045877935278", payload.MerchantAccountInformation[2].GlobalUniqueIdentifier);
            Assert.Equal("532631101949403", payload.MerchantAccountInformation[4].GlobalUniqueIdentifier);

            Assert.Equal("32431322", payload.AdditionalData.StoreLabel);
            Assert.Equal("32431322", payload.AdditionalData.TerminalLabel);
        }
        public void DecodeQR3()
        {
            var qrData  = "0002010102110213404587568745904155326311155509945204625353039365802GH5915MAXMART LIMITED6005ACCRA62240708620037450308620037456304C913";
            var payload = MerchantPayload.FromQR(qrData);

            Assert.Equal(1, payload.PayloadFormatIndicator);
            Assert.Equal(11, payload.PointOfInitializationMethod);
            Assert.Equal("C913", payload.CRC);
            Assert.Equal(6253, payload.MerchantCategoryCode);
            Assert.Equal(936, payload.TransactionCurrency);
            Assert.Equal("MAXMART LIMITED", payload.MerchantName);
            Assert.Equal("ACCRA", payload.MerchantCity);
            Assert.Equal("GH", payload.CountyCode);

            Assert.Equal("4045875687459", payload.MerchantAccountInformation[2].GlobalUniqueIdentifier);
            Assert.Equal("532631115550994", payload.MerchantAccountInformation[4].GlobalUniqueIdentifier);

            Assert.Equal("62003745", payload.AdditionalData.StoreLabel);
            Assert.Equal("62003745", payload.AdditionalData.TerminalLabel);
        }
        public void DecodeQR2()
        {
            var qrData  = "0002010102110213404587194150404155326311017361105204581153039365802GH5913SUSAN ALLOTEY6005ACCRA622407080407330503080407330563049EE4";
            var payload = MerchantPayload.FromQR(qrData);

            Assert.Equal(1, payload.PayloadFormatIndicator);
            Assert.Equal(11, payload.PointOfInitializationMethod);
            Assert.Equal("9EE4", payload.CRC);
            Assert.Equal(5811, payload.MerchantCategoryCode);
            Assert.Equal(936, payload.TransactionCurrency);
            Assert.Equal("SUSAN ALLOTEY", payload.MerchantName);
            Assert.Equal("ACCRA", payload.MerchantCity);
            Assert.Equal("GH", payload.CountyCode);

            Assert.Equal("4045871941504", payload.MerchantAccountInformation[2].GlobalUniqueIdentifier);
            Assert.Equal("532631101736110", payload.MerchantAccountInformation[4].GlobalUniqueIdentifier);

            Assert.Equal("04073305", payload.AdditionalData.StoreLabel);
            Assert.Equal("04073305", payload.AdditionalData.TerminalLabel);
        }