我曾经看到有一种方法'onSubmitEncryptForm'使用以前版本的Braintree中的ajax提交付款表单:
var braintree = Braintree.create("CLIENT_SIDE_KEY");
braintree.onSubmitEncryptForm('payment-form-id', ajax_submit_function);
但今天我正在尝试整合新版本(v2或v.zero)时,我在PHP(服务器端)和javascript(客户端)的文档中找不到关于ajax提交的任何内容。
我需要仅使用信用卡整合付款。此外,它还说“如果您使用表单执行更复杂的操作,例如您自己的提交回调或自定义验证,我们建议使用较低级别的集成。为此,请创建一个Braintree客户端并使用它来标记卡片数据:”。
var client = new braintree.api.Client({clientToken: "CLIENT-TOKEN-FROM-SERVER"});
client.tokenizeCard({number: "4111111111111111", expirationDate: "10/20"}, function (err, nonce) {
// Send nonce to your server
});
我没有得到任何关于如何进一步使用该随机数的线索。
如果有人帮助我克服这一点,我将不胜感激。谢谢。
答案 0 :(得分:4)
您可以使用tokenizeCard
的回调向您的后端发送XHR请求,就像使用onSubmitEncryptForm
一样。这是一个基本的PHP后端示例:
客户端(documentation)
var client = new braintree.api.Client({clientToken: "<%= @client_token %>"});
// use the card details to request a nonce, passing in the callback we define below:
client.tokenizeCard({number: "4111111111111111", expirationDate: "10/20"}, onCardTokenization);
function onCardTokenization (err, nonce) {
if (err) { return; }
// we've gotten the nonce
// let's go ahead and send it to our backend
// to process the transaction
$.post('/checkout', {
nonce: nonce,
})
.success(function () {
document.body.innerHTML = 'success.'
})
}
服务器端(documentation)
$nonce = $_POST["nonce"]
$result = Braintree_Transaction::sale(array(
'amount' => '100.00',
'paymentMethodNonce' => $nonce
));