Esempio n. 1
0
        public IActionResult RecurringRepeat(PaymentViewModel model)
        {
            PayOnClient         client           = new PayOnClient(Settings.EntityIdRecurring, Settings.UserId, Settings.Password, Settings.BaseUrl);
            RegistrationRequest recurringRequest = new RegistrationRequest
            {
                PaymentBrand       = model.PaymentBrand,
                Amount             = model.Amount,
                Currency           = model.Currency,
                RecurringType      = "REPEATED",
                PaymentType        = "DB",
                CreateRegistration = false,
                RegistrationId     = model.RegistrationId
            };

            try
            {
                RegistrationResponse response = client.RequestRegistration(recurringRequest);
                model.Id     = response.Id;
                model.Status = $"{Enum.GetName(typeof(ResultStatus), response.Result.GetResultStatus())}. Result code: {response.Result.Code}. Result Description: {response.Result.Description}";

                return(View(model));
            }
            catch (Exception ex)
            {
                _logger.LogError("Unable to start 3D Secure Transaction", ex);
                model.Status = $"Unable to start 3D Secure Transaction. {ex}";
            }

            return(View(model));
        }
Esempio n. 2
0
        public void ThreeDSecureTokenizationWithRecurringPayment()
        {
            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.Count()}: {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 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());
                }
                else
                {
                    Assert.Equal(ResultStatus.Approved, response.Result.GetResultStatus());
                }

                // Recurring transaction
                RegistrationRequest recurringRequest = new RegistrationRequest
                {
                    PaymentBrand       = cardAccount.PaymentBrand,
                    Amount             = "123.45",
                    Currency           = "ZAR",
                    RecurringType      = "REPEATED",
                    PaymentType        = "DB",
                    CreateRegistration = false,
                    RegistrationId     = registrationId
                };

                Log("Initial Recurring Registration Request", JsonConvert.SerializeObject(recurringRequest));
                RegistrationResponse recurringResponse = recurringPaymentClient.RequestRegistration(recurringRequest);
                Log("Repeat Recurring Registration Response", JsonConvert.SerializeObject(recurringResponse));

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