结帐页面中的 Woocommerce 付款方式检测

2024-02-15

我正在使用 woocommerce 插件和 woocommerce 的 Braintree 扩展进行付款。我已启用 woocommerce Braintree 的卡和贝宝付款来结账。我试图弄清楚如何在用户实际结账和付款之前知道用户选择哪个支付网关。任何hooks under 吴商务 or 布伦特里查找信用卡单选按钮或贝宝付款单选按钮已选中以进行付款。

不过,我知道我们可以在成功付款后检测到用于特定订单的网关,但我想要在结账页面中付款完成之前选择的网关信息。有帮助吗?


您可以在结帐页面上使用一些基本的 JavaScript 检测所选的付款方式,并通过挂钩使用 PHP 运行您的自定义代码woocommerce_checkout_update_order_review action.

第一的, 您还应该将 JS 代码放置在结帐页面、结帐模板或主题的页眉/页脚中,以便您可以检测用户何时更改了付款方式选项,并在之后运行您自己的代码。

JS code:

jQuery(document).ready( function() {

    jQuery( "#payment_method_bacs" ).on( "click", function() {
        jQuery( 'body' ).trigger( 'update_checkout' );
    });

    jQuery( "#payment_method_paypal" ).on( "click", function() {
        jQuery(document.body).trigger("update_checkout");
    });

    jQuery( "#payment_method_stripe" ).on( "click", function() {
        jQuery(document.body).trigger("update_checkout");
    });

});

请注意,对于您启用的每种付款方式,您应该添加“点击”事件。它为您提供了在触发自定义代码时进行微调的选项。 防止点击事件仅运行一次您应该在第一个 JS 代码下方添加下一个 JS 代码块。

jQuery( document ).ajaxStop(function() {

    jQuery( "#payment_method_bacs" ).on( "click", function() {
        jQuery(document.body).trigger("update_checkout");
    });

    jQuery( "#payment_method_paypal" ).on( "click", function() {
        jQuery(document.body).trigger("update_checkout");
    });

    jQuery( "#payment_method_stripe" ).on( "click", function() {
        jQuery(document.body).trigger("update_checkout");
    });
});

只是ajax后触发的代码相同。 在两个 JS 代码块中添加您的付款选项你实际上是在使用.

之后,您将自定义 PHP 代码放入 checkout 中,如下所示:

if ( ! function_exists( 'name_of_your_function' ) ) :
    function name_of_your_function( $posted_data) {

        // Your code goes here

     }

endif;

add_action('woocommerce_checkout_update_order_review', 'name_of_your_function');

这段代码可以放在functions.php中。

以下是完整的 PHP 代码,当在结帐页面上选择特定付款选项时,该代码会检测并运行:

function name_of_your_function( $posted_data) {

    global $woocommerce;

    // Parsing posted data on checkout
    $post = array();
    $vars = explode('&', $posted_data);
    foreach ($vars as $k => $value){
        $v = explode('=', urldecode($value));
        $post[$v[0]] = $v[1];
    }

    // Here we collect payment method
    $payment_method = $post['payment_method'];

    // Run code custom code for each specific payment option selected
    if ($payment_method == "paypal") {
        // Your code goes here
    }

    elseif ($payment_method == "bacs") {
        // Your code goes here
    }

    elseif ($payment_method == "stripe") {
        // Your code goes here
    }
}

add_action('woocommerce_checkout_update_order_review', 'name_of_your_function');

我希望这有帮助! 这是一个非常强大的选项,可以在结帐页面上运行所有自定义逻辑!

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

