Esempio n. 1
0
        public void MapResponseTest()
        {
            // Arrange
            string rawJson = "{\"id\":\"TRN_BHZ1whvNJnMvB6dPwf3znwWTsPjCn0\",\"time_created\":\"2020-12-04T12:46:05.235Z\",\"type\":\"SALE\",\"status\":\"PREAUTHORIZED\",\"channel\":\"CNP\",\"capture_mode\":\"LATER\",\"amount\":\"1400\",\"currency\":\"USD\",\"country\":\"US\",\"merchant_id\":\"MER_c4c0df11039c48a9b63701adeaa296c3\",\"merchant_name\":\"Sandbox_merchant_2\",\"account_id\":\"TRA_6716058969854a48b33347043ff8225f\",\"account_name\":\"Transaction_Processing\",\"reference\":\"15fbcdd9-8626-4e29-aae8-050f823f995f\",\"payment_method\":{\"result\":\"00\",\"message\":\"[ test system ] AUTHORISED\",\"entry_mode\":\"ECOM\",\"card\":{\"brand\":\"VISA\",\"masked_number_last4\":\"XXXXXXXXXXXX5262\",\"authcode\":\"12345\",\"brand_reference\":\"PSkAnccWLNMTcRmm\",\"brand_time_created\":\"\",\"cvv_result\":\"MATCHED\"}},\"batch_id\":\"\",\"action\":{\"id\":\"ACT_BHZ1whvNJnMvB6dPwf3znwWTsPjCn0\",\"type\":\"PREAUTHORIZE\",\"time_created\":\"2020-12-04T12:46:05.235Z\",\"result_code\":\"SUCCESS\",\"app_id\":\"Uyq6PzRbkorv2D4RQGlldEtunEeGNZll\",\"app_name\":\"sample_app_CERT\"}}";

            // Act
            Transaction transaction = GpApiMapping.MapResponse(rawJson);

            JsonDoc doc = JsonDoc.Parse(rawJson);

            // Assert
            Assert.AreEqual(doc.GetValue <string>("id"), transaction.TransactionId);
            Assert.AreEqual(doc.GetValue <string>("amount").ToAmount(), transaction.BalanceAmount);
            Assert.AreEqual(doc.GetValue <string>("time_created"), transaction.Timestamp);
            Assert.AreEqual(doc.GetValue <string>("status"), transaction.ResponseMessage);
            Assert.AreEqual(doc.GetValue <string>("reference"), transaction.ReferenceNumber);
            Assert.AreEqual(doc.GetValue <string>("batch_id"), transaction.BatchSummary?.SequenceNumber);
            Assert.AreEqual(doc.Get("action").GetValue <string>("result_code"), transaction.ResponseCode);
            Assert.AreEqual(doc.GetValue <string>("id"), transaction.Token);

            if (doc.Has("payment_method"))
            {
                Assert.AreEqual(doc.Get("payment_method")?.GetValue <string>("result"), transaction.AuthorizationCode);
                Assert.AreEqual(doc.Get("payment_method")?.Get("card")?.GetValue <string>("brand"), transaction.CardType);
                Assert.AreEqual(doc.Get("payment_method")?.Get("card")?.GetValue <string>("masked_number_last4"), transaction.CardLast4);
            }

            if (doc.Has("card"))
            {
                Assert.AreEqual(doc.Get("card")?.GetValue <string>("number"), transaction.CardNumber);
                Assert.AreEqual(doc.Get("card")?.GetValue <string>("brand"), transaction.CardType);
                Assert.AreEqual(doc.Get("card")?.GetValue <int>("expiry_month"), transaction.CardExpMonth);
                Assert.AreEqual(doc.Get("card")?.GetValue <int>("expiry_year"), transaction.CardExpYear);
            }
        }
Esempio n. 2
0
        public Transaction ProcessSecure3d(Secure3dBuilder builder)
        {
            if (string.IsNullOrEmpty(AccessToken))
            {
                SignIn();
            }

            var request = GpApiSecure3DRequestBuilder.BuildRequest(builder, this);

            if (request != null)
            {
                var response = DoTransaction(request.Verb, request.Endpoint, request.RequestBody, request.QueryStringParams, builder.IdempotencyKey);

                return(GpApiMapping.Map3DSecureData(response));
            }
            return(null);
        }
Esempio n. 3
0
        public T ProcessReport <T>(ReportBuilder <T> builder) where T : class
        {
            if (string.IsNullOrEmpty(AccessToken))
            {
                SignIn();
            }

            GpApiRequest request = GpApiReportRequestBuilder.BuildRequest(builder, this);

            if (request != null)
            {
                var response = DoTransaction(request.Verb, request.Endpoint, request.RequestBody, request.QueryStringParams);

                return(GpApiMapping.MapReportResponse <T>(response, builder.ReportType));
            }
            return(null);
        }
