Exemple #1
0
        public IActionResult Reverse(string id)
        {
            PayOnClient      client = new PayOnClient(Settings.EntityIdThreeDSecure, Settings.UserId, Settings.Password, Settings.BaseUrl);
            PaymentViewModel model  = new PaymentViewModel();

            try
            {
                PaymentRequest paymentRequest = new PaymentRequest
                {
                    PaymentType = "RV",
                };
                PaymentResponse response = client.RequestPaymentReversal(id);

                model.Status = $"{Enum.GetName(typeof(ResultStatus), response.Result.GetResultStatus())}. Result code: {response.Result.Code}. Result Description: {response.Result.Description}";
            }
            catch (Exception ex)
            {
                _logger.LogError("Unable to start 3D Secure Transaction", ex);
                model.Status = $"Unable to start 3D Secure Transaction. {ex}";
            }

            return(View(model));
        }
Exemple #2
0
        public void ThreeDSecureTokenizationWithReversal()
        {
            PayOnClient threeDSecureClient     = new PayOnClient(EntityId_ThreeDPayment, UserId, Password, BaseUrl, TestMode);
            PayOnClient recurringPaymentClient = new PayOnClient(EntityId_Recurring, UserId, Password, BaseUrl, TestMode);

            CardAccount[] cardAccounts = TestData.GetTestPaymentCardAccounts();

            foreach (var cardAccount in cardAccounts)
            {
                int idx = Array.FindIndex(cardAccounts, x => x == cardAccount) + 1;
                Log($"\nTest card: {idx}/{cardAccounts.Length}: {cardAccount.Number}");

                PaymentRequest request = new PaymentRequest
                {
                    PaymentBrand       = cardAccount.PaymentBrand,
                    Amount             = "1.00",
                    Currency           = "ZAR",
                    Card               = cardAccount,
                    PaymentType        = "DB",
                    RecurringType      = "INITIAL",
                    CreateRegistration = true,
                    ShopperResultUrl   = "https://newco/payment/confirm",
                    Timestamp          = DateTime.Now.ToIso8601String()
                };

                Log("3D Secure Request with Tokenization", JsonConvert.SerializeObject(request));
                PaymentResponse response = threeDSecureClient.RequestPayment(request);
                Log("3D Secure Response with Tokenization", JsonConvert.SerializeObject(response));

                string id = response.Id;

                Assert.NotNull(id);

                string registrationId = response.RegistrationId;

                Assert.NotNull(registrationId);


                // If ACS is required
                if (response.Result.GetResultStatus() == ResultStatus.Pending)
                {
                    PaymentStatusResponse paymentResult = RequestPaymentStatus(threeDSecureClient, cardAccount, response.Redirect);
                    Assert.Equal(ResultStatus.Approved, paymentResult?.Result?.GetResultStatus());
                    id = paymentResult.Id;
                }
                else
                {
                    Assert.Equal(ResultStatus.Approved, response.Result.GetResultStatus());
                }

                // Recurring transaction
                PaymentRequest paymentRequest = new PaymentRequest
                {
                    PaymentType = "RV",
                };

                Log("Payment Reversal Request Id", id);
                PaymentResponse recurringResponse = threeDSecureClient.RequestPaymentReversal(id);
                Log("Payment Reversal Response", JsonConvert.SerializeObject(recurringResponse));

                Assert.Equal(ResultStatus.Approved, recurringResponse.Result.GetResultStatus());
            }
        }