结帐页面中的 Woocommerce 付款方式检测 的相关文章

  • gmail 不断阻止 PHPmailer 登录

    我将在接下来的 8 小时内部署一个网站 而 Gmail 刚刚停止接受 PHPmailer 登录我的帐户 起初 它在测试过程中工作了几个小时 然后 它就停止工作了 我已经允许所有允许不太安全的应用程序从 gmail 登录 但它仍然不允许 ph
  • 简单的 PHP 条件帮助: if($Var1 = in list($List) and $Cond2) - 这可能吗?

    这是一个可能的功能吗 我需要检查一个变量是否存在于我需要检查的变量列表中 并且 cond2 是否为 true 例如 if row name 1 2 3 Cond2 doThis 它对我不起作用 我在复制粘贴中更改的只是我的列表和变量名称 i
  • MySQL/PDO::quote() 尽管使用 PDO::PARAM_INT 参数,但仍在整数周围加上引号

    无论我传递给什么值 数据类型对 它都会出现 pdo gt quote value type 它总是将其引用为字符串 echo pdo gt quote foo PDO PARAM STR foo as expected echo pdo g
  •  
    标记内删除

    我制作了简单的 BBCode 脚本 一切正常 但后来我使用了一个 javascript 库来美化我的代码 pre pre 现在我面临的唯一问题是 br 每行代码后面的标签 pre pre tags 所以问题是我怎样才能删除 br 标记哪些在
  • PHP 会话不适用于游戏

    我正在尝试模仿一款名为 SKUNK 用骰子玩 的游戏来完成一项作业 我无法让会话正常工作 这是我第一次使用 PHP 我还被告知无需会议即可完成 这是我的代码
  • 检查 PHP 中“@”字符后面的单词

    我现在正在制作一个新闻和评论系统 但是我已经在一个部分上停留了一段时间了 我希望用户能够在 Twitter 上引用其他玩家的风格 例如 用户名 该脚本看起来像这样 不是真正的 PHP 只是想象脚本 3 string I loved the
  • 如何使用 php 发送服务器错误响应?

    一旦用户点击删除按钮我的 jQuery 脚本要求服务器删除所选项目 现在我想要我的php发送成功或错误响应的脚本 是否有可能触发错误回调万一该项目无法删除 Thanks 我的 jQuery 代码 ajax type post url myA
  • 将“php”作为 shell 脚本执行时的自定义 php.ini 文件

    我在跑php作为 shell 脚本 我不确定 shell脚本 是否正确 该文件以 usr bin php 这很好用 但 MongoDB 类没有正确加载php ini文件 具有extension mongo so 未使用 我该如何使用它tha
  • 是否可以使用 PHP 重定向发送 POST 数据?

    更新 这不是重复的如何使用 PHP 发送 POST 请求 https stackoverflow com questions 5647461 how do i send a post request with php 那里的解决方案对我不起
  • 为什么我需要结束 ob_start()?

    php 文档建议我应该用 ob end flush 结束每个 ob start 我在网站的每个页面上使用一个 只是为了允许我在应用程序中的任何位置使用 firephp 日志方法 该应用程序运行良好 但我想知道是否有任何我不知道的东西可能有害
  • 如何在原则 2 迁移中删除外键

    我想在原则 2 迁移中删除外键 但没有 dropForeignKeyConstraint 有谁知道怎么丢掉吗 public function down Schema schema table schema gt getTable table
  • PHP 脚本可以在终端中运行,但不能在浏览器中运行

    我正在尝试执行exec命令 但我遇到了问题 当我运行以下代码时 当我通过浏览器运行它时它不起作用 但如果我把输出 str将其复制并粘贴到终端中 它工作得很好 造成这种情况的原因是什么 我该如何解决 目前我正在运行localhost php
  • PHP preg_filter 返回意外的长值

    尝试在 Woocommerce 中删除标签并过滤值 但无法以正确的格式获取它 有东西有腥味 我正在使用WC gt cart gt get cart subtotal 来检索该值 在此示例中 我的值是 2 429kr 原始返回值是 span
  • 通过 $_SESSION 从一个脚本发送到另一个脚本期间数据丢失

    我正在尝试将一个充满属性的对象从一个 PHP 发送到另一个 PHP SESSION object obj where obj是一个用 foreach 循环指定的对象 foreach array of objects as obj SESSI
  • 跟踪用户何时点击浏览器上的后退按钮

    是否可以检测用户何时单击浏览器的后退按钮 我有一个 Ajax 应用程序 如果我可以检测到用户何时单击后退按钮 我可以显示适当的数据 任何使用 PHP JavaScript 的解决方案都是优选的 任何语言的解决方案都可以 只需要我可以翻译成
  • 表单提交后如何保留选择字段中的选定值?

    我有一个用于将票证上传到数据库的主页 我有一个选择字段 我想保留用户在提交表单之前选择的值 但它没有发生 这是我选择字段的代码
  • php 错误 fopen(): 文件名不能为空

    发送带有附件代码的电子邮件工作正常 最近我们已将文件传输到另一个托管服务器 idk 发生了什么 它显示以下错误 警告 fopen 第 106 行 home hugerecruitmetnt public html validatecva p
  • Doctrine EntityManager 清除嵌套实体中的方法

    我想用学说批量插入处理 http doctrine orm readthedocs org en latest reference batch processing html为了优化大量实体的插入 问题出在 Clear 方法上 它表示此方法
  • 一次播种多行 laravel 5

    我目前正在尝试为我的用户表播种 如果我像这样尝试 2 行 就会失败 如果我只使用单个数组而不是 users 数组内的 2 个数组来创建一些假数据 那么效果很好 我做错了什么 正确的方法是什么 class UserTableSeeder ex
  • 无法显示 Laravel 欢迎页面

    我的服务器位于 DigitalOcean 云上 我正在使用 Ubuntu 和 Apache Web 服务器 我的家用计算机运行的是 Windows 7 我使用 putty 作为终端 遵循所有指示https laracasts com ser

