You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Magento 2:如何获取所有已启用的线下支付方式?

获取已启用线下支付方式列表的方法

嘿,我来帮你搞定这个需求!既然你提到了cashondelivery、checkmo这些常见的线下支付方式代码,我默认你是在Magento环境下操作哈~下面给你两种实用的方法:

一、后台手动查看(适合非开发同学)

如果你只是想快速查看,直接在Magento后台操作就行:

  • 登录后台后,进入Stores > Settings > Configuration
  • 左侧导航栏找到Sales > Payment Methods
  • 往下滚动到「Offline Payment Methods」区域,这里会列出所有内置的线下支付方式(比如货到付款、支票/汇票、银行转账等)
  • 每个方式右侧都有「Enabled」开关,只看开关设为「Yes」的即可;对应的代码(比如cashondelivery)可以在配置项的标识里找到,或者看方式名称对应的系统代码

二、代码自动获取(适合开发/自动化场景)

如果需要通过代码批量获取已启用的线下支付方式,可以利用Magento的支付配置类来实现。这里给你一个快速示例:

<?php
use Magento\Framework\App\Bootstrap;
require __DIR__ . '/app/bootstrap.php';

$bootstrap = Bootstrap::create(BP, $_SERVER);
$objectManager = $bootstrap->getObjectManager();

// 初始化支付配置对象
$paymentConfig = $objectManager->get(\Magento\Payment\Model\Config::class);

// 定义需要检查的线下支付方式代码集合,可根据店铺实际情况补充
$targetOfflineMethods = ['cashondelivery', 'checkmo', 'banktransfer', 'purchaseorder'];

$enabledOfflineMethods = [];
foreach ($targetOfflineMethods as $methodCode) {
    // 判断该支付方式是否启用
    if ($paymentConfig->isMethodActive($methodCode)) {
        // 获取支付方式的前台显示名称
        $methodTitle = $paymentConfig->getMethodInstance($methodCode)->getTitle();
        $enabledOfflineMethods[] = [
            'code' => $methodCode,
            'display_title' => $methodTitle
        ];
    }
}

// 输出结果,可根据需求调整格式(比如转为JSON)
print_r($enabledOfflineMethods);

代码小贴士:

  • 生产环境建议用依赖注入替代直接使用ObjectManager,这里是为了快速演示才用的ObjectManager
  • 你可以根据自己店铺安装的线下支付插件,补充$targetOfflineMethods数组里的代码
  • 如果需要返回JSON格式,把print_r换成echo json_encode($enabledOfflineMethods);就行

要是你用的是其他电商平台(比如Shopify、WooCommerce),可以告诉我具体平台,我再给你对应的解决方案~

内容的提问来源于stack exchange,提问作者Suman Pradhan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.19 03:20:33