【问题标题】:How can i get a stripe token on my controller with checkout?如何通过结帐在我的控制器上获得条带令牌?
【发布时间】:2019-04-25 11:51:58
【问题描述】:

我在使用结帐时尝试获取条带令牌,但是当我提交嵌入表单时,我没有 POST 方法,而且我也不知道如何在我的 php 控制器上拥有令牌。 这是我的代码:

<script>
var handler = StripeCheckout.configure({
    key: 'pk_test_WWlLRtqEY2yfJUlfA4TRRcyf',
    image: 'https://stripe.com/img/documentation/checkout/marketplace.png',
    locale: 'auto',
    token: function(token) {
        console.log(token.id);
    }
});

document.getElementById('customButton').addEventListener('click', function(e) {
    // Open Checkout with further options:
    handler.open({
        name: 'Musée du Louvre',
        description: 'Biletterie en ligne',
        currency: 'eur',
        amount: '{{ price }}' * 100,
        email: '{{ mail }}',
        allowRememberMe: false,
    });
    e.preventDefault();
});

// Close Checkout on page navigation:
window.addEventListener('popstate', function() {
    handler.close();
});

我试过这个:

<form post="" method="post">
my script code
</form>

但是当我点击支付页面时不要刷新。

有人可以帮助我吗?

【问题讨论】:

  • 使用您的令牌数据更新隐藏字段,然后将表单提交到您的后端并使用 Stripe php sdk 处理费用

标签: javascript php forms symfony stripe-payments


【解决方案1】:

想法是更改token 回调中的代码,以将令牌发送到您的服务器,而不是将其记录到控制台。

更改您的表单,为条带令牌 ID 和客户输入的电子邮件添加一个隐藏字段:

<form action="/your/route" method="POST" id="payment-form">
    <input type="hidden" id="stripeToken" name="stripeToken" value="tok_XXX" />
    <input type="hidden" id="stripeEmail" name="stripeEmail" value="email@example.com" />
</form>

然后更改您的 JS 以设置这些值并提交表单:

token: function(token) {
  $("#stripeToken").val(token.id);
  $("#stripeEmail").val(token.email);
  $("#payment-form").submit();
}

这将提交您的表单,您在服务器上的路由将收到 POST 参数中的 stripeTokenstripeEmail 值。

【讨论】:

    猜你喜欢
    • 2014-04-22
    • 1970-01-01
    • 2015-01-21
    • 2016-01-10
    • 1970-01-01
    • 2017-09-03
    • 1970-01-01
    • 2016-10-07
    • 2019-10-25
    相关资源
    最近更新 更多