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
相关产品推荐
相关产品推荐

