GetPaymentStatusRethrowsExceptionWhenMobilePayApiHttpClientThrowsAMobilePayExceptionWithUnauthorizedStatusCode() { // Arrange var mobilePaySettings = new MobilePaySettings { MerchantId = "merchantID" }; var mobilePayApiClient = new Mock <IMobilePayApiHttpClient>(); var mobilePayApiRequestMessage = new GetPaymentStatusRequest("merchantID", "1234"); mobilePayApiClient .Setup(m => m.SendRequest <GetPaymentStatusResponse>( mobilePayApiRequestMessage)) .ThrowsAsync( new MobilePayException(new DefaultErrorMessage { Reason = MobilePayErrorReason.Other }, HttpStatusCode.Unauthorized)); var log = new Mock <ILogger <MobilePayService> >(); // Act var mobilePayService = new MobilePayService(mobilePayApiClient.Object, mobilePaySettings, log.Object); // Assert await Assert.ThrowsAsync <MobilePayException>(() => mobilePayService.GetPaymentStatus("1234")); }
public override async Task GetPaymentStatus( GetPaymentStatusRequest request, IServerStreamWriter <GetPaymentStatusResponse> responseStream, ServerCallContext context) { Random random = new Random(); for (int i = 0; i < 100; i++) { responseStream.WriteAsync(new GetPaymentStatusResponse { Status = $"Created {i}" }); // await Task.Delay(TimeSpan.FromSeconds(random.NextDouble())); } await Task.Delay(TimeSpan.FromSeconds(5)); await responseStream.WriteAsync(new GetPaymentStatusResponse { Status = "Validated" }); await Task.Delay(TimeSpan.FromSeconds(10)); await responseStream.WriteAsync(new GetPaymentStatusResponse { Status = "Sent" }); await Task.Delay(TimeSpan.FromSeconds(4)); }
public async Task GetPaymentStatusGivenOrderIdCallsMobilePayApiHttpClient() { // Arrange var mobilePaySettings = new MobilePaySettings { MerchantId = "merchantID" }; var mobilePayApiClient = new Mock <IMobilePayApiHttpClient>(); var mobilePayApiRequestMessage = new GetPaymentStatusRequest("merchantID", "1234"); mobilePayApiClient .Setup(m => m.SendRequest <GetPaymentStatusResponse>( mobilePayApiRequestMessage)) .ReturnsAsync( new GetPaymentStatusResponse { LatestPaymentStatus = PaymentStatus.Reserved, OriginalAmount = 80.0, TransactionId = "transId" }); var log = new Mock <ILogger <MobilePayService> >(); var mobilePayService = new MobilePayService(mobilePayApiClient.Object, mobilePaySettings, log.Object); // Act await mobilePayService.GetPaymentStatus("1234"); // Assert mobilePayApiClient.Verify( m => m.SendRequest <GetPaymentStatusResponse>(mobilePayApiRequestMessage), Times.Once); }
public void TestGetPaymentStatusWithNoPayment() { var request = new GetPaymentStatusRequest(merchantInfo, sessionToken); var response = requestExecutor.GetPaymentStatus(request).GetAwaiter().GetResult(); Assert.IsNotNull(response); Assert.AreEqual(response.Reason, "No order is associated with the session token submitted in the request."); Assert.AreEqual(ResponseStatus.Error, response.Status); }
CancelPaymentReservationRetriesWhenMobilePayApiHttpClientThrowsAMobilePayExceptionWithRequestTimeOutStatusCode() { // Arrange var mobilePaySettings = new MobilePaySettings { MerchantId = "merchantID" }; var mobilePayApiClient = new Mock <IMobilePayApiHttpClient>(); var requestMessage = new CancelReservationRequest("merchantID", "1234"); mobilePayApiClient .SetupSequence(m => m.SendRequest <CancelReservationResponse>( requestMessage)) // Throw exception first time .ThrowsAsync( new MobilePayException(new DefaultErrorMessage { Reason = MobilePayErrorReason.Other }, HttpStatusCode.RequestTimeout)); // Second time returns Response var mobilePayApiRequestMessage = new GetPaymentStatusRequest("merchantID", "1234"); mobilePayApiClient .Setup(m => m.SendRequest <GetPaymentStatusResponse>( mobilePayApiRequestMessage)) .ReturnsAsync( new GetPaymentStatusResponse { LatestPaymentStatus = PaymentStatus.Cancelled, OriginalAmount = 80.0, TransactionId = "transId" }); var log = new Mock <ILogger <MobilePayService> >(); var mobilePayService = new MobilePayService(mobilePayApiClient.Object, mobilePaySettings, log.Object); // Act await mobilePayService.CancelPaymentReservation("1234"); // Assert mobilePayApiClient.Verify( m => m.SendRequest <CancelReservationResponse>(requestMessage), Times.Once); mobilePayApiClient.Verify( m => m.SendRequest <GetPaymentStatusResponse>(mobilePayApiRequestMessage), Times.Once); }
public override async Task GetPaymentStatus(GetPaymentStatusRequest request, IServerStreamWriter <GetPaymentStatusResponse> responseStream, ServerCallContext context) { await responseStream.WriteAsync( new GetPaymentStatusResponse { Status = "Created" }); await Task.Delay(500); await responseStream.WriteAsync( new GetPaymentStatusResponse { Status = "Validated" }); await Task.Delay(1000); await responseStream.WriteAsync( new GetPaymentStatusResponse { Status = "Accepted" }); }
public void TestEmptyConstructorsUsedForMappingFromConfigFile() { _ = new PaymentRequest(); _ = new SettleTransactionRequest(); _ = new VoidTransactionRequest(); _ = new RefundTransactionRequest(); _ = new GetPaymentStatusRequest(); _ = new OpenOrderRequest(); _ = new InitPaymentRequest(); _ = new Authorize3dRequest(); _ = new Verify3dRequest(); _ = new PayoutRequest(); _ = new GetCardDetailsRequest(); _ = new GetMerchantPaymentMethodsRequest(); Assert.Pass(); }
public void TestGetPaymentStatusSuccess() { var paymentRequest = new PaymentRequest(merchantInfo, sessionToken, currency, amount, paymentOptionCard) { Items = items }; _ = requestExecutor.Payment(paymentRequest).GetAwaiter().GetResult(); var request = new GetPaymentStatusRequest(merchantInfo, sessionToken); var response = requestExecutor.GetPaymentStatus(request).GetAwaiter().GetResult(); Assert.IsNotNull(response); Assert.IsEmpty(response.Reason); Assert.AreEqual(ResponseStatus.Success, response.Status); Assert.IsNull(response.GwErrorReason); Assert.IsNull(response.PaymentMethodErrorReason); Assert.AreNotEqual(ApiConstants.TransactionStatusError, response.TransactionStatus); }
public async Task <GetPaymentStatusResponse> GetPaymentStatus( string userId = null, DeviceDetails deviceDetails = null, string rebillingType = null, string authenticationTypeOnly = null, SubMerchant subMerchant = null, Addendums addendums = null) { var request = new GetPaymentStatusRequest(merchantInfo, sessionToken) { UserId = userId, DeviceDetails = deviceDetails, RebillingType = rebillingType, AuthenticationTypeOnly = authenticationTypeOnly, SubMerchant = subMerchant, Addendums = addendums }; return(await safechargeRequestExecutor.GetPaymentStatus(request)); }
public GetPaymentStatusResponse GetPaymentStatusByPaymentId(GetPaymentStatusRequest req) { var res = new GetPaymentStatusResponse(); try { long id = long.Parse(req.PaymentId); using (var container = new TransactionModelContainer()) { var payment = container.Payments.FirstOrDefault(x => x.Id == id); res.PaymentStatus = (PaymentStatusEnum)Enum.Parse(typeof(PaymentStatusEnum), payment.Status); res.Succeed(); } } catch (Exception ex) { res.Fail(ex); CreateLog(ex); } return(res); }
public async Task <GetPaymentStatusResponse> GetPaymentStatus(GetPaymentStatusRequest getPaymentStatusRequest) { return(await this.PostAsync <GetPaymentStatusResponse, GetPaymentStatusRequest>(getPaymentStatusRequest)); }