Braintree - 自定义 - 在PaymentMethodReceived 上手动提交表单

2023-12-26

你好,很棒的互联网。

我正在尝试实施 Braintree 付款,到目前为止一切都很好。我已经成功地实现了具有我自己的外观和感觉的自定义表单。一切都很好。

现在,我正在添加对我提交的额外数据的验证,例如运输说明和其他好东西。

为了进行验证,我读到我需要实现回调“onPaymentMethodReceived”,该回调与随机数提交流程一起按顺序调用......因此最终将提交表单,让我有时间运行额外的验证。那么我当然希望使用 JS 提交表单。

该文档还指出,我必须确保将随机数添加到我所做的表单中。

我遇到的问题是一切正常,直到我必须手动提交表单。控制台指出 form.submit 不是函数。

如何从回调中提交表单?

<script>

function launchValidation(obj){
    //alert('launch validation')    
    alert('the nonce is ' + obj.nonce );
    $(".payment_method_nonce").val(obj.nonce);
    var form = document.getElementsByTagName('form')[0];     
    //validatePayForm()
    form.submit();    // console says the function does not exist?
}

var jqxhr = $.get( "/CreateBrainTreeToken", function(data) {

      braintree.setup( data, "custom", {
          id: "checkout",
          onPaymentMethodReceived: launchValidation
        });

    })
      .done(function() {
        //alert( "second success" );
      })
      .fail(function() {
        //alert( "error" );
      })
      .always(function() {
        //alert( "finished" );
      });

</script>

在上面的代码中你可以看到我设置了选项: onPaymentMethodReceived = onPaymentMethodReceived

如果我删除该行,则一切正常,因为自动提交没有拦截。问题是我需要验证,因此我需要在触发的回调中手动提交,并获取所有适当的数据。

那么为什么表单对象有些无效或者仍然被剥夺了像submit()这样的功能。

我希望在 JS 客户端随机数被获取(标记化)之后,可以手动提交表单。

我确信这是我忽略的简单事情。

Neil


K 我通过逐步进行客户端标记化来使其工作。效果很好,敏感字段不会到达服务器。

   var serverToken
   function tokenizeCard(){

        var client = new braintree.api.Client({clientToken: serverToken});
        client.tokenizeCard({
          number:  $("#number").val() ,
          cardholderName: $("#cardholder_name").val(),
          expirationMonth: $("#expiration_month").val(),
          expirationYear: $("#expiration_year").val(),
          cvv: $("#cvv").val(),
          // Address if AVS is on
          billingAddress: {
            postalCode: $("postal_code").val()
          }
        }, function (err, nonce) {

            theForm = document.forms[0]

             var input = document.createElement('input');
                input.type = 'hidden';
                input.name = 'payment_method_nonce';
                input.value = nonce;
                theForm.appendChild(input);

              if( validatePayForm() )
                  document.forms[0].submit()
        });

    }


    var jqxhr = $.get( "/CreateBrainTreeToken", function(data) {

          serverToken = data;
          /*
          braintree.setup( data, "custom", {
              id: "checkout",
              onPaymentMethodReceived: function(obj){
                  document.forms[0].submit();

              }
            });
          */

        })
          .done(function() {
            //alert( "second success" );
          })
          .fail(function() {
            //alert( "error" );
          })
          .always(function() {
            //alert( "finished" );
          });

我还可以运行我的验证,插入随机数并在良好时将其全部发送出去。

