nonce值响应延迟导致发送没有nonce值的数据

时间:2014-11-10 22:32:05

标签: c# braintree nonce

在我的结帐表单中,我必须使用一些jQuery验证插件来验证复杂的验证过程,在轨道的最后我发送表格数据,如下

 $.validate({
        modules: 'security , date',
        onSuccess: function () {
          
               // do Ajax call
            return false;
        },
    });

但我也使用像这样的Braintree设置

 braintree.setup($("#btCilentToken").val(), 'dropin', {
        container: 'dropin', paymentMethodNonceReceived: function (event, nonce) {

           //get nonce save to javascript variable that be used in my final ajax call           
        }
    });

现在问题是

发送表单数据 - >标记化开始 - >发送表单数据结束 - > (这里将nonce值响应回到服务器) - >标记化结束

所以我因为延迟错过了nonce值

我尝试了不同的对象,超时和其他一些方法,但问题是另一个对象内的函数阻止我按正确的顺序对它们进行排序

非常感谢每一次练习。

2 个答案:

答案 0 :(得分:1)

Braintree.js劫持了表单提交事件,因此您应该能够在$.validate回调中调用paymentMethodNonceReceived,并且永远不会提交表单。我想你的整合最终会看起来像这样:

braintree.setup($("#btClientToken").val(), 'dropin', {
  container: 'dropin',
  paymentMethodNonceReceived: function (event, nonce) {
    $.validate({
      modules: 'security , date',
      onSuccess: function () {
        // do Ajax call and use nonce
        return false;
      }
    });
  }
});  

答案 1 :(得分:0)

新的BT库解决了这个问题。