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

如何在Symfony 4控制器中调用带基础认证的Adyen API?

Symfony 4 HttpClient调用Adyen API(带基础认证)

你的原有代码存在两个问题:未传递基础认证凭据,且参数未以JSON格式发送(Symfony HttpClient默认会以form-data格式传递参数,不符合Adyen API要求)。以下是修正后的完整实现方案:

方法一:使用HttpClient内置auth选项(推荐)

Symfony HttpClient支持通过auth选项直接传递基础认证信息,它会自动生成符合要求的Authorization请求头:

// 构造请求参数数组
$params = [
    "merchantAccount" => "exampleMerchantAccount",
    "shopperReference" => "exampleShopperReference"
];

// 发起POST请求
$result = $this->client->request(
    'POST',
    'https://pal-test.adyen.com/pal/servlet/Recurring/v68/disable',
    [
        // 基础认证:传入用户名和密码
        'auth' => ['ws@Company.login', 'Pa$$W0rd'],
        // 自动将数组编码为JSON并设置Content-Type头
        'json' => $params
    ]
);

// 解析响应为数组
$responseData = $result->toArray();

方法二:手动构造Authorization头

如果需要手动处理认证逻辑,可以自行对用户名密码进行Base64编码后添加请求头:

$params = [
    "merchantAccount" => "exampleMerchantAccount",
    "shopperReference" => "exampleShopperReference"
];

// 生成基础认证的Base64编码字符串
$authToken = base64_encode('ws@Company.login:Pa$$W0rd');

$result = $this->client->request(
    'POST',
    'https://pal-test.adyen.com/pal/servlet/Recurring/v68/disable',
    [
        'headers' => [
            'Content-Type' => 'application/json',
            'Authorization' => "Basic {$authToken}"
        ],
        // 手动将数组编码为JSON作为请求体
        'body' => json_encode($params)
    ]
);

$responseData = $result->toArray();

关键提示

  • 使用'json' => $params参数时,HttpClient会自动完成JSON编码并设置Content-Type: application/json头,无需手动处理,能避免格式错误。
  • auth选项会自动处理Base64编码和请求头生成,比手动构造更简洁可靠。

内容的提问来源于stack exchange,提问作者Ăżiž

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 01:55:33