Znam jego podstawowe pytania, ale nie mam już dostępu do formularzy internetowych. Używam Stripe.js po raz pierwszy i chcę go użyć w połączeniu z stripe.net do przetworzenia strony klienta. Oto kod klienta:jak uzyskać js POST w webformie asp.net?
<%@ Page Title="" Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="true"
CodeBehind="StripePage.aspx.cs" Inherits="StripePage.StripePage" %>
<asp:Content ID="Content1" ContentPlaceHolderID="MainContent" runat="server">
<script type="text/javascript" src="https://js.stripe.com/v2/"></script>
<script type="text/javascript">
// This identifies your website in the createToken call below
// You need to put your real publish key here.
Stripe.setPublishableKey('pk_test_1nDJ3hA1Mv2Sy9bUoYcBMXmm');
// ...
// I am using jquery to process the payment. It knows what form to
// process it on based on the name 'payment-form'
jQuery(function ($) {
//payment submission
$('#payment-form').submit(function (event) {
var $form = $(this);
// Disable the submit button to prevent repeated clicks
$form.find('button').prop('disabled', true);
Stripe.createToken($form, stripeResponseHandler);
// Prevent the form from submitting with the default action
return false;
});
//if there is a error, it is displayed on the page if there was
//no error this is where it gets sent to the server.
var stripeResponseHandler = function (status, response) {
var $form = $('#payment-form');
if (response.error) {
// Show the errors on the form
$form.find('.payment-errors').text(response.error.message);
$form.find('button').prop('disabled', false);
} else {
// token contains id, last4, and card type
var token = response.id;
// Insert the token into the form so it gets submitted to the server
$form.append($('<input type="hidden" name="stripeToken" />').val(token));
// and submit
$form.get(0).submit();
}
};
});
</script>
<form method="POST" id="paymentForm" runat="server">
<span class="payment-errors" runat="server"></span>
<div class="form-row">
<label>
<span>Card Number</span>
<br />
<input id="number" type="text" data-stripe="number" clientidmode="Static" />
<input type="text" size="20" data-stripe="number" runat="server" />
</label>
</div>
<div class="form-row">
<label>
<span>CVC</span>
<br />
<input type="text" size="4" data-stripe="cvc" runat="server" />
</label>
</div>
<div class="form-row">
<label>
<span>Expiration (MM/YYYY)</span>
<br />
<input type="text" size="2" data-stripe="exp-month" runat="server" />
</label>
<br />
<input type="text" size="4" data-stripe="exp-year" runat="server" />
</div>
<asp:Button ID="submit" ClientIDMode="Static" runat="server" Text="SubmitPayment" OnClick="submit_Click" />
</form>
</asp:Content>
Ostatnia rozmowa w JS tworzy obiekt JSON, że chcę wiedzieć, w jaki sposób dostać się na stronie C# w przycisk kliknij:
protected void submit_Click(object sender, EventArgs e)
{
....
}
Ja chce wykonać implementację javascript, aby uniknąć konieczności przestrzegania PCI. Czy podchodzę do tego niepoprawnie? Czy powinien to być cały Stripe.net, aby przetworzyć wszystko i całkowicie pominąć js? A jeśli tak, jak mogę uzyskać dane posta formularza w zdarzeniu kliknięcia przycisku?
To jest podejście, które zalecamy. Twój formularz zostanie przesłany przez JavaScript jak zwykły formularz, tak jakby Twój użytkownik kliknął "prześlij" bez żadnego JS. Możesz więc obsłużyć go w taki sam sposób, jak zwykłe przesyłanie formularzy. – brian
Jeśli jego formularze internetowe ASP.NET prawdopodobnie będziesz chciał dodać ukryte pole tekstowe w początkowym obciążeniu i twardy kod jego identyfikator klienta. Następnie w swoim zapytaniu użyj JQuery, aby ustawić wartość conferences dla twojego tokena i wywołać zdarzenie POSTBACK, aby program ASP.NET mógł ponownie się połączyć i znaleźć serwer po stronie serwera. – Matt