调用Recurly API v2.29返回「Name is invalid.」验证错误该如何解决?
Recurly v2.29 API "Name is invalid." 报错排查方案
该报错是Recurly v2.x版本的常见验证逻辑问题,并非字段漏传,核心原因为姓名参数的映射关系或格式不符合平台规则,可按以下步骤排查:
1. 确认字段映射规则
- Recurly v2.29的订阅/购买接口要求
account对象下的first_name、last_name必须与billing_info对象下的first_name、last_name完全一致,两处字段只要有一处缺失或内容不匹配,就会触发该验证错误 - 即使之前已完成账户创建,更新订阅时如果携带了
billing_info参数,也需要同步传递两个层级的姓名字段
2. 排查特殊字符校验规则
- 姓名字段仅支持半角空格、连字符、单引号、英文句号,emoji、全角空格、其他特殊符号均会触发验证失败
- 单字段长度不能超过50字符,超出长度也会返回该通用报错
3. 传参示例参考
错误写法(仅传递billing_info层级姓名)
$purchase = new Recurly_Purchase(); $purchase->account = new Recurly_Account(); $purchase->account->account_code = 'test_001'; // 缺失account层级的姓名字段 $purchase->billing_info = new Recurly_BillingInfo(); $purchase->billing_info->first_name = 'Li'; $purchase->billing_info->last_name = 'Ming';
正确写法
$purchase = new Recurly_Purchase(); $purchase->account = new Recurly_Account(); $purchase->account->account_code = 'test_001'; // 同步传递account层级姓名,与billing_info保持完全一致 $purchase->account->first_name = 'Li'; $purchase->account->last_name = 'Ming'; $purchase->billing_info = new Recurly_BillingInfo(); $purchase->billing_info->first_name = 'Li'; $purchase->billing_info->last_name = 'Ming'; // 其余业务参数正常填写
补充说明
如果使用托管支付页token方式传参,同样需要在account层级同步传入和支付页收集到的姓名一致的first_name、last_name,不可仅传递支付token。
内容的提问来源于stack exchange,提问作者Afroz Alam
相关产品推荐
相关产品推荐

