Пример #1
0
        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"));
        }
Пример #2
0
        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));
        }
Пример #3
0
        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);
        }
Пример #5
0
        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);
        }
Пример #6
0
        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);
        }
Пример #9
0
        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));
        }
Пример #10
0
        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);
        }
Пример #11
0
 public async Task <GetPaymentStatusResponse> GetPaymentStatus(GetPaymentStatusRequest getPaymentStatusRequest)
 {
     return(await this.PostAsync <GetPaymentStatusResponse, GetPaymentStatusRequest>(getPaymentStatusRequest));
 }