Mercado Pago:调用MerchantOrderClient返回401 invalid_caller_id求助
解决Merchant Order Client返回
invalid_caller_id的问题 问题分析
调用order.get()时触发invalid_caller_id错误,说明当前请求的调用方身份不被Merchant Order服务认可——即便Payment对象有效,Payment服务和Merchant Order服务的身份校验是独立的,前者通过不代表后者也能通过。
排查与解决方向
- 检查Order Client的认证配置:初始化
OrderClient时必须传入Merchant Order服务认可的caller ID、密钥或令牌,不能直接复用Payment Client的认证信息,两个服务的身份凭证通常是分开配置的。 - 验证请求上下文:确认调用
order.get()时,请求携带了正确的身份标识(比如请求头中的caller_id字段),部分服务要求每个请求都显式传递身份信息,而非仅依赖客户端初始化配置。 - 核对权限配置:确认当前使用的caller ID已被授权访问目标Merchant Order资源,可能Payment服务允许该身份访问,但Order服务的权限列表未添加对应授权。
- 校验Order归属:确保Payment关联的Order ID属于当前caller ID有权访问的商户范围,跨商户的Order查询会触发身份校验失败。
代码调整示例
// 初始化Order Client时传入Merchant Order服务的合法身份凭证 OrderClient orderClient = new OrderClient("authorized_caller_id", "valid_secret"); PaymentClient client = new PaymentClient(); Payment payment = client.get(id); // 调用时携带身份上下文(如果服务要求) Merchant merchant = orderClient.get(payment.getOrder().getId(), "authorized_caller_id");
内容的提问来源于stack exchange,提问作者Francisco Paredes
相关产品推荐
相关产品推荐

