//Async public virtual async Task <StripeToken> CreateAsync(StripeTokenCreateOptions createOptions, StripeRequestOptions requestOptions = null, CancellationToken cancellationToken = default) { return(Mapper <StripeToken> .MapFromJson( await Requestor.PostStringAsync(this.ApplyAllParameters(createOptions, Urls.Tokens, false), SetupRequestOptions(requestOptions), cancellationToken) )); }
public async Task <PaymentOutput> MakePaymentAsync(StripeCreditCardPaymentInput input, CancellationToken cancellationToken = default) { var output = new PaymentOutput(); if (!input.IsBankProcess) { var isoCurrencyCode = input.IsoCurrencyCode; var baseStipeRepository = new BaseStipeRepository(this.httpClient); var secretKey = input.ServiceKey; StripeConfiguration.SetApiKey(secretKey); var custName = input.FirstName + " " + input.LastName; var custEmail = input.EmailAddress; var repository = new CustomerServiceBaseStipeRepository(this.httpClient); var stripeCustomer = await repository.GetStripeCustomerAsync(custName, custEmail, secretKey, cancellationToken); var myToken = new StripeTokenCreateOptions(); var expMMYY = input.CcExpMmYy; myToken.Card = new StripeCreditCardOptions() { Number = input.CreditCardNo, ExpirationYear = expMMYY.Substring(expMMYY.Length - 2), ExpirationMonth = expMMYY.Substring(0, expMMYY.Length - 2), Cvc = input.Cvc }; var tokenService = new StripeTokenService(); var stripeTokenFinal = await tokenService.CreateAsync(myToken); var stripeCardObj = new StripeCard(); stripeCardObj.SourceToken = stripeTokenFinal.Id; var url = String.Format("https://api.stripe.com/v1/customers/{0}/sources", stripeCustomer.Id); var stripeCard = await baseStipeRepository.CreateAsync(stripeCardObj, url, secretKey, cancellationToken); if (String.IsNullOrEmpty(stripeCard.Id)) { throw new Exception("Unable to add card to customer"); } var cardId = stripeCard.Id; var chargeAmount = (input.Amount * 100).ToString().Split('.')[0]; var stripeObject = new StripeCharge(); stripeObject.Amount = Convert.ToInt32(chargeAmount); stripeObject.Currency = isoCurrencyCode; stripeObject.Customer = stripeCustomer; var source = new Source(); source.Id = cardId; stripeObject.Source = source; stripeObject.Description = Guid.NewGuid().ToString(); var stripePayment = await baseStipeRepository.CreateAsync(stripeObject, "https://api.stripe.com/v1/charges", secretKey, cancellationToken); if (stripePayment != null) { if (String.Equals(stripePayment.Status, "succeeded", StringComparison.OrdinalIgnoreCase)) { output.IsSuccessful = true; output.TransactionResult = stripePayment.Status; } else { //fail transaction output.IsSuccessful = false; output.TransactionResult = stripePayment.Status; } output.TransactionIdentifier = stripePayment.Id; output.InvoiceNumber = stripePayment.Description; output.AuthToken = stripePayment.Source.Id; output.StripeCustomerId = stripePayment.CustomerId; output.CardType = stripeCard.Brand; } } else { output.IsSuccessful = false; output.TransactionResult = "422"; } return(output); }