Neil

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Braintree - 自定义 - 在PaymentMethodReceived 上手动提交表单 的相关文章

  • 在有限的上下文中运行 JS 代码

    我正在尝试奔跑trusted 隔离 上下文中的 JS 代码 基本上想出了这个方法 function limitedEval src context return function with this return eval src call
  • 使用 Ajax Jquery post 请求进行 Json 劫持

    昨天 我读了一些关于如何预防的好文章使用 Asp Net MVC 进行 Json 劫持 http haacked com archive 2009 06 24 json hijacking aspx 规则是 永远不要通过 get 请求发送
  • JavaScript 字符串中的脚本标签[重复]

    这个问题在这里已经有答案了 我遇到一个问题 即 JavaScript 中带引号的字符串内有结束脚本标记 并且它正在杀死脚本 我认为这不是预期的行为 可以在这里看到这样的示例 http jsbin com oqepe edit http js
  • 将时间戳转换为一个数组

    在应用程序脚本 谷歌表中运行 我从 API 获取时间戳并返回此结果 1 6370611672429312E18 1 63706107263277082E18 我执行此代码并且工作正常 但问题不在数组中 我每次都需要它在数组中 const t
  • 我可以在 GWT 中使用第三方 Javascript 库吗

    例如穆工具 用 js 编码对我来说很舒服 但显然不适合所有人 你当然可以 最好的事情就是给自己写一些好看的JavaScript 覆盖类型 http code google com webtoolkit doc latest DevGuide
  • 正则表达式中连字符的这种用法有效吗?

    NB I only想知道它是否是正则表达式定义中未转义连字符的有效应用 它是not关于匹配电子邮件 连字符或反斜杠的含义 量词或其他任何内容的问题 另外 请注意 链接的答案并没有真正讨论转义 未转义连字符之间的有效性问题 通常我会像这样声明
  • 检查用户设备的 GPS 是否开启

    我正在使用 jQuery Mobile 和 PHP 开发一个应用程序 我没有使用 Phonegap 或其他框架 我需要找到用户的geolocation 如果用户设备的 GPS 关闭 那么我无法获取位置 现在我需要查找用户设备的 GPS 是否
  • 如何显示接下来的三个图像单击加载更多按钮

    我需要一个加载更多按钮来显示图像 页面加载时 我显示 3 个图像 单击 加载更多 按钮后 接下来的 3 个图像将显示在屏幕上 我尝试了下面的代码 但它不起作用 你能帮我解决这个问题吗 function item slice 0 2 show
  • jquery 中的函数返回未定义[重复]

    这个问题在这里已经有答案了 我在 jquery 中调用的函数返回未定义 我检查了该函数 当我对其进行调试时 它返回正确的数据 function addToPlaylist component type add to pl value pl
  • 从链接打开本地文件夹

    如何通过单击任何链接打开本地文件夹视图 我尝试了很多选择 例如 a href Open folder a or a Open folder a or a Open folder a 解决方案 启动可下载链接 以下内容适用于所有浏览器 但一如
  • ES6 模块范围

    我有代码 lib js var a a export var b b main js console log a a variable is not available in a global scope import b from lib
  • 从字节数组设置 img src

    我需要设置img src我在对象中拥有的字节数组的属性 img
  • 如何从 CSS 选择器中提取类名?

    故事 我目前正在构建一个 ESLint 规则 以警告在 CSS 选择器定位器中使用引导布局导向和角度技术类 目前我在字符串方法中使用简单的子字符串 for var i 0 i lt prohibitedClasses length i if
  • 为什么 call 比 apply 快那么多?

    我想知道是否有人知道why call比apply 在 Chrome 中 速度大约快 4 倍 在 Firefox 中快 30 倍 我什至可以制作自定义原型 apply2 在大多数情况下 运行速度是apply 这个想法取自角度 Function
  • 轮播滑动(未滑动)事件上的火灾事件,Bootstrap 3

    Bootstrap 2 似乎可以很好地处理幻灯片事件 请参阅这个问题 https stackoverflow com questions 9651466 how to attach slide slid events to the boot
  • 了解 Document.createElement()

    我在用着GWT及其底层DOM能力 我基本上想要实现的是 Have a div包含一些文本的元素 其中一些文本将被包围span元素 span 元素可相互拖动并提供上下文菜单 New span元素可以由最终用户动态创建 它可能是这样的 在应用程
  • 如何解决“消息端口在收到响应之前已关闭”的问题。在 JavaScript 中的 window.location.reload() 之后

    我遇到了 javascript 问题 从 chrome v73 0 3683 86 开始 每当我在 window location reload 函数之后运行 javascript 代码时 它总是给我错误 Unchecked runtime
  • Vue - 调度完成后调用 store getter?

    我正在使用 Laravel 5 7 Vue2 Vuex 我在调度调用完成后让 Vue 返回存储值时遇到一些困难 我的申请流程如下 我单击一个提交按钮 该按钮调用组件上的 validate Validate 分派到我的 addLease 操作
  • 如果 POST 响应仅包含 ID,如何将数据保存到我的 Ember 存储?

    Ember 数据期望我的服务器在每次成功后返回完整的对象POST 但是 我的 API 只返回一种元对象 其中包含id 当 Ember 收到此对象时 记录中的现有数据将被删除 除了id 例如 当我这样做时 var asset App Asse
  • 将引导程序弹出框保留在视口内

    我正在尝试使用带有按钮的侧边栏创建一个菜单 每个按钮都有一个指定的包含相关数据的弹出窗口 不幸的是 其中一个弹出窗口可能包含任意数量的行 并且在某些情况下它可能部分位于视口之外 See http jsfiddle net bfd9f 1 h

