自定义条纹按钮不会触发 POST 方法
Custom Stripe Button does not trigger the POST method
我目前正在实施 Stripe,但遇到了一些问题。
简单的集成工作得很好,这个:
<form action="step4" method="POST">
<script
src="https://checkout.stripe.com/checkout.js" class="stripe-button"
data-key="pk_test_mA3Wo4wGNDNEQ5rRHaUKTVOZ"
data-image="/img/documentation/checkout/marketplace.png"
data-name="Demo Site"
data-description="2 widgets"
data-currency="eur"
data-amount="2000">
</script>
</form>
但是当我想使用来自 here 的自定义集成时,指定的方法没有被调用。
目前我只是在我的 POST 方法上使用闭包,该方法终止并转储输入。在简单的集成中,我取回了令牌。在自定义集成中我没有。这是闭包 (Laravel 5):
Route::post('step4', function() {
dd(Input::all());
});
这是我的自定义集成代码:
<form action="step4" method="POST">
<button id="stripeButton" class="btn btn-lg btn-block btn-primary">Pay with Stripe</button>
</form>
<script src="https://checkout.stripe.com/checkout.js"></script>
<script>
var handler = StripeCheckout.configure({
key: "{{$stripe_public_key}}",
image: "{{$data_image}}",
token: function(token) {
// Use the token to create the charge with a server-side script.
// You can access the token ID with `token.id`
}
});
$('#stripeButton').on('click', function(e) {
// Open Checkout with further options
handler.open({
name: "{{$data_name}}",
description: "{{$data_description}}",
currency: "USD",
amount: "{{$data_amount}}",
@if(Session::has('email'))
email: "{{$email}}",
@endif
allowRememberMe: false,
});
e.preventDefault();
});
// Close Checkout on page navigation
$(window).on('popstate', function() {
handler.close();
});
</script>
但是该方法似乎没有被调用,因为我没有得到输入的 die&dump。我没有收到错误消息,似乎没有调用方法就返回了条带标记。
如何调用自定义条带集成中的方法?
您的表单没有 'submit' 按钮,#stripeButton
也没有。
如果您的表单未提交,则永远不会调用您的方法。
如果您想调用 routes.php
文件中的方法,请在 form
.
中添加一个 <input type="submit" name="Submit Stripe" />
答案是,我的处理程序需要附加以下输入表单:
var handler = StripeCheckout.configure({
key: "{{$stripe_public_key}}",
image: "{{$data_image}}",
// to this when a token is generated
token: function(token) {
// Use the token to create the charge with a server-side script.
// You can access the token ID with `token.id`
$form.append($('<input type="hidden" name="stripeToken" />').val(token.id));
$form.append($('<input type="hidden" name="stripeEmail" />').val(token.email));
// submit the form, uncomment to make this happen
$form.get(0).submit();
}
});
我目前正在实施 Stripe,但遇到了一些问题。
简单的集成工作得很好,这个:
<form action="step4" method="POST">
<script
src="https://checkout.stripe.com/checkout.js" class="stripe-button"
data-key="pk_test_mA3Wo4wGNDNEQ5rRHaUKTVOZ"
data-image="/img/documentation/checkout/marketplace.png"
data-name="Demo Site"
data-description="2 widgets"
data-currency="eur"
data-amount="2000">
</script>
</form>
但是当我想使用来自 here 的自定义集成时,指定的方法没有被调用。
目前我只是在我的 POST 方法上使用闭包,该方法终止并转储输入。在简单的集成中,我取回了令牌。在自定义集成中我没有。这是闭包 (Laravel 5):
Route::post('step4', function() {
dd(Input::all());
});
这是我的自定义集成代码:
<form action="step4" method="POST">
<button id="stripeButton" class="btn btn-lg btn-block btn-primary">Pay with Stripe</button>
</form>
<script src="https://checkout.stripe.com/checkout.js"></script>
<script>
var handler = StripeCheckout.configure({
key: "{{$stripe_public_key}}",
image: "{{$data_image}}",
token: function(token) {
// Use the token to create the charge with a server-side script.
// You can access the token ID with `token.id`
}
});
$('#stripeButton').on('click', function(e) {
// Open Checkout with further options
handler.open({
name: "{{$data_name}}",
description: "{{$data_description}}",
currency: "USD",
amount: "{{$data_amount}}",
@if(Session::has('email'))
email: "{{$email}}",
@endif
allowRememberMe: false,
});
e.preventDefault();
});
// Close Checkout on page navigation
$(window).on('popstate', function() {
handler.close();
});
</script>
但是该方法似乎没有被调用,因为我没有得到输入的 die&dump。我没有收到错误消息,似乎没有调用方法就返回了条带标记。
如何调用自定义条带集成中的方法?
您的表单没有 'submit' 按钮,#stripeButton
也没有。
如果您的表单未提交,则永远不会调用您的方法。
如果您想调用 routes.php
文件中的方法,请在 form
.
<input type="submit" name="Submit Stripe" />
答案是,我的处理程序需要附加以下输入表单:
var handler = StripeCheckout.configure({
key: "{{$stripe_public_key}}",
image: "{{$data_image}}",
// to this when a token is generated
token: function(token) {
// Use the token to create the charge with a server-side script.
// You can access the token ID with `token.id`
$form.append($('<input type="hidden" name="stripeToken" />').val(token.id));
$form.append($('<input type="hidden" name="stripeEmail" />').val(token.email));
// submit the form, uncomment to make this happen
$form.get(0).submit();
}
});