向 WooCommerce 中的特定支付网关添加自定义百分比费用和固定成本

2023-12-13

在 WooCommerce 中,我需要为特定支付网关申请自定义手续费。

按百分比成本收取的自定义手续费和按固定成本收取的自定义手续费。

我有这个2 pieces代码:

A) 百分比成本 - 函数

/************************************************************/
/*  PERCENTACE COST 
**/
// Add a custom fee based o cart subtotal
// Add a custom fee based o cart subtotal

add_action( 'woocommerce_cart_calculate_fees', 'custom_percentage_fee', 20, 1 );
function custom_percentage_fee ( $cart ) {
    if ( is_admin() && ! defined( 'DOING_AJAX' ) )
        return;

    if ( ! ( is_checkout() && ! is_wc_endpoint_url() ) )
        return; // Only checkout page

    $payment_method = WC()->session->get( 'chosen_payment_method' );

    if ( 'cod' == $payment_method ) {
        $surcharge = $cart->subtotal * 0.025;
        $cart->add_fee( 'Percentage Cost', $surcharge, true );
    }
}

// jQuery - Update checkout on methode payment change  
add_action( 'wp_footer', 'custom_checkout_jqscript' );
function custom_checkout_jqscript() {
    if ( ! ( is_checkout() && ! is_wc_endpoint_url() ) )
        return; // Only checkout page
    ?>
    <script type="text/javascript">
    jQuery( function($){
        $('form.checkout').on('change', 'input[name="payment_method"]', function(){
            $(document.body).trigger('update_checkout');
        });
    });
    </script>
    <?php
}

结果前端

enter image description here


B) 固定成本 - 功能

/************************************************************/
/*  FIXED COST 
**/
// Add a custom fee based o cart subtotal
add_action( 'woocommerce_cart_calculate_fees', 'custom_fixed_fee', 10, 1 );
function custom_fixed_fee ( $cart ) {
    if ( is_admin() && ! defined( 'DOING_AJAX' ) )
        return;

    if ( 'cod' === WC()->session->get('chosen_payment_method') ) {
        $fee = 0.31;
        $cart->add_fee( 'Fixed Cost', $fee, true );
    }
}

// jQuery - Update checkout on methode payment change
add_action( 'wp_footer', 'custom_checkout_jqscript' );
function custom_checkout_jqscript() {
    if ( is_checkout() && ! is_wc_endpoint_url() ) :
    ?>
    <script type="text/javascript">
    jQuery( function($){
        $('form.checkout').on('change', 'input[name="payment_method"]', function(){
            $(document.body).trigger('update_checkout');
        });
    });
    </script>
    <?php
    endif;
}

结果前端

enter image description here



这两个不同的功能可以完美地分开工作。现在,我想结合这两个函数来获得两个成本的总和。

我的代码尝试(A + B):与其他支付系统的功能演变

enter image description here

add_action( 'woocommerce_cart_calculate_fees', 'custom_percentage_fee', 20, 1 );
function custom_percentage_fee ( $cart ) {
    if ( is_admin() && ! defined( 'DOING_AJAX' ) )
        return;

     if ( ! ( is_checkout() && ! is_wc_endpoint_url() ) )
        return; // Only checkout page

    $payment_method = WC()->session->get( 'chosen_payment_method' );

     if ( 'stripe' == $payment_method ) {
        $surcharge = $cart->subtotal * 0.025;
        $fee = 0.31;
    } 
     if ( 'paypal_credit_card_rest' == $payment_method ) {
        $surcharge = $cart->subtotal * 0.036;
        $fee = 0.35;
    }
     if ( 'paypal_express' == $payment_method ) {
        $surcharge = $cart->subtotal * 0.036;
        $fee = 0.35;
    }
     if ( 'bacs' == $payment_method ) {
        return;
    }
  
      $together = $surcharge + $fee;
      $cart->add_fee( 'Plus Cost', $together, true );
}


// jQuery - Update checkout on methode payment change  
add_action( 'wp_footer', 'custom_checkout_jqscript' );
function custom_checkout_jqscript() {
    if ( ! ( is_checkout() && ! is_wc_endpoint_url() ) )
        return; // Only checkout page
    ?>
    <script type="text/javascript">
    jQuery( function($){
        $('form.checkout').on('change', 'input[name="payment_method"]', function(){
            $(document.body).trigger('update_checkout');
        });
    });
    </script>
    <?php
}