随机推荐

  • eclipse的jade模板语法支持吗?

    我刚刚开始使用nodejs 模板引擎jade 不幸的是 我的 IDE eclipse 似乎不支持此语法 并且无法正确突出显示 是否可以向 eclipse 添加对 jade 文件的支持 作为 Nodeclipse 工作 www nodecli
  • Google应用程序脚本网络应用程序,如何创建登录按钮?

    我在 Google Drive 中创建了由 Google 电子表格支持的脚本 并将其发布为网络应用程序 设置 执行应用程序为 我 和 谁有权访问该应用程序 任何人 甚至匿名 主页提供电子表格中的 html 内容 基本功能是 随机互联网用户
  • 为什么rotateY(翻转)css3动画在Chrome中闪烁?

    我做了一个jsFiddle http jsfiddle net Grezzo JR2Lu http jsfiddle net Grezzo JR2Lu 当您按下键盘上的 i 键时 图片会翻转以显示一些文本 但在翻转动画期间 在 Chrome
  • 使用 C# 并行下载多个文件

    我想使用 C 并行下载文件 为此 我编写了这段代码 该代码运行良好 但问题是 UI 冻结了 using System using System Collections Generic using System IO using System
  • Android Loopj Async Http 在 1.4.5 更新后崩溃

    Android Loopj Async Http lib 的新更新已发布 并且发生了很大变化 现在需要手动设置Looper prepare 否则默认使用同步模式而不是异步模式 我不明白我需要设置它的地方 Logcat 07 09 08 16
  • 如何重新运行 Apache Airflow 中所有失败的任务?

    我有一个包含数万个任务的 Apache Airflow DAG 运行后发现其中少数任务失败了 我修复了导致某些任务失败的错误 并且我想重新运行仅失败的任务 这SO帖子建议使用 GUI 来 清除 失败的任务 如何在 Airflow 上重新启动
  • Express app.set 与 app.use

    我意识到这可能是一个相当菜鸟的问题 并且有大量关于这件事的文章 但我很难找到对我来说清楚且有意义的解释 我在stackoverflow也没有找到这个问题 我的问题很简单 在express中 app set和app use之间有什么区别 我的
  • Crystal Reports - 值不能为空。参数名称:窗口

    我最近在尝试通过对话框将水晶报表表单加载到我的 WPF 应用程序中时遇到了一个不寻常的错误 该报表将显示为加载几秒钟 然后抛出一个错误 指出 值不能为空 参数名称 窗口 这让我很困惑 据我所知 水晶报表不使用名为 window 的参数 这是
  • Django 中的请求工厂中没有数据的 POST

    我正在将 django 应用程序从 1 x 移动到 2 2 运行单元测试时 出现有关将 None 作为数据发布的错误 以前的版本允许发None吗 有没有办法通过 RequestFactory 发布 None 我不想给出空字符串 因为需要验证
  • 使用两个字段的 Elasticsearch 日期范围查询

    我正在存储具有两个字段的文档 startDate 和 endDate 我想使用输入日期运行弹性查询并返回 startDate 和 endDate 包含该日期的所有文档 例如 doc1 source startDate 2015 01 01
  • 开窗器焦点,或活动

    我想在新选项卡中打开一个窗口 但是当我希望该开启页面处于活动状态 而不是新页面时 我该怎么做 非常感谢 我的代码是这样的 要将焦点集中到新窗口 但您不希望这样 并且默认情况下它可能会具有焦点 var newWindow window ope
  • 在数据框中应用函数时,dim(X) 必须具有正长度

    我正在尝试将此函数应用于数据框列 best recom lt function x n 1 y lt result2 x order result2 x n inds which result2 x y arr ind TRUE recom
  • 在 div 中垂直和水平居中文本

    我有一个 div 其中包含覆盖有文本的图形背景 我想使这个元素水平和垂直居中 但我无法让文本垂直居中 到目前为止 我有以下代码 div div img src buttonbackground png class stretch alt d
  • Visual Studio 2013 - Git - 获取远程分支

    我开始使用 Visual Studio 2013 和 Visual Studio Online 的内置 Git Team Explorer 工具 我非常熟悉如何通过 Git Shell 执行此操作 但似乎不知道如何通过 VS 2013 界面
  • 如何停止/退出 AWS Glue 作业 (PySpark)?

    我成功运行了一个 AWS Glue 作业 可以转换数据以进行预测 如果达到特定条件 我想停止处理并输出状态消息 正在运行 if specific condition is None s3 put object Body json str B
  • 应用程序被终止时是否可以收到 FCM 推送通知?

    我正在开发一个电子邮件应用程序 我希望用户在收到新电子邮件后立即收到推送通知 为此 我使用 FCM 我刚刚通过以下链接尝试使用 FCM 推送通知 为了测试 FCM 提供哪些功能 但我面临的问题是 当应用程序位于前台或后台时 设备会收到推送通
  • 为什么值类型创建在堆栈上而引用类型创建在堆上?

    编程语言书籍通常解释说 值类型是在堆栈上创建的 而引用类型是在堆上创建的 我的问题是为什么 我的问题是为什么 他们为什么要 解释 这一点 因为有时作者自己也不太了解 有时他们又懒得正确解释 事实却相当复杂 幸运的是 埃里克 利珀特 Eric
  • 使用 std::string 保存二进制数据以避免手动动态内存管理是否有效

    注意base64 decode in http www adp gmbh ch cpp common base64 html http www adp gmbh ch cpp common base64 html std string ba
  • 如何在rails下的webrick中设置access-control-allow-origin?

    我编写了一个小型 Rails 应用程序 通过 xmlhttprequests 向另一个站点提供内容 该站点将从另一个域运行 不可能让它们在同一服务器上运行 我了解我需要在 Rails 服务器上设置 access control allow
  • 结帐页面中的 Woocommerce 付款方式检测

    我正在使用 woocommerce 插件和 woocommerce 的 Braintree 扩展进行付款 我已启用 woocommerce Braintree 的卡和贝宝付款来结账 我试图弄清楚如何在用户实际结账和付款之前知道用户选择哪个支