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

如何从合并地址提取门牌号/名称适配Adyen AVS验证?

适配Adyen AVS的合并地址输入拆分方案

针对你用Adyen自定义卡片集成时,需要将合并输入的地址拆分为houseNumberOrName和street的需求,以下是无需第三方API的纯前端实现方案:

1. 基于国家选择的规则化拆分

不同国家地址格式差异极大,先让用户选择所在国家,再对应执行拆分逻辑:

  • 美加等门牌号前置国家:
    用正则匹配开头的数字+可选字母后缀(如123A),示例代码:
    const match = inputAddress.match(/^(\d+[A-Za-z]?)\s+(.*)/);
    if (match) {
      houseNumberOrName = match[1];
      street = match[2];
    }
    
    即使街道名含数字(如123 E 42nd St),拆分出的123作为门牌号、E 42nd St作为街道,也符合Adyen AVS的校验逻辑。
  • 德荷等门牌号后置国家:
    匹配结尾的数字部分,示例代码:
    const match = inputAddress.match(/(.*)\s+(\d+)$/);
    if (match) {
      street = match[1];
      houseNumberOrName = match[2];
    }
    
  • 英澳等存在纯房屋名称的国家:
    若输入无数字,直接将完整内容赋值给houseNumberOrName,street可同步赋值(避免Adyen校验报错)。

2. 无国家选择时的模糊拆分 fallback

如果用户未选择国家,采用通用模糊逻辑:

  • 优先定位输入中的数字片段:
    • 数字在开头:取数字+后续连续字母作为houseNumberOrName,剩余内容为street。
    • 数字在结尾:取前面内容为street,数字为houseNumberOrName。
  • 纯文本无数字:将完整输入同时赋值给两个字段,确保Adyen能接收有效数据。

3. 前端交互优化

  • 在合并输入框下方添加提示:「请按您所在国家常规格式填写,例如:123 Main St 或 Rosenthalerstr. 12」,引导用户输入符合规则的内容,降低拆分误差。
  • 拆分结果存入隐藏表单字段,无需展示给用户,保持前端界面简洁。

4. 极端容错处理

遇到无法精准拆分的地址(如123 456 Avenue),直接将第一个数字片段作为houseNumberOrName,剩余作为street;或者将完整内容同时赋值给两个字段,优先保证支付请求能正常提交,再依赖Adyen AVS的校验逻辑处理。

内容的提问来源于stack exchange,提问作者Tyler Paige

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 19:45:11