随机推荐

  • 何时导入 uno

    使用 Ubuntu 12 04 和 LibreOffice 3 5 7 2 我正在尝试了解 Libre Office 中的 Python 脚本 我在网上阅读了很多内容并查看并运行了一些示例 我注意到有些示例导入 uno 有些则不导入 它们都
  • asp.net requiredfieldvalidator 在visible=false 时不起作用

    我的 asp net 站点中有一些必需的字段验证器 我想将其设置为不可见 直到需要为止 但是当我将它们设置为visible false时它们不会触发 如果将它们设置为visible true 它们就会起作用 这是该控件的正确行为还是错误的行
  • MonoTouch 绑定到 ObjectiveC 库不起作用

    the h import
  • vscode 更漂亮的设置

    我最近换了一台新电脑 但很难找到更漂亮的设置 我认为它更漂亮 可能是 eslint 这张 gif 说明了正在发生的事情 http g recordit co H871hfT9Sv gif http g recordit co H871hfT
  • 如何将文件设置为“适合一页上的所有列”设置

    我有一个要求 由 Apache POI 生成的文件需要生成一个带有以下内容的文件使所有列适合一页设置 https stackoverflow com questions 25741049 how to set fit all columns
  • 在 hive 中生成星型模式

    我来自 SQL 数据仓库世界 我通过平面提要生成维度和事实表 在一般的数据仓库项目中 我们将数据源分为事实和维度 前任 我对 Hadoop 完全陌生 我开始知道我可以在 hive 中构建数据仓库 现在 我熟悉了使用 guid 我认为它可以用
  • 在 Eclipse 中,如何添加工具栏按钮来运行批处理文件?

    假设我有一个批处理文件C myscript bat 如何向 eclipse 添加一个工具栏按钮 按下该按钮时运行批处理文件 Under 运行 gt 外部工具 gt 外部工具配置 您可以定义任何外部程序 包括Windows批处理文件 定义后
  • 当我尝试读取正在写入的文件时,为什么会收到未处理的异常:System.IO.IOException?

    我有两个 C 应用程序 一个是逐行读取文件 文件 A 并将其内容写入另一个文件 文件 B 第二个应用程序使用 FileSystemWatcher 来查看文件 B 的更新时间 并报告程序启动时和文件更改时之间的行号差异 这就是我现在想做的所有
  • golang中init()和sync.Once的区别

    我看到了在 Go 中使用单例模式的两种方法 Using init 功能 Using sync Once在同步包中 有什么区别 哪一个在线程安全方面更好 If init 解决了所有问题然后是什么sync Once用于 Package init
  • PhantomJS:将 Javascript 添加到网页(而不是 PhantomJS 环境)

    我想添加一个 JavaScript标签 包含或来源不受信任的代码 到网页 PhantomJS 访问 并使页面的行为就像页面最初包含该标签一样 includeJs injectJs 不做我需要的事情 他们将代码注入到我的 PhantomJS
  • 材质 Angular Accordion 标题/标题高度

    所以我一直在尝试在我的 Web 应用程序开发中采用 Materials Accordion 然而 随着内容的增长 使标题的大小扩大会遇到一些麻烦 我的标题预计有相当多的行来提供摘要 而不仅仅是 1 行 如果我对材质标题高度进行硬编码 则会导
  • SQL Profiler 模板丢失 - 需要额外的修复步骤吗?

    我遇到的问题是找不到 SQL Profiler 模板 我正在使用 SQL Server Profiler 10 0 1600 22 安装 并且正在远程连接到 2008 R2 所以我知道 修复 您可以将模板文件夹从同一目录中的 100 复制到
  • 打开场景生成器时出错

    我正在使用 Javafx Eclipse 制作一个程序 当我使用场景生成器打开该程序时出现错误 这是错误 Opening the file with SceneBuilder failed Try setting the absolute
  • python导入cv2错误

    每当我尝试导入 cv2 时 我总是会收到此错误 import cv2 Traceback most recent call last File
  • R tryCatch 处理一种错误

    我想知道这是检查 tryCatch 函数类型的错误或警告的方法 例如在 Java 中 try driver findElement By xpath locator click result true catch Exception e i
  • yii2 上的多个数据库连接

    我正在尝试在 yii2 框架上使用多个数据库连接 在 config 文件夹内的 db php 文件下 我有这段代码 return class gt yii db Connection components gt db1 gt class g
  • 退出/完成应用程序/活动 - android

    我有 4 项活动说Act1 Act2 Act3 and Act4 Act1 中的按钮打开 Act2 Act2 中的按钮打开 Act3 Act3 中的按钮打开 Act4 我想要做两件事 我在第 4 幕中有一个按钮 将用户定向到第 1 幕 问题
  • 指向成员函数的指针作为全局函数的参数

    有这样的代码 void foo void fun ptr class B public B foo some fun void some fun 编译错误 error argument of type void B does not mat
  • 在家学习内核黑客和嵌入式开发? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 我总是被内核黑客和嵌入式系统的世界所吸引 有没有人有关于开始搞乱这些东西的好教程 容易获得的硬件 诸如
  • Braintree - 自定义 - 在PaymentMethodReceived 上手动提交表单

    你好 很棒的互联网 我正在尝试实施 Braintree 付款 到目前为止一切都很好 我已经成功地实现了具有我自己的外观和感觉的自定义表单 一切都很好 现在 我正在添加对我提交的额外数据的验证 例如运输说明和其他好东西 为了进行验证 我读到我