Example #1
0
        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);
        }
Example #3
0
        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));
        }
Example #4
0
        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" },
                },
            };
        }
Example #7
0
        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" });
        }
Example #9
0
        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);
        }
Example #12
0
        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
        }
Example #13
0
        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
                }));
            }
        }
Example #14
0
        async public Task <string> AddPaymentMethodAsync([FromBody] PaymentMethodCreateOptions paymentMethodCreateOptions)
        {
            var res = await _paymentMethodService.CreateAsync(paymentMethodCreateOptions, _requestOptions);

            return(res.Id);
        }