首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >仅对可下载项目和特定航运国的未设定付款方法

仅对可下载项目和特定航运国的未设定付款方法
EN

Stack Overflow用户
提问于 2018-01-24 20:43:58
回答 1查看 302关注 0票数 1

我的电子商务网站向南非人销售99%的商品,我们使用"BACS“、"EFT”和信用卡作为支付选择。

我们接受国际订单,但不能自动计算国际订单的运费。

因此,当顺序是国际的(而不是南非),我们希望用户选择BACS / EFT支付选项。我们要求他们先付十英镑,这样我们才能先确认运费.

但是,如果国际订单只包含可下载的产品(因此不需要装运),那么我们希望提供信用卡支付选项。

网站链接

我试图在结帐页面上取消一个名为“mygate”的支付方法,如果这两种方法都是正确的:

  1. 购物车只包含可下载的产品。
  2. 邮寄地址不是南非( ZA )

我要到了,但需要帮助,拜托。

禁用除南非以外的所有国家的支付网关:

代码语言:javascript
复制
function payment_gateway_disable_country( $available_gateways ) {
    global $woocommerce;
    if ( isset( $available_gateways['mygate'] ) && $woocommerce->customer->get_country() <> 'ZA' ) {
        unset(  $available_gateways['mygate'] );
    } 
    return $available_gateways;
}
add_filter( 'woocommerce_available_payment_gateways', 'payment_gateway_disable_country' );

和检查产品是否可下载;与有关的东西

代码语言:javascript
复制
if( ! $product->is_downloadable() )
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-01-24 21:12:36

这可以通过一个foreach循环来完成,在这个循环中,我们将检查是否所有产品都是可下载的。此外,在这种情况下,需要用get_country()方法替换过时的get_shipping_country()方法。

下面是您重新访问的代码:

代码语言:javascript
复制
add_filter( 'woocommerce_available_payment_gateways', 'payment_gateway_disable_country', 20, 1 );
function payment_gateway_disable_country( $available_gateways ) {
    // Not in backend (admin)
    if( is_admin() ) 
        return $available_gateways;

    $only_downloadable_products = true;

    // Loop through cart items looking for non downloadable products
    foreach( WC()->cart->get_cart() as $cart_item ){
        if( ! $cart_item['data']->is_downloadable() ){
            $only_downloadable_products = false; // Non downloadable found
            break; // Stop the loop
        }
    }

    if( isset( $available_gateways['mygate'] ) 
    && WC()->customer->get_shipping_country() != 'ZA' // <= Changed
    && $only_downloadable_products ) { // <= Added
        unset( $available_gateways['mygate'] );
    } 
    return $available_gateways;
}

代码在您的活动子主题(或活动主题)的functions.php文件中。

测试,并应工作为您替换正确的支付网关ID 'mygate'

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48431273

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档