Braintree Drop-in UI - 使用AJAX发送表单

Mar*_*tin 9 ajax jquery braintree

我正在尝试实现Braintree Drop-in UI,我想使用自定义jQuery ajax方法发送表单.以前,我曾经使用jQuery serialize()方法发送(非插入式UI)表单,但是对于新的(动态加载的)Dropin UI表单,serialize()方法似乎不起作用(payment_method_nonce值)设置为空).但是,通过基本的html表单(没有ajax)发送表单似乎工作正常,所以我的payment_method_nonce就在那里,它只是在路上迷路了.

如何确保serialize()方法不会丢失payment_method_nonce值?

或者作为一个更一般的问题,我如何使用ajax发送Drop-in UI表单?

我知道在执行braintree.setup时会有一个paymentMethodNonceReceived标志,但这在我的情况下不起作用,因为我需要保留用于发送请求/处理响应的代码与braintree.setup分开.

干杯

Mar*_*tin 13

显然,paymentMethodNonceReceived方法是最终的方法.创建令牌后,我使用它创建一个隐藏字段,该字段是表单的一部分,然后可以使用serialize()方法序列化而没有任何问题.这是一个代码示例:

<script type="text/javascript">
    braintree.setup("PaymentTokenGoesHere", "dropin", {
        container: "myDiv",
        paymentMethodNonceReceived: function (event, nonce) {
            $('#myForm').append("<input type='hidden' name='payment_method_nonce' value='" + nonce + "'></input>");
            CallAjaxMethod();
        }
    });
</script>
Run Code Online (Sandbox Code Playgroud)

  • 我在SDK团队的Braintree工作.这是我建议的方法.很高兴它成功了. (6认同)
  • **``paymentMethodNonceReceived``不再有效**.它已被弃用,支持`onPaymentMethodReceived``.获取现时:``onPaymentMethodReceived:function(obj){console.log(obj ['nonce']); }`` (4认同)