Esempio n. 4
0
        public Transaction ManageTransaction(ManagementBuilder builder)
        {
            if (string.IsNullOrEmpty(AccessToken))
            {
                SignIn();
            }

            GpApiRequest request = GpApiManagementRequestBuilder.BuildRequest(builder, this);

            if (request != null)
            {
                var response = DoTransaction(request.Verb, request.Endpoint, request.RequestBody, request.QueryStringParams, builder.IdempotencyKey);

                return(GpApiMapping.MapResponse(response));
            }
            return(null);
        }
Esempio n. 5
0
        public Transaction ProcessAuthorization(AuthorizationBuilder builder)
        {
            if (string.IsNullOrEmpty(AccessToken))
            {
                SignIn();
            }

            GpApiRequest request = GpApiAuthorizationRequestBuilder.BuildRequest(builder, this);

            if (request != null)
            {
                var response = DoTransaction(request.Verb, request.Endpoint, request.RequestBody, request.QueryStringParams, builder.IdempotencyKey);
                if (builder.PaymentMethod is AlternativePaymentMethod)
                {
                    return(GpApiMapping.MapResponseAPM(response));
                }
                return(GpApiMapping.MapResponse(response));
            }
            return(null);
        }
Esempio n. 6
0
        public void MapDepositSummaryTest_NullDates()
        {
            // Arrange
            string rawJson = "{\"id\":\"DEP_2342423423\",\"time_created\":\"\",\"status\":\"FUNDED\",\"funding_type\":\"CREDIT\",\"amount\":\"11400\",\"currency\":\"USD\",\"aggregation_model\":\"H-By Date\",\"bank_transfer\":{\"masked_account_number_last4\":\"XXXXXX9999\",\"bank\":{\"code\":\"XXXXX0001\"}},\"system\":{\"mid\":\"101023947262\",\"hierarchy\":\"055-70-024-011-019\",\"name\":\"XYZ LTD.\",\"dba\":\"XYZ Group\"},\"sales\":{\"count\":4,\"amount\":\"12400\"},\"refunds\":{\"count\":1,\"amount\":\"-1000\"},\"discounts\":{\"count\":0,\"amount\":\"\"},\"tax\":{\"count\":0,\"amount\":\"\"},\"disputes\":{\"chargebacks\":{\"count\":0,\"amount\":\"\"},\"reversals\":{\"count\":0,\"amount\":\"\"}},\"fees\":{\"amount\":\"\"},\"action\":{\"id\":\"ACT_TWdmMMOBZ91iQX1DcvxYermuVJ6E6h\",\"type\":\"DEPOSIT_SINGLE\",\"time_created\":\"\",\"result_code\":\"SUCCESS\",\"app_id\":\"JF2GQpeCrOivkBGsTRiqkpkdKp67Gxi0\",\"app_name\":\"test_app\"}}";

            JsonDoc doc = JsonDoc.Parse(rawJson);

            // Act
            DepositSummary deposit = GpApiMapping.MapDepositSummary(doc);

            // Assert
            Assert.AreEqual(doc.GetValue <string>("id"), deposit.DepositId);
            Assert.IsNull(deposit.DepositDate);
            Assert.AreEqual(doc.GetValue <string>("status"), deposit.Status);
            Assert.AreEqual(doc.GetValue <string>("funding_type"), deposit.Type);
            Assert.AreEqual(doc.GetValue <string>("amount").ToAmount(), deposit.Amount);
            Assert.AreEqual(doc.GetValue <string>("currency"), deposit.Currency);

            Assert.AreEqual(doc.Get("system")?.GetValue <string>("mid"), deposit.MerchantNumber);
            Assert.AreEqual(doc.Get("system")?.GetValue <string>("hierarchy"), deposit.MerchantHierarchy);
            Assert.AreEqual(doc.Get("system")?.GetValue <string>("name"), deposit.MerchantName);
            Assert.AreEqual(doc.Get("system")?.GetValue <string>("dba"), deposit.MerchantDbaName);

            Assert.AreEqual(doc.Get("sales")?.GetValue <int>("count") ?? default(int), deposit.SalesTotalCount);
            Assert.AreEqual(doc.Get("sales")?.GetValue <string>("amount").ToAmount(), deposit.SalesTotalAmount);

            Assert.AreEqual(doc.Get("refunds")?.GetValue <int>("count") ?? default(int), deposit.RefundsTotalCount);
            Assert.AreEqual(doc.Get("refunds")?.GetValue <string>("amount").ToAmount(), deposit.RefundsTotalAmount);

            Assert.AreEqual(doc.Get("disputes")?.Get("chargebacks")?.GetValue <int>("count") ?? default(int), deposit.ChargebackTotalCount);
            Assert.AreEqual(doc.Get("disputes")?.Get("chargebacks")?.GetValue <string>("amount").ToAmount(), deposit.ChargebackTotalAmount);

            Assert.AreEqual(doc.Get("disputes")?.Get("reversals")?.GetValue <int>("count") ?? default(int), deposit.AdjustmentTotalCount);
            Assert.AreEqual(doc.Get("disputes")?.Get("reversals")?.GetValue <string>("amount").ToAmount(), deposit.AdjustmentTotalAmount);

            Assert.AreEqual(doc.Get("fees")?.GetValue <string>("amount").ToAmount(), deposit.FeesTotalAmount);
        }