public void ThenValidPaymentAndOrderBody(AuthoriseRequest request, AuthoriseResponse response)
 {
     Assert.That(response.Amount, Is.EqualTo(request.Amount));
     Assert.That(response.CurrencyCode, Is.EqualTo(request.CurrencyCode));
     Assert.That(response.CardDetails.CardNumber, Is.EqualTo(GetFirstSixAndLastFour(response.CardDetails.CardNumber)));
     Assert.IsNull(response.CardDetails.SecurityCode);
     Assert.That(response.CardDetails.ExpiryDate, Is.EqualTo(request.CardDetails.ExpiryDate));
 }
Beispiel #2
0
        public AuthoriseResponse ToAuthResponse()
        {
            var response = new AuthoriseResponse
            {
                Amount           = Amount,
                AuthStatus       = AuthStatus,
                CardNetwork      = CardNetwork,
                CardNumberEnding = CardNumberEnding,
                CurrencyCode     = CurrencyCode,
                TimeStampUtc     = TimeStampUtc,
                RetryAttempts    = RetryAttempts,
                ProcessingTimeMs = ProcessingTimeMs,
                TransactionId    = TransactionId
            };

            return(response);
        }
        public AuthoriseResponse Authorise(AuthoriseRequest request)
        {
            AuthoriseResponse response = new AuthoriseResponse();
            var options = new PaymentIntentCreateOptions
            {
                Amount             = Convert.ToInt64(request.amount * 100),
                Currency           = request.currency,
                PaymentMethodTypes = new List <string>
                {
                    "card",
                },
                CaptureMethod = "manual",
                //Metadata = request.metadata as Dictionary<string, string>,
            };
            var service = new PaymentIntentService();

            service.Create(options);
            return(response);
        }
Beispiel #4
0
        public static Transaction Create(AuthoriseResponse authoriseResponse, CardNumber cardNumber, UserAccount userAccount)
        {
            var transaction = new Transaction
            {
                TransactionId    = authoriseResponse.TransactionId,
                Amount           = authoriseResponse.Amount,
                AuthStatus       = authoriseResponse.AuthStatus,
                CardNetwork      = authoriseResponse.CardNetwork,
                CardNumber       = cardNumber,
                CardNumberEnding = cardNumber.Last4Digits(),
                ClientId         = userAccount.ClientId,
                UserId           = userAccount.Id,
                CurrencyCode     = authoriseResponse.CurrencyCode,
                TimeStampUtc     = authoriseResponse.TimeStampUtc,
                RetryAttempts    = authoriseResponse.RetryAttempts,
                ProcessingTimeMs = authoriseResponse.ProcessingTimeMs
            };

            return(transaction);
        }
        public async Task <AuthoriseResponse> AuthoriseAsync(AuthoriseRequest request)
        {
            var json         = JsonSerializer.Serialize(request);
            var content      = new StringContent(json, System.Text.Encoding.UTF8, "application/json");
            var pollyContext = new Context();

            var httpResponse = await PolicyHandlers.CountRetryPolicy()
                               .ExecuteAsync(c => _client.PostAsync("api/authorise", content), pollyContext);

            if (!httpResponse.IsSuccessStatusCode)
            {
                var errorResponse = AuthoriseResponse.CreateFailedResponse(
                    request, pollyContext.GetRetryCount());

                return(errorResponse);
            }

            var result = await httpResponse.Content.DeserializeAsync <AuthoriseResponse>();

            result.RetryAttempts = pollyContext.GetRetryCount();

            return(result);
        }