该函数返回以下错误:

注意:未定义的变量:/MY-FOLDER..../snippet-ops.php(446) 中的附加费:第 79 行的 eval() 代码

注意:未定义的变量:/MY FOLDER..../snippet-ops.php(446) 中的费用:第 79 行的 eval() 代码

那正是在这里:

$together = $surcharge + $fee;

结果前端

enter image description here

关于如何将上面的 2 个代码合并为 1 个有什么建议吗?


您发布的两个示例之间的差异确实很小。你可以只使用:

if ( 'cod' == $payment_method ) {
    $surcharge = $cart->subtotal * 0.025;
    $fee = 0.31;

    $together = $surcharge + $fee;
    $cart->add_fee( 'Plus Cost', $together, true );
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

向 WooCommerce 中的特定支付网关添加自定义百分比费用和固定成本 的相关文章

  • PHP 查找最接近时间线期间的日期

    所以 呃 好吧 这可能会涉及到数学问题 所以希望你带上科学计算器 这是我的问题 给定初始日期 时间戳 时间段 秒 和今天的日期 时间戳 我需要找到与 period n 加上原始 初始日期一致的最近日期 到目前为止 我得到了一些运行良好的东西
  • 如何检查 id 是否已存在 - codeigniter

    我正在尝试检查数据库中的 id 是否已存在 如果不存在则仅插入该 id 而不是其他存在的 id 我尝试执行一个 where 语句来检查数据库中是否存在它们的 id 但即使它们是新信息 它也不会将其插入数据库中 我在这里很迷路 任何指导将不胜
  • Symfony 生产日志

    在 Symfony 3 中 我是否可以在不打开调试模式的情况下将所有错误写入生产日志 错误将包括 http 500 错误或应用程序错误或 php 错误 这些错误由于生产时错误标志设置为 false 而被静音 当前生产的日志配置是 monol
  • PHP 中的 XPath 删除 HTML 标签

    我在 PHP 中使用 XPath 来检索 HTML 文档的一部分 假设我的 HTML 文档如下所示 div a href some link address com Hello a p Some text here p div div p
  • 连接以逗号分隔的字符串,但如果字符串为空,则逗号不应出现在开头[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 这个问题是由拼写错误或无法再重现的问题引起的 虽然类似的问题可能是on topic help on topic在这里 这个问题的解决方式不
  • $_GET 作为 PHP 函数中的参数

    我有同样的问题 但是 我根据使用标头的 if 语句将用户重定向到通过函数构造的动态页面 为了使该函数正常工作 需要在标头的 GET 部分中传递参数 根据提供的答案 这是一种不好的做法 我应该用什么方式来做呢 function page ti
  • 正则表达式匹配 2 个或更多单词

    我有一个正则表达式尝试匹配 2 个或更多单词 但它没有按预期工作 我究竟做错了什么 string i dont know do you know preg match a z b 2 string match echo pre print
  • 电子邮件标题中的特殊字符是什么以及何时使用引号?

    我正在尝试使用 PHP 发送和阅读电子邮件 到目前为止 我发现我必须使用该函数对特殊字符进行编码mb encode mimeheader 但我不必对空格进行编码 我还发现地址字段中的括号不起作用 读取带有括号的标题时 PHP 的 imap
  • orm和pdo的区别

    我对 ORM 和 PDO 之间的区别有点困惑 PDO是一种ORM吗 根据我的理解 ORM 基本上是一种数据映射 PDO 还提供了数据库数据的抽象 PDO 和 ORM 是两个完全不同的东西 PDO 是数据库访问抽象层的具体实现 它使您能够使用
  • 在 PHP 页面中嵌入 svn 修订号的简单方法?

    注意到这个页面的右下角有 SVN 修订 ID 了吗 我假设这是动态的 我很乐意将其添加到我的一些网站中 就像源代码中的注释一样 以确保代码推送顺利进行 注意 您还可以假设相关站点的工作目录是相关存储库的 svn checkout Edit
  • URL 重写 OpenCart 产品 SEO

    我想重写我的 opencart 网上商店的产品网址 Opencart 本身有一个 seo 实现 这真的很糟糕 我已经更新了 seo 实现 以便能够对多个类别使用相同的关键字 请参阅 Opencart 重复 URL 关键字 https sta
  • 在订单编辑页面添加自定义元框并将其显示在客户订单页面上

    在 WooCommerce 中 想要在 WooCommerce 管理订单页面上添加自定义元框 在此框中 我只想在保存到该订单的文本字段中输入跟踪号码 然后在客户查看订单页面上 我想显示一个按钮 用于打开带有跟踪信息的模式 该模式只会拉入一个
  • Laravel - JWT Auth 无法从请求中解析令牌

    我在中间件中添加了以下代码以进行用户身份验证JWT Auth https github com tymondesigns jwt auth 它适用于中间件处理的所有路由 public function handle request Clos
  • 需要 php pdo 内爆数组并在 mysql 中插入多行

    基于this https stackoverflow com questions 4629022 how to insert an array into a single mysql prepared statement w php and
  • 两个 mysql_fetch_array 语句

    是否有任何原因导致我无法在一个 while 循环中包含两个处理两个不同 mysql 查询结果的 mysql fetch array 语句 原因是我有两个来自 mysql 数据库的查询结果 每个结果包含两列 如下所示 Query 1 Date
  • 来自外部文件的 PHP 变量?

    编辑 完成的解决方案 工作代码 所以 这是我的一个朋友帮我想出来的 这是我在 K2 items php 文件中使用的部分 div class fb comments div
  • ajax - 检查用户名是否存在+如果存在则返回消息

    我试图检查用户想要的用户名是否已被使用 而无需发送表单 基本上是用户名字段的模糊 我遇到了一些麻烦 有几个问题 我有我的输入字段加上js
  • Symfony2 - Doctrine - 更新后没有更改集

    因此 当实体的某个值发生更改时 我会发送电子邮件 我只想在更新后发送电子邮件 以防更新因任何原因失败 所以在更新前我可以这样做 public function preUpdate LifecycleEventArgs args if arg
  • PHP cURL 代理带标头?

    我正在制作一个 PHP 图像代理脚本 我需要它不仅能够回显其请求的图像的内容 而且还能够以相同的方式重现图像请求的标头 我见过一个 另一个 但没有同时看到过 这些 cURL 选项让我感到困惑 我该怎么做 抱歉 我不确定你想要什么 这是从图像
  • 使用 foreach 进行复杂的多维关联数组处理

    我不得不再次问这个问题 抱歉 但我在尝试处理这个数组时遇到了问题 我尝试了几种不同的方法 但没有一个是正确的 这是数组 Array search gt Array response gt Array errors gt number of

随机推荐

  • Jetty 9 及更高版本中的 SelectChannelConnector 替代类

    jetty 9及以上版本的SelectChannelConnector的替代类是什么 另外 SelectChannelConnector 类有什么用 连接器类在 jetty servlet 架构中有何用途 我们可以使用 ServerConn
  • Python正则表达式提取日期

    我的字符串看起来像这样 server date YYYYMMDD int server date MON DAY YYYY int 还有更多 不同的日期格式 此外 可以有任意数量的 块 并且它们可以以任意顺序出现 我试图获取 Python
  • 如何通过 Docusign API 将动态图像添加到 Docusign 文档

    我不知道 Docusign API 是否可以实现这一点 但我很好奇是否可以将动态图像添加到模板文档中 此动态图像的目的是根据发送者的身份为文档设置徽标 我知道 Docusign 有品牌 但我们希望此图像位于模板文档的特定位置 如果有人知道这
  • 1 到 100 之间的正则表达式编号

    我搜索了很多 找不到这个 RegExp 的解决方案 我不得不说我在 Reg Expressions 方面不是很有经验 Regex 1 9 0 9 1 100 我想测试一个数字1 到 100 之间 不包括 0 Try 1 9 0 9 100
  • 参数类型可能存在的时间不够长

    我有一个简单的程序 我试图实现多态帐户类型 enum AccountType INVALID TYPE1 TYPE2 trait Account fn get name self gt String fn get type self gt
  • JToken.WriteToAsync 不写入 JsonWriter

    我正在尝试创建一个以某种方式更改请求的中间件 我能够阅读它并更改内容 但我无法弄清楚如何正确设置流编写器来创建新的正文 当我打电话时normalized WriteToAsync jsonWriter the MemoryStream仍然是
  • VS2017 和 VS2015 应用程序与 dll 之间的官方二进制不兼容性是否准确?

    TL DR MS 文档指出 VS2015 和 VS2017 库之间的二进制兼容性是one way 虽然我认为这必然是双向的 问题在哪里 首先 背景 任何 MSVC 构建的库都是正式二进制兼容VS2015 和 VS2017 之间 具体来说 您
  • sqldf、csv 和包含逗号的字段

    我花了一段时间才弄清楚这一点 我也是回答我自己的问题 您有一些 csv 您想要加载它fast 你想使用sqldf包裹 您常用的代码会被一些烦人的字段所困扰 例子 1001 Amy 9 43 00 99 2 1002 Ben Jr 9 43
  • HTTPS URL 是否加密?

    使用 TLS SSL HTTPS 加密时是否所有 URL 均已加密 我想知道 因为我希望在使用 TLS SSL HTTPS 时隐藏所有 URL 数据 如果 TLS SSL 为您提供全面的 URL 加密 那么我就不必担心隐藏 URL 中的机密
  • 为什么我的 WCF 服务不使用我的实体模型?

    我在同时使用 WCF 服务和实体模型时遇到问题 我已经从现有数据库创建了一个实体模型 这可以如下所示 在来自 实体对象代码生成器 的任何控制台应用程序中使用我的类时没有任何问题 然后 我创建了 WCF 服务 其接口如下 ServiceCon
  • python 正则表达式包含缺少的逗号

    我需要确保字符串具有逗号分隔的值 我读取的字符串可能有空格分隔的值 我的输入字符串中可能缺少一些逗号 也就是说 如果存在任何空格分隔的值而没有逗号 我必须包含一个逗号 我不应该对单引号或双引号内的字符串进行任何更改 这些带引号的值可以包含除
  • 如何以编程方式快速调用 UIView 上的手势点击

    我有一个 UIView 并且我向它添加了点击手势 let tap UITapGestureRecognizer target self action Selector handleTap tap delegate self myView a
  • 在 IAsyncResult 中使用异步方法

    我正在实施令牌提供者班级来自Microsoft ServiceBus命名空间 我正在重写以下方法 protected override IAsyncResult OnBeginGetToken string appliesTo string
  • 使用 C 语言的 NXP Mifare Ultralight 从 NFC 腕带读取正确的数据

    我对 NFC 设备读取非常陌生 但我已经设法使用以下代码在我自己的项目中实现NFC mfultralight c libnfc 我不明白的是 当我从 MIFARE Ultralight 手环读取数据时 我得到了很多垃圾 例如 我的标签中有数
  • 如何将类的每个实例与另一个类的每个实例关联起来?

    一般问题 我正在研究一个简单的本体 使用 Prot g 4 3 并尝试创建一个模型 以便类的每个实例C有一些特殊的价值v 这是一个类的实例V 对于给定的属性p 我可以使用公理得到这个推论 C 子类 p value v 但我想我希望能够更进一
  • Java javax.swing.Timer - 冻结我的 GUI。解决方案?

    我有一个使用 javax swing Timer 运行的任务 它每隔几分钟执行一次 该任务需要一两秒钟 并且它冻结了我的 GUI 我可以做什么来解决这个问题 计时器任务在事件调度线程上执行 因此当您的任务运行时 不会发生其他 Swing 事
  • 如何在 Swift 中过滤 NSArray?

    self filteredUserData self userData filter listing NSDictionary gt Bool in let stringMatch listing name rangeOfString se
  • 对方案中的列表进行排序

    我想创建对列表进行排序的函数 例如我有这个列表 x1 x2 x3 xn or 1 2 3 4 5 6 我想按以下顺序显示数字 x1 xn x2 xn 1 or 1 6 2 5 3 4 你能帮我写这个例子吗 通常 当我们谈论排序时 我们指的是
  • Internet Explorer 8 和复选框 CSS 问题

    目前 我遇到了 Internet Explorer 8 忽略列表中包含复选框的填充 行高的问题 首先是我的 CSS 和 XHTML 标记here 问题发生在列表元素上 其中包括Private 目前 Firefox 3 Internet Ex
  • 向 WooCommerce 中的特定支付网关添加自定义百分比费用和固定成本

    在 WooCommerce 中 我需要为特定支付网关申请自定义手续费 按百分比成本收取的自定义手续费和按固定成本收取的自定义手续费 我有这个2 pieces代码 A 百分比成本 函数 PERCENTACE COST Add a custom