我没有使用Javascript的经验,并且一直在与Stripe进行集成。我逐渐能够了解他们的代码是如何工作的,但是需要有关如何将结果与表单一起发送回我的下一个函数的建议。
这是可以使用的旧代码,并且可以一次付款发送回“令牌”:
var purchaseButton = document.getElementById('purchase-button');
purchaseButton.classList.add('is-loading');
stripe.createToken(card).then(function (result) {
if (result.error) {
// Inform the customer that there was an error.
var errorElement = document.getElementById('card-errors');
errorElement.textContent = result.error.message;
purchaseButton.classList.remove('is-loading');
} else {
// Send the token to your server.
stripeTokenHandler(result.token);
}
});
}
});
function stripeTokenHandler(token) {
// Insert the token ID into the form so it gets submitted to the server
var form = document.getElementById('payment-form');
var hiddenInput = document.createElement('input');
hiddenInput.setAttribute('type', 'hidden');
hiddenInput.setAttribute('name', 'stripeToken');
hiddenInput.setAttribute('value', token.id);
form.appendChild(hiddenInput);
// Submit the form
form.submit();
}
这是帖子中的“ stripetoken”,我想在下面使用我的较新代码并获得相同的效果,但要检索此处所述的result.paymentMethod:https://stripe.com/docs/js/payment_intents/create_payment_method
这是我的新代码正在与Stripe对话,我只需要获取呼叫的结果信息
var purchaseButton = document.getElementById('purchase-button');
purchaseButton.classList.add('is-loading');
stripe.createPaymentMethod({
type: 'card',
card: card,
})
.then(function (result) {
if (result.error) {
// Inform the customer that there was an error.
var errorElement = document.getElementById('card-errors');
errorElement.textContent = result.error.message;
purchaseButton.classList.remove('is-loading');
} else {
// Send the token to your server.
paymentmethod(result.token);
}
});
}
});
function paymentmethod(token) {
// Insert the token ID into the form so it gets submitted to the server
var form = document.getElementById('payment-form');
var hiddenInput = document.createElement('input');
hiddenInput.setAttribute('type', 'hidden');
hiddenInput.setAttribute('name', 'paymentmethod');
hiddenInput.setAttribute('value', token.paymentMethod);
form.appendChild(hiddenInput);
// Submit the form
form.submit();
}
这是我理解JS的基本方法。我在想这段代码,它将带有一个名为“ paymentmethod”的发布对象,其值将是“结果”
我是否想得太多?
答案 0 :(得分:0)
您的代码就在这里!如果您要创建的是付款方式而不是令牌,则可以保证您可以使用result.paymentMethod
而不是result.token
来获得付款方式。在您的paymentmethod
函数中,您要附加付款方式的ID(pm_xxxyyyyzzz
),假设您调用了传递给该函数的变量token
,请尝试token.id
调试JavaScript时,我总是建议您使用browser console并使用console.log
语句将对象打印到控制台(例如,console.log(result);
以了解该对象的结构)。
除此之外,您还可以查看Stripe的documentation和samples,以了解这些新付款流程的最佳做法。虽然您仍然可以使用上述付款方式收集卡的详细信息,但Stripe的新流程可能会简化事情,并且更适合处理需要3D安全身份验证的卡之类的条件。