MercadoPago集成报错:Cannot infer Payment Method问题求解
解决MercadoPago支付接口错误:Cannot infer Payment Method
针对你遇到的错误(code 2131),可以从以下几个关键方面排查修复:
1. 修正issuer_id为有效取值
你当前使用的"issuer_id": "123456"是无效测试值,MercadoPago无法识别。需要获取对应Visa卡的真实发卡行ID:
- 调用
/v1/payment_methods/card_issuers接口,传入参数payment_method_id=visa,获取该支付方式下的所有有效发卡行列表。 - 选择列表中的一个
id填入支付请求,比如测试环境Visa的有效issuer_id可能是1或其他官方提供的测试值。
2. 统一token生成与支付请求的payer邮箱
生成卡片token时使用的邮箱是test@test.com.ar,但支付请求中payer的邮箱是pedrito@gmail.com,两者必须一致。MercadoPago会验证token与支付请求的用户身份匹配性,修改支付请求的payer邮箱为test@test.com.ar即可。
3. 补充payer的身份识别信息
支付请求中identification字段为空,MercadoPago要求payer提供有效身份信息(测试环境可使用官方提供的测试身份数据)。例如添加:
"identification": { "type": "DNI", "number": "12345678" }
4. 确保payment_method_id与token对应卡类型匹配
虽然你指定了payment_method_id: "visa",但可以先尝试去掉该字段,让API通过token自动推断支付方式;如果必须指定,需确认token对应的卡确实属于Visa类型(可从token返回的first_six_digits查询卡组织)。
修改后的支付请求示例
{ "payer": { "entity_type": "individual", "type": "customer", "first_name": "APRO", "last_name": "Test", "address": {}, "email": "test@test.com.ar", "identification": { "type": "DNI", "number": "12345678" } }, "description": "Celular Xiaomi Redmi Note 11S 128gb 6gb Ram Original Global Blue Version", "installments": 1, "issuer_id": "1", // 替换为真实有效issuer_id "token": "28e607d8cbceb068e7b99e84c6988216", "transaction_amount": 100 }
内容的提问来源于stack exchange,提问作者Gabriel Vento
相关产品推荐
相关产品推荐

