使用自定义表单 symfony 进行条纹结帐
Stripe checkout with custom form symfony
我有一个结帐表格,我用它来使用 Symfony 和 Payum.
将购物车详细信息发送到不同的支付网关,例如 paypal
现在我正在尝试将付款详细信息发送到 stripe,以防用户选择 stripe 结账选项。目前与 stripe 的集成工作正常,我可以发送付款并从 stripe 获得响应但是为了将信用卡详细信息发送到 stripe 我被重定向到 capture
我看到了 "pay with card" 按钮,如果我点击它,弹出窗口似乎会输入信用卡详细信息
我想做的是允许用户在我拥有的结帐表单上添加信用卡详细信息,而不是您在弹出窗口中看到的表单。有可能实现这一目标吗?我如何使用自己的表单将数据发送到条带而不是使用条带弹出窗口?
这是条带的示例 In Javascript:
包括Stripe.js
<script type="text/javascript" src="https://js.stripe.com/v2/"></script>
设置您的可发布密钥:
Stripe.setPublishableKey('YOUR_PUBLISHABLE_KEY');
发送数据:
Stripe.card.createToken({
number: $('.card-number').val(),
cvc: $('.card-cvc').val(),
exp_month: $('.card-expiry-month').val(),
exp_year: $('.card-expiry-year').val()
}, stripeResponseHandler);
回复:
function stripeResponseHandler(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 {
// response contains id and card, which contains additional card details
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();
}
}
有关详细信息,请查看此 link
https://stripe.com/docs/stripe.js
Stripe Checkout 就是这样设计的。您看到按钮,单击它,填写所有必需的信息,就是这样。
如果您想提前填写信用卡详细信息,您可以这样做,但在那种情况下,您必须使用
- 条纹"direct"。在 Omnipay 中实施并通过 Omnipay Bridge 使用
你必须像这样通过 omnipay 信用卡 (better way is not implemented yet):
$order->setDetails(数组(
'card' => 新信用卡($data),
));
- 并使用
$this->forward
而不是重定向。因为信用卡没有保存到数据库中,所以您必须立即处理它们。 (example)
我有一个结帐表格,我用它来使用 Symfony 和 Payum.
将购物车详细信息发送到不同的支付网关,例如 paypal现在我正在尝试将付款详细信息发送到 stripe,以防用户选择 stripe 结账选项。目前与 stripe 的集成工作正常,我可以发送付款并从 stripe 获得响应但是为了将信用卡详细信息发送到 stripe 我被重定向到 capture
我看到了 "pay with card" 按钮,如果我点击它,弹出窗口似乎会输入信用卡详细信息
我想做的是允许用户在我拥有的结帐表单上添加信用卡详细信息,而不是您在弹出窗口中看到的表单。有可能实现这一目标吗?我如何使用自己的表单将数据发送到条带而不是使用条带弹出窗口?
这是条带的示例 In Javascript:
包括Stripe.js
<script type="text/javascript" src="https://js.stripe.com/v2/"></script>
设置您的可发布密钥:
Stripe.setPublishableKey('YOUR_PUBLISHABLE_KEY');
发送数据:
Stripe.card.createToken({
number: $('.card-number').val(),
cvc: $('.card-cvc').val(),
exp_month: $('.card-expiry-month').val(),
exp_year: $('.card-expiry-year').val()
}, stripeResponseHandler);
回复:
function stripeResponseHandler(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 {
// response contains id and card, which contains additional card details
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();
}
}
有关详细信息,请查看此 link https://stripe.com/docs/stripe.js
Stripe Checkout 就是这样设计的。您看到按钮,单击它,填写所有必需的信息,就是这样。
如果您想提前填写信用卡详细信息,您可以这样做,但在那种情况下,您必须使用
- 条纹"direct"。在 Omnipay 中实施并通过 Omnipay Bridge 使用
你必须像这样通过 omnipay 信用卡 (better way is not implemented yet):
$order->setDetails(数组( 'card' => 新信用卡($data), ));
- 并使用
$this->forward
而不是重定向。因为信用卡没有保存到数据库中,所以您必须立即处理它们。 (example)
- 并使用