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

Adyen本地终端集成报错:unable to get local issuer certificate

解决Adyen Verifone P400 Plus终端支付会话证书错误问题

核心问题分析

当前遇到的两个错误分别指向证书格式不匹配和证书路径配置无效,结合@adyen/api-library v13.1.3的特性,以下是针对性解决思路:

分步解决步骤

1. 纠正证书格式,使用PEM格式文件

@adyen/api-library要求CA证书为PEM格式,你之前执行的openssl命令是将PEM转成了DER格式的CRT,这会导致证书无法被正确解析:

  • 放弃转换后的adyen-terminalfleet-test.crt,直接使用原始的adyen-terminalfleet-test.pem文件

2. 确保证书路径配置有效(解决参数undefined错误)

出现ERR_INVALID_ARG_TYPE是因为certificatePath被设置为undefined,需确保路径配置准确:

  • 本地Mac测试时,使用绝对路径或Node.js的path模块生成可靠路径:
    const path = require('path');
    const { Client, TerminalAPI } = require('@adyen/api-library');
    
    const client = new Client({
      apiKey: process.env.ADYEN_API_KEY,
      environment: 'test',
      caCertificatePath: path.join(__dirname, './adyen-terminalfleet-test.pem')
    });
    const terminalAPI = new TerminalAPI(client);
    
  • Alpine容器中,确保COPY指令将PEM文件放到代码可访问的路径,比如:
    COPY adyen-terminalfleet-test.pem /app/adyen-terminalfleet-test.pem
    
    然后在代码中配置路径为/app/adyen-terminalfleet-test.pem

3. 修复Alpine容器的证书信任配置

Alpine的update-ca-certificates工具只识别PEM格式的CRT文件,需调整Docker步骤:

RUN apk add --no-cache ca-certificates
# 将PEM文件复制到系统CA目录,并重命名为crt后缀
COPY adyen-terminalfleet-test.pem /usr/local/share/ca-certificates/adyen-terminalfleet-test.crt
RUN update-ca-certificates

4. 验证证书信任链(解决无法获取本地 issuer 证书错误)

如果上述步骤仍报错,可临时禁用证书验证(仅测试环境使用,生产环境严禁),确认是否为信任链问题:

const client = new Client({
  apiKey: process.env.ADYEN_API_KEY,
  environment: 'test',
  disableHttpsVerification: true
});

若禁用后正常,说明证书未被正确加入信任链,需检查:

  • Mac上是否将PEM格式证书导入钥匙串,并设置为"始终信任"
  • Alpine容器中update-ca-certificates执行后是否生成了正确的信任链文件(可检查/etc/ssl/certs/ca-certificates.crt是否包含Adyen证书内容)

额外检查项

  • 确认环境变量已正确加载,ADYEN_API_KEY等配置没有缺失
  • 检查@adyen/api-library v13.1.3的文档,确保客户端配置参数名称正确(比如是否是caCertificatePath而非其他拼写)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 09:52:39