Tôi biết một câu hỏi sơ bộ, nhưng tôi không thực hành trên các biểu mẫu web. Tôi đang sử dụng Stripe.js lần đầu tiên và muốn sử dụng nó cùng với stripe.net để xử lý phía máy khách. Đây là mã khách hàng:làm thế nào để có được js POST trong asp.net webform?
<%@ 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>
Cuộc gọi cuối cùng trong JS tạo ra một đối tượng JSON mà tôi muốn biết làm thế nào để có được trên trang C# vào nút bấm:
protected void submit_Click(object sender, EventArgs e)
{
....
}
Tôi muốn để thực hiện javascript để tránh phải tuân thủ PCI. Tôi có đang tiếp cận điều này không chính xác? Có nên tất cả Stripe.net đều xử lý mọi thứ và bỏ qua toàn bộ js không? Hoặc nếu điều này đúng, làm thế nào tôi có thể lấy dữ liệu bài đăng biểu mẫu trong sự kiện nhấp vào nút?
Đó là cách tiếp cận mà chúng tôi đề xuất. Biểu mẫu của bạn sẽ được gửi bởi JavaScript như một biểu mẫu bình thường, như thể người dùng của bạn đã nhấp vào "gửi" mà không có JS nào cả. Vì vậy, bạn có thể xử lý nó theo cách tương tự như một hình thức nộp bình thường. – brian
Nếu biểu mẫu web ASP.NET của nó, bạn có thể muốn thêm một trường văn bản ẩn trong tải ban đầu của bạn và mã cứng ClientID của nó. Sau đó, trong callback sọc của bạn sử dụng JQuery để thiết lập giá trị conrols để mã thông báo của bạn và kích hoạt sự kiện POSTBACK của bạn để ASP.NET có thể rebind và tìm thấy nó phía máy chủ. – Matt