#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-формы в начале моего поста