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)); }
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()); } }