Как выполнить HTML-вызов stripe payment из asp.net дочерняя форма

#javascript #c# #html #asp.net #stripe-payments

#javascript #c# #HTML #asp.net #stripe-платежи

Вопрос:

Я пытаюсь инициировать следующий вызов скрипта Stripe, который запрашивает страницу / Members /Charge.aspx через POST в образце HTML-формы. Мне нужно сделать это на существующей дочерней странице aspx, которая использует сайт.Главная страница (таким образом, она находится между держателями содержимого asp, поэтому я не могу использовать метод формы = «post» и т.д.

Как я могу сделать следующее, но с существующей дочерней страницы содержимого ASP?

Это пример кода из Stripe, который работает:

 <form action="/Members/Charge" method="post">
    <script
        src="https://checkout.stripe.com/checkout.js" class="stripe-button"
        data-key="<%= stripePublishableKey %>"
        data-amount="500"
        data-name="Stripe.com"
        data-description="Sample Charge"
        data-image="/images/home.jpg"
        data-locale="auto"
        data-zip-code="true">
    </script>
</form>
  

Мне нужно, чтобы это было что-то вроде этого:

             <div class="col">
                <h5 style="font-weight:bold">Payment Method</h5>
                <script
                    src="https://checkout.stripe.com/checkout.js" class="stripe-button"
                    data-key="<%= stripePublishableKey %>"
                    data-amount="500"
                    data-name="Stripe.com"
                    data-description="Sample Charge"
                    data-image="/images/home.jpg"
                    data-locale="auto"
                    data-zip-code="true">
                </script>
            </div>
  

На моей дочерней странице aspx между тегами asp: Content, но тогда как мне перенаправить на мою страницу оплаты, поскольку я не могу использовать строку:?

 <form action="/Members/Charge" method="post">
  

Который затем перенаправляет на страницу ‘charge’, которая является страницей успешной транзакции, со следующим кодом на page_load, который фактически отправляет транзакцию

         protected void Page_Load(object sender, EventArgs e)
        {
            if (Request.Form["stripeToken"] != null)
            {

                var customers = new CustomerService();
                var charges = new ChargeService();

                var customer = customers.Create(new CustomerCreateOptions
                {
                    Email = Request.Form["stripeEmail"],
                    SourceToken = Request.Form["stripeToken"]
                });

                var charge = charges.Create(new ChargeCreateOptions
                {
                    Amount = 500,
                    Description = "Sample Charge",
                    Currency = "usd",
                    CustomerId = customer.Id
                });

                Console.WriteLine(charge);
            }
        }
  

Комментарии:

1. Я предполагаю, что вам действительно нужно использовать тег form, чтобы заставить его работать, почему бы не использовать его с пустым действием, чтобы он отправлялся на текущий URL, то есть текущую страницу?

2. Затем он отправляется на страницу «оплата» — я отредактировал свой вопрос, чтобы включить его, спасибо

3. То, как вы сказали, что не можете использовать строку для тега формы, сбивает меня с толку. Похоже, вы уже добавляете тег h5 перед скриптом, так что вы можете просто обернуть все это в тег form. В своем комментарии вы упомянули, что он будет отправлен на страницу оплаты, если вы используете тег формы без URL-адреса действия, так разве это не то, чего вы пытались достичь? Мне кажется, что вы не сталкиваетесь с какой-либо проблемой, или вы не объясняете реальную проблему

4. Я не могу этого сделать, так как я на asp.net дочерняя страница между тегами asp: content, поэтому вы не можете размещать теги формы внутри этих

5. Хорошо, теперь я понимаю, что невозможно использовать две формы, поэтому одно из возможных решений — обернуть дочернюю форму в iframe

Ответ №1:

Мне пришлось вызвать временную страницу «подтвердить заказ», созданную с использованием простой HTML-формы в начале моего поста