难道没有像'onSubmitEncryptForm' on' onSubmitEncryptForm'如先前版本一样,通过Braintree Payment v2中的ajax提交付款表格?

时间:2014-07-30 11:51:46

标签: javascript ajax braintree

我曾经看到有一种方法'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
    });

我没有得到任何关于如何进一步使用该随机数的线索。

如果有人帮助我克服这一点,我将不胜感激。谢谢。

1 个答案:

答案 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
));