public SubscriptionResult Create(User user, string email, string paymentToken, string planId) { var paymentMethodCreate = new PaymentMethodCreateOptions { Card = new PaymentMethodCardCreateOptions { Token = paymentToken }, Type = "card" }; var pmService = new PaymentMethodService(); var paymentMethod = pmService.Create(paymentMethodCreate); Console.WriteLine("Payment method: " + paymentMethod.Id); var custOptions = new CustomerCreateOptions { Email = email, PaymentMethod = paymentMethod.Id, InvoiceSettings = new CustomerInvoiceSettingsOptions { DefaultPaymentMethod = paymentMethod.Id, }, Metadata = new Dictionary <string, string> { { "userid", user.Id.ToString() } } }; var custService = new CustomerService(); var customer = custService.Create(custOptions); Console.WriteLine("Customer: " + customer.Id); var items = new List <SubscriptionItemOptions> { new SubscriptionItemOptions { Plan = planId, } }; var subscriptionOptions = new SubscriptionCreateOptions { Customer = customer.Id, Items = items, TrialPeriodDays = 7 }; subscriptionOptions.AddExpand("latest_invoice.payment_intent"); var subService = new SubscriptionService(); var subscription = subService.Create(subscriptionOptions); Console.WriteLine("Subscription: " + subscription.Id); return(new SubscriptionResult( customerId: customer.Id, subscriptionId: subscription.Id)); }
public void Init() { StripeConfiguration.ApiKey = ApiKey; var cRes = new CustomerService().Create(new CustomerCreateOptions() { Email = "*****@*****.**", Name = "Mark Christopher", }); var paymentMethodCreateOptions = new PaymentMethodCreateOptions { Type = "card", Card = new PaymentMethodCardCreateOptions() { Number = "4242424242424242", ExpMonth = 1, ExpYear = 2021, Cvc = "314", }, BillingDetails = new BillingDetailsOptions() { Name = "Mark", Address = new AddressOptions() { PostalCode = "3700", City = "Bayombong" }, Email = "*****@*****.**", Phone = "09067701852" }, }; var paymentMethodService = new PaymentMethodService(); var res = paymentMethodService.Create(paymentMethodCreateOptions); // `source` is obtained with Stripe.js; see https://stripe.com/docs/payments/accept-a-payment-charges#web-create-token var chargeCreateOptions = new ChargeCreateOptions { Amount = 2000, Currency = "usd", Source = "tok_visa", Description = "Charge for [email protected]", }; var chargeService = new ChargeService(); var iRes = chargeService.Create(chargeCreateOptions); }
public static PaymentMethod CreateCardPaymentMethod(string cardNumber, long expMonth, long expYear, string cvc, PaymentMethodService paymentMethodService) { // Create a payment method var options = new PaymentMethodCreateOptions { Type = "card", Card = new PaymentMethodCardCreateOptions { Number = cardNumber, ExpMonth = expMonth, ExpYear = expYear, Cvc = cvc, }, }; return(paymentMethodService.Create(options)); }
public async Task <IActionResult> CreateCardPaymentMethod() { PayModel paymodel = getPayModel(); var options = new PaymentMethodCreateOptions { Customer = "Nahed Kadih", Type = "card", Card = new PaymentMethodCardOptions { Number = paymodel.CardNumder, ExpMonth = paymodel.ExpMonth, ExpYear = paymodel.ExpYear, Cvc = paymodel.CVC, }, BillingDetails = new PaymentMethodBillingDetailsOptions { Name = "Nahed Kadih", Address = new Stripe.AddressOptions { PostalCode = paymodel.AddressZip, City = paymodel.AddressCity }, Email = "*****@*****.**", Phone = "09067701852" }, }; var paymentMethodService = new PaymentMethodService(); PaymentMethod paaymentMethoden = paymentMethodService.Create(options); // `source` is obtained with Stripe.js; see https://stripe.com/docs/payments/accept-a-payment-charges#web-create-token //var chargeCreateOptions = new ChargeCreateOptions //{ // Amount = 2000, // Currency = "usd", // Source = "tok_visa", // Description = "Charge for [email protected]", //}; //var chargeService = new ChargeService(); //var iRes = chargeService.Create(chargeCreateOptions); var response = await Task.FromResult(paaymentMethoden); return(Ok(response)); }
public async Task AddCreditCardAsync(string customerId, string cardholderName, string number, string cvc, long expMonth, long expYear, string zipCode) { var paymentMethodCreateOptions = new PaymentMethodCreateOptions { Type = "card", Card = new PaymentMethodCardOptions { Number = number, Cvc = cvc, ExpMonth = expMonth, ExpYear = expYear }, BillingDetails = new PaymentMethodBillingDetailsOptions { Name = cardholderName, Address = new AddressOptions { PostalCode = zipCode } } }; var paymentMethodService = new PaymentMethodService(); var paymentMethod = await paymentMethodService.CreateAsync(paymentMethodCreateOptions); var cards = await paymentMethodService.ListAsync(new PaymentMethodListOptions { Customer = customerId, Type = "card" }); foreach (var card in cards) { await paymentMethodService.DetachAsync(card.Id); } var paymentMethodAttachOptions = new PaymentMethodAttachOptions { Customer = customerId }; await paymentMethodService.AttachAsync(paymentMethod.Id, paymentMethodAttachOptions); }
public PaymentMethodServiceTest( StripeMockFixture stripeMockFixture, MockHttpClientFixture mockHttpClientFixture) : base(stripeMockFixture, mockHttpClientFixture) { this.service = new PaymentMethodService(this.StripeClient); this.attachOptions = new PaymentMethodAttachOptions { Customer = "cus_123", }; this.createOptions = new PaymentMethodCreateOptions { Card = new PaymentMethodCardOptions { Token = "tok_123", }, Type = "card", }; this.detachOptions = new PaymentMethodDetachOptions { }; this.listOptions = new PaymentMethodListOptions { Customer = "cus_123", Type = "card", }; this.updateOptions = new PaymentMethodUpdateOptions { Metadata = new Dictionary <string, string> { { "key", "value" }, }, }; }
public static void AddNewPaymentOption(string cardNumber, int expiryMonth, int expiryYear, string cvc) { StripeConfiguration.ApiKey = Constants.StripeKey; var options = new PaymentMethodCreateOptions { Type = "card", Card = new PaymentMethodCardCreateOptions { Number = cardNumber, ExpMonth = expiryMonth, ExpYear = expiryYear, Cvc = cvc } }; var service = new PaymentMethodService(); PaymentMethod pmMethod = service.Create(options); var attachOptions = new PaymentMethodAttachOptions { Customer = App.PaymentId }; var attachService = new PaymentMethodService(); attachService.Attach(pmMethod.Id, attachOptions); }
public dynamic createPayment(CardInfo cardInfo) { try { int paymentAmount = cardInfo.Amount; if (cardInfo.CardNumber != null) { StripeConfiguration.ApiKey = GetEnvironmentConfigVar(StripeConfigKey, this.configuration.GetValue <string>(StripeConfigKey)); var options = new PaymentMethodCreateOptions { Type = "card", Card = new PaymentMethodCardCreateOptions { Number = cardInfo.CardNumber, ExpMonth = Convert.ToInt32(cardInfo.CardExpiryMonth), ExpYear = Convert.ToInt32(cardInfo.CardExpiryYear), Cvc = cardInfo.CardCVC, }, }; var service = new PaymentMethodService(); var paymentMethod = service.Create(options); PaymentIntent paymentIntentObj = createPaymentIntent(paymentMethod.Id, paymentAmount); return(new { payment_method_id = paymentMethod.Id, payment_intent_id = paymentIntentObj.Id, status = paymentIntentObj.Status }); } else { return(new { customError = "Something is wrong. Pleas fill out all the information" }); } } catch (StripeException e) { return(new { error = e.StripeError.Message }); } return(new { customError = "Payment method not created" }); }
public static async Task <dynamic> CreateClientAsync(string email, string name, string cardNumber, int month, int year, string cvv) { var optionstoken = new TokenCreateOptions { Card = new CreditCardOptions { Number = cardNumber, ExpMonth = month, ExpYear = year, Cvc = cvv } }; var servicetoken = new TokenService(); Token stripetoken = await servicetoken.CreateAsync(optionstoken); var customer = new CustomerCreateOptions { Email = email, Name = name, Source = stripetoken.Id, }; Console.WriteLine(" stripetoken attributes :" + stripetoken); var services = new CustomerService(); var created = services.Create(customer); var option = new PaymentMethodCreateOptions { Type = "card", Card = new PaymentMethodCardCreateOptions { Number = cardNumber, ExpMonth = month, ExpYear = year, Cvc = cvv, }, }; var service = new PaymentMethodService(); var result = service.Create(option); Console.WriteLine(" PaymentMethodService attributes :" + result); var options = new PaymentMethodAttachOptions { Customer = created.Id, }; var method = new PaymentMethodService(); method.Attach( result.Id, options ); if (created.Id == null) { return("Failed"); } else { return(created.Id); } }
public override int ThreeDSecurePayment(Payment payment, Uri postBackURL, string languageCode = "", string languageDialectCode = "") { int ret = 10; string url = ""; err = ""; try { StripeConfiguration.ApiKey = payment.ProviderPassword; // Secret key if (postBackURL == null) { url = Tools.ConfigValue("SystemURL"); } else { url = postBackURL.GetLeftPart(UriPartial.Authority); } if (!url.EndsWith("/")) { url = url + "/"; } d3Form = ""; ret = 20; url = url + "RegisterThreeD.aspx?ProviderCode=" + bureauCode + "&TransRef=" + Tools.XMLSafe(payment.MerchantReference); ret = 50; var paymentMethodOptions = new PaymentMethodCreateOptions { Type = "card", Card = new PaymentMethodCardOptions { Number = payment.CardNumber, ExpMonth = payment.CardExpiryMonth, ExpYear = payment.CardExpiryYear, Cvc = payment.CardCVV } }; ret = 60; var paymentMethodService = new PaymentMethodService(); var paymentMethod = paymentMethodService.Create(paymentMethodOptions); err = err + ", paymentMethodId=" + Tools.NullToString(paymentMethod.Id); ret = 70; var customerOptions = new CustomerCreateOptions { Name = payment.CardName, // (payment.FirstName + " " + payment.LastName).Trim(), Email = payment.EMail, Phone = payment.PhoneCell, PaymentMethod = paymentMethod.Id }; ret = 80; var customerService = new CustomerService(); var customer = customerService.Create(customerOptions); err = err + ", customerId=" + Tools.NullToString(customer.Id); // if ( payment.PaymentDescription.Length < 1 ) // payment.PaymentDescription = "CareAssist"; // else if ( payment.PaymentDescription.Length > 22 ) // payment.PaymentDescription = payment.PaymentDescription.Substring(0,22); // Stripe needs a minimum payment of 50 US cents var paymentIntentOptions = new PaymentIntentCreateOptions { Amount = 050, // payment.PaymentAmount, Currency = "usd", // payment.CurrencyCode.ToLower(), // Must be "usd" not "USD" StatementDescriptor = payment.PaymentDescriptionLeft(22), Customer = customer.Id, PaymentMethod = paymentMethod.Id, Description = payment.MerchantReference, ConfirmationMethod = "manual" }; ret = 40; var paymentIntentService = new PaymentIntentService(); var paymentIntent = paymentIntentService.Create(paymentIntentOptions); err = err + ", paymentIntentId=" + Tools.NullToString(paymentIntent.Id); ret = 50; var confirmOptions = new PaymentIntentConfirmOptions { PaymentMethod = paymentMethod.Id, ReturnUrl = url }; ret = 60; var paymentConfirm = paymentIntentService.Confirm(paymentIntent.Id, confirmOptions); payRef = paymentConfirm.Id; err = err + ", paymentConfirmId=" + Tools.NullToString(payRef); ret = 70; strResult = paymentConfirm.StripeResponse.Content; d3Form = Tools.JSONValue(strResult, "url", "next_action"); d3Form = Tools.JSONRaw(d3Form); resultMsg = Tools.JSONValue(strResult, "status"); ret = 80; resultCode = paymentConfirm.StripeResponse.ToString(); int k = resultCode.ToUpper().IndexOf(" STATUS="); err = err + ", StripeResponse=" + Tools.NullToString(resultCode); ret = 90; Tools.LogInfo("ThreeDSecurePayment/60", "strResult=" + strResult, 221, this); string sql = "exec sp_WP_PaymentRegister3DSecA @ContractCode=" + Tools.DBString(payment.MerchantReference) + ",@ReferenceNumber=" + Tools.DBString(payRef) + ",@Status='77'"; // Means payment pending if (languageCode.Length > 0) { sql = sql + ",@LanguageCode=" + Tools.DBString(languageCode); } if (languageDialectCode.Length > 0) { sql = sql + ",@LanguageDialectCode=" + Tools.DBString(languageDialectCode); } using (MiscList mList = new MiscList()) mList.ExecQuery(sql, 0, "", false, true); Tools.LogInfo("ThreeDSecurePayment/80", "PayRef=" + payRef + "; SQL=" + sql + "; " + d3Form, 10, this); return(0); } catch (Exception ex) { Tools.LogException("ThreeDSecurePayment/99", "Ret=" + ret.ToString(), ex, this); } return(ret); }
// Moved to Transaction.cs // private string customerId; // private string paymentMethodId; public override int GetToken(Payment payment) { int ret = 10; err = ""; payToken = ""; customerId = ""; paymentMethodId = ""; strResult = ""; resultCode = "991"; resultMsg = "Fail"; Tools.LogInfo("GetToken/10", "Merchant Ref=" + payment.MerchantReference, 10, this); try { // Testing // StripeConfiguration.ApiKey = "sk_test_51It78gGmZVKtO2iKBZF7DA5JisJzRqvibQdXSfBj9eQh4f5UDvgCShZIjznOWCxu8MtcJG5acVkDcd8K184gIegx001uXlHI5g"; // Testing ret = 20; StripeConfiguration.ApiKey = payment.ProviderPassword; // Secret key ret = 30; var tokenOptions = new TokenCreateOptions { Card = new TokenCardOptions { Number = payment.CardNumber, ExpMonth = payment.CardExpiryMonth, ExpYear = payment.CardExpiryYear, Cvc = payment.CardCVV } }; ret = 40; var tokenService = new TokenService(); var token = tokenService.Create(tokenOptions); payToken = token.Id; err = err + ", tokenId=" + Tools.NullToString(payToken); ret = 50; var paymentMethodOptions = new PaymentMethodCreateOptions { Type = "card", Card = new PaymentMethodCardOptions { Token = token.Id } }; ret = 60; var paymentMethodService = new PaymentMethodService(); var paymentMethod = paymentMethodService.Create(paymentMethodOptions); paymentMethodId = paymentMethod.Id; err = err + ", paymentMethodId=" + Tools.NullToString(paymentMethodId); ret = 70; string tmp = (payment.FirstName + " " + payment.LastName).Trim(); var customerOptions = new CustomerCreateOptions { Name = payment.CardName, // (payment.FirstName + " " + payment.LastName).Trim(), Email = payment.EMail, Phone = payment.PhoneCell, Description = payment.MerchantReference + (tmp.Length > 0 ? " (" + tmp + ")" : ""), PaymentMethod = paymentMethod.Id }; ret = 75; if (payment.Address1(0).Length > 0 || payment.Address2(0).Length > 0 || payment.ProvinceCode.Length > 0 || payment.CountryCode(0).Length > 0) { ret = 80; customerOptions.Address = new AddressOptions() { Line1 = payment.Address1(0), // Line2 = payment.Address2(0), City = payment.Address2(0), State = payment.ProvinceCode, PostalCode = payment.PostalCode(0) }; ret = 85; if (payment.CountryCode(0).Length == 2) { customerOptions.Address.Country = payment.CountryCode(0).ToUpper(); } } ret = 90; var customerService = new CustomerService(); var customer = customerService.Create(customerOptions); // customer.Currency = payment.CurrencyCode.ToLower(); customerId = customer.Id; err = err + ", customerId=" + Tools.NullToString(customerId); ret = 100; strResult = customer.StripeResponse.Content; // resultMsg = Tools.JSONValue(strResult,"status"); resultCode = customer.StripeResponse.ToString(); int k = resultCode.ToUpper().IndexOf(" STATUS="); ret = 110; err = err + ", StripeResponse=" + Tools.NullToString(resultCode); // customer.StripeResponse.ToString() is as follows: // <Stripe.StripeResponse status=200 Request-Id=req_bI0B5glG6r6DNe Date=2021-05-28T09:35:23> if (k > 0) { resultCode = resultCode.Substring(k + 8).Trim(); k = resultCode.IndexOf(" "); if (k > 0) { resultCode = resultCode.Substring(0, k); } } else { resultCode = "999"; } ret = 120; err = err + ", strResult=" + Tools.NullToString(strResult) + ", resultCode=" + Tools.NullToString(resultCode); customer = null; customerService = null; customerOptions = null; paymentMethod = null; paymentMethodService = null; paymentMethodOptions = null; token = null; tokenService = null; tokenOptions = null; if (resultCode.StartsWith("2") && payToken.Length > 0 && paymentMethodId.Length > 0 && customerId.Length > 0) { resultMsg = "Success"; ret = 0; // Tools.LogInfo ("GetToken/189","Ret=0" + err,255,this); } else { Tools.LogInfo("GetToken/197", "Ret=" + ret.ToString() + err, 231, this); } } catch (Exception ex) { err = "Ret=" + ret.ToString() + err; Tools.LogInfo("GetToken/198", err, 231, this); Tools.LogException("GetToken/199", err, ex, this); } return(ret); }
protected void PlaceOrder_Click(object sender, EventArgs e) { var totalPrice = int.Parse(hdnTotalPrice.Value) * 100; #region Create a Payment Method var paymentMethodCreateOptions = new PaymentMethodCreateOptions { Type = "card", Card = new PaymentMethodCardOptions { Number = cardnumber.Value, ExpMonth = long.Parse(expiryMonth.Value), ExpYear = long.Parse(expiryYear.Value), Cvc = cvvCode.Value, }, }; var paymentMethodService = new PaymentMethodService(); PaymentMethod paymentMethodResult = null; try { paymentMethodResult = paymentMethodService.Create(paymentMethodCreateOptions); } catch (StripeException ex) { switch (ex.StripeError.Type) { case "card_error": // Log Error details to your application Database // ex.StripeError.Code, ex.StripeError.Message, ex.StripeError.DocUrl, ex.StripeError.DeclineCode // Show a friendly message to the end user errorMessage.Text = "We are sorry, but we are unable to charge your credit card. Please ensure that " + "your credit card details are right and you have enough funds in it and try again."; break; case "api_connection_error": errorMessage.Text = "We are sorry but we couldn't charge your card. Please try again."; break; case "validation_error": errorMessage.Text = "We are sorry, but we are unable to charge your credit card. Please ensure that " + "your credit card details are right and you have enough funds in it and try again."; break; case "api_error": // 500 errors, very rare case "authentication_error": case "invalid_request_error": case "rate_limit_error": default: // Unknown Error Type errorMessage.Text = "We are sorry but we couldn't charge your card due to an issue on our end." + "Our engineers have been notified. Please wait for 24 hours and retry again. If the issue " + "isn't resovled still, then please call us on our customer care center at 1 800 123 1234."; break; } errorMessage.Visible = true; return; } #endregion #region Create & Confirm PaymentIntent OR Charge the card var paymentIntentCreateOptions = new PaymentIntentCreateOptions { Amount = totalPrice, Currency = "sgd", PaymentMethodTypes = new List <string> { "card" }, Confirm = true, PaymentMethod = paymentMethodResult.Id }; var paymentIntentService = new PaymentIntentService(); PaymentIntent paymentIntentResult; try { paymentIntentResult = paymentIntentService.Create(paymentIntentCreateOptions); } catch (StripeException ex) { switch (ex.StripeError.Type) { case "card_error": // Log Error details to your application Database // ex.StripeError.Code, ex.StripeError.Message, ex.StripeError.DocUrl, ex.StripeError.DeclineCode // Show a friendly message to the end user errorMessage.Text = "We are sorry, but we are unable to charge your credit card. Please ensure that " + "your credit card details are right and you have enough funds in it and try again."; break; case "api_connection_error": errorMessage.Text = "We are sorry but we couldn't charge your card. Please try again."; break; case "validation_error": errorMessage.Text = "We are sorry, but we are unable to charge your credit card. Please ensure that " + "your credit card details are right and you have enough funds in it and try again."; break; case "api_error": // 500 errors, very rare case "authentication_error": case "invalid_request_error": case "rate_limit_error": default: // Unknown Error Type errorMessage.Text = "We are sorry but we couldn't charge your card due to an issue on our end." + "Our engineers have been notified. Please wait for 24 hours and retry again. If the issue " + "isn't resovled still, then please call us on our customer care center at 1 800 123 1234."; break; } errorMessage.Visible = true; return; } #endregion #region Show success Message successMessage.Text = string.Format("<h4>Congratulations! We have successfully received your order.</h4>" + "<br/>Please save the Payment Intent ID {1} and the Charge ID {2} safely in case of a dispute.", int.Parse(hdnTotalPrice.Value), paymentIntentResult.Id, paymentIntentResult.Charges.FirstOrDefault().Id); successMessage.Visible = true; #endregion }
public async Task <IActionResult> Charge([FromBody] PaymentRequest paymentRequest) { try { var customers = new CustomerService(); var Charges = new ChargeService(); var Checkcustomer = await _paymentService.GetCustomerPaymentId(paymentRequest.UserId); var customer = new Customer(); var CustomerId = ""; if (Checkcustomer == null) { customer = customers.Create(new CustomerCreateOptions { Email = paymentRequest.CustomerEmail, Name = paymentRequest.CustomerName, Phone = paymentRequest.CustomerPhone, }); CustomerId = customer.Id; } else { CustomerId = Checkcustomer.CustomerPaymentId; } var options1 = new PaymentMethodCreateOptions { Type = "card", Card = new PaymentMethodCardCreateOptions { Number = paymentRequest.CardNumber, ExpMonth = paymentRequest.ExpMonth, ExpYear = paymentRequest.ExpYear, Cvc = paymentRequest.Cvc }, }; var service1 = new PaymentMethodService(); service1.Create(options1); var options = new PaymentIntentCreateOptions { Amount = paymentRequest.Amount, Currency = "USD", Customer = CustomerId, PaymentMethod = paymentRequest.PaymentMethod, Confirm = true, PaymentMethodTypes = new List <string> { "card" }, }; var service = new PaymentIntentService(); var intent = service.Create(options); if (intent.Status == "succeeded") { var PaymentTrans = new PaymentTransaction { UserId = paymentRequest.UserId, CustomerPaymentId = CustomerId }; await Create(PaymentTrans); return(Ok(new { status = Ok().StatusCode, message = "Payment Successfully" })); } return(BadRequest(new { status = BadRequest().StatusCode, message = "Internal server error" })); } catch (Exception ex) { return(BadRequest(new { status = BadRequest().StatusCode, message = ex.Message })); } }
async public Task <string> AddPaymentMethodAsync([FromBody] PaymentMethodCreateOptions paymentMethodCreateOptions) { var res = await _paymentMethodService.CreateAsync(paymentMethodCreateOptions, _requestOptions); return(res.Id); }