【发布时间】:2020-01-11 14:19:21
【问题描述】:
我正在使用以下脚本通过 Stripe checkout V3 进行付款。我希望这将使我的付款准备好 SCA,但是我被告知我的付款仍未准备好 SCA。我是否缺少下面的一些代码?
var stripe = Stripe('XXXX');
var elements = stripe.elements();
var card = elements.create('card', {
style: style
});
// Add an instance of the card Element into the `card-element` <div>
card.mount('#card-element');
// Handle real-time validation errors from the card Element.
card.addEventListener('change', function (event) {
var displayError = document.getElementById('card-errors');
if (event.error) {
displayError.textContent = event.error.message;
} else {
displayError.textContent = '';
}
});
// Handle form submission
var form = document.getElementById('payment-form');
form.addEventListener('submit', function (event) {
event.preventDefault();
stripe.createToken(card).then(function (result) {
if (result.error) {
// Inform the user if there was an error
var errorElement = document.getElementById('card-errors');
errorElement.textContent = result.error.message;
} else {
stripeTokenHandler(result.token);
}
});
});
// Send Stripe Token to Server
function stripeTokenHandler(token) {
// Insert the token ID into the form so it gets submitted to the server
var form = document.getElementById('payment-form');
// Add Stripe Token to hidden input
var hiddenInput = document.createElement('input');
hiddenInput.setAttribute('type', 'hidden');
hiddenInput.setAttribute('name', 'stripeToken');
hiddenInput.setAttribute('value', token.id);
form.appendChild(hiddenInput);
// Submit form
form.submit();
}
这是我的收费代码...
\Stripe\Stripe::setApiKey('XXXX');
$error = '';
$success = '';
try {
if (!isset($_POST['stripeToken']))
throw new Exception("The Stripe Token was not generated correctly");
$charge = \Stripe\Charge::create(
array(
'amount' => $_POST['stripeAmount'],
'currency' => 'gbp',
'source' => $_POST['stripeToken'],
"receipt_email" => $_SESSION["email"],
'description' => 'Booking - ' . $_SESSION['description'],
)
);
【问题讨论】:
-
虽然您可以使用 Card (id:
card_*****) 和 PaymentIntents,但我建议您关注 stripe.com/docs/payments/payment-intents/web -
谢谢,卡ID是如何工作的?
-
通常当你标记一张卡片(将那个标记保存给客户)你会得到一个
card_***对象,它可以用作PaymentIntent.payment_method -
我想我现在明白你的意思了。我需要更多地担心实际的收费方面,就像我上面修改过的代码一样。
标签: php jquery stripe-payments