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

报错Uninitialized constant MercadoPago::SDK,已引入mercadopago-sdk gem仍异常

解决 uninitialized constant MercadoPago::SDK 错误

嘿,这个问题我之前帮人排查过,大概率是gem加载或者命名空间使用的问题,我给你列几个排查步骤:

1. 先确认gem安装和加载没问题

首先,你得确保Gemfile里已经加了这个gem:

gem 'mercadopago-sdk'

然后跑一遍bundle install。如果是普通Ruby项目不是Rails的话,记得手动加require 'mercadopago'在代码开头;如果是Rails项目,虽然bundler会自动加载,但偶尔也会出问题,你可以试试在控制器顶部或者config/application.rb里手动加这个require语句。

2. 检查SDK的初始化方式是否匹配版本

不同版本的mercadopago-sdk用法可能不一样,你遇到的错误很大概率是因为版本不对导致命名空间不匹配:

  • 如果你用的是较新的版本,正确的初始化方式应该是创建SDK实例,而不是直接操作MercadoPago::SDK的类属性:
    def show
      # 直接用client_id和secret初始化实例
      sdk = MercadoPago::SDK.new(client_id: "XXXXXXXXXXXX", client_secret: "XXXXXXXXXXXXXXXXXXXXXX")
      # 或者用access token的话更简单:sdk = MercadoPago::SDK.new('YOUR_ACCESS_TOKEN')
    end
    
  • 要是你装的是旧版本,可能直接用MercadoPago模块的configure方法就行:
    def show
      MercadoPago.configure do |config|
        config.client_id = "XXXXXXXXXXXX"
        config.client_secret = "XXXXXXXXXXXXXXXXXXXXXX"
      end
    end
    

你可以跑gem list mercadopago-sdk看看自己装的版本,再对应找下官方的用法说明。

3. 排查命名冲突

确认下你的项目里有没有自己定义过MercadoPago这个模块或者类,要是有的话会覆盖SDK的命名空间,就会出这个错误。

4. Rails项目记得重启服务器

如果你是在Rails里改了Gemfile或者require配置,一定要重启服务器!不然新的gem加载不会生效。

给你个最新版本的示例代码参考

require 'mercadopago'

def show
  # 初始化SDK实例
  sdk = MercadoPago::SDK.new(
    client_id: "XXXXXXXXXXXX",
    client_secret: "XXXXXXXXXXXXXXXXXXXXXX"
  )

  # 比如调用API获取支付详情
  payment = sdk.payment.get('PAYMENT_ID')
  puts payment.inspect
end

内容的提问来源于stack exchange,提问作者Sebastian Ruiz Perez

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 08:54:53