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

本文关键字:nonce 数据 响应 延迟 | 更新日期: 2023-09-27 18:30:00

在我的结账表单中,我必须使用一些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值

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

我们非常感谢每一次练习。

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

Braintree.js劫持表单提交事件,因此您应该能够从paymentMethodNonceReceived回调中调用$.validate,表单将永远不会提交。我想你的集成最终会是这样的:

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;
      }
    });
  }
});  

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