Ingenico API:ACCESS_TO_MERCHANT_NOT_ALLOWED

Posted

技术标签:

【中文标题】Ingenico API:ACCESS_TO_MERCHANT_NOT_ALLOWED【英文标题】:Ingenico API : ACCESS_TO_MERCHANT_NOT_ALLOWED 【发布时间】:2022-01-02 16:22:19 【问题描述】:

我目前正在尝试使 Ingenico API 与我的 php 项目一起使用。

我在我的测试帐户上生成了我的 api 密钥和秘密,并尝试使用此端点创建一个会话:'/v2/'.$merchantID.'/sessions'merchantID beeing 我的 PSPID 帐户。

这是我目前的代码:

$apiKeyId = 'myAPIKey';
$apiSecret = 'myAPISecret';
$apiEndpoint = 'https://payment.preprod.direct.ingenico.com';

$hash = array(
    'POST',
    'application/json',
    gmdate('D, d M Y H:i:s T'),
    '/v2/'.$merchantID.'/sessions\n'
);

$headers = [
    "Authorization: GCS v1HMAC:".$apiKeyId.":".base64_encode(hash_hmac('sha256', implode("\n", $hash), $apiSecret))
];

// Setup cURL
$ch = curl_init($apiEndpoint.'/v2/'.$merchantID.'/sessions');
curl_setopt_array($ch, array(
    CURLOPT_RETURNTRANSFER => TRUE,
    CURLOPT_HTTPHEADER => $headers
));

// Send the request
$res = curl_exec($ch);

// Check for errors
if($res === FALSE)
    die(curl_error($ch));

// Decode the response
$responseData = json_decode($res, TRUE);

// Close the cURL handler
curl_close($ch);

echo json_encode($responseData);
exit;

这应该相当于这个 url 中的“最小”示例: https://support.direct.ingenico.com/documentation/api/authentication ,无需 SDK 认证

无论我尝试什么,我都会得到以下回报:


    "errorId": "b498810b-beda-4d50-8ba7-7d3da816b40e",
    "errors": [
        
            "code": "9007",
            "id": "ACCESS_TO_MERCHANT_NOT_ALLOWED",
            "category": "DIRECT_PLATFORM_ERROR",
            "message": "ACCESS_TO_MERCHANT_NOT_ALLOWED",
            "httpStatusCode": 403
        
    ],
    "status": 403

任何帮助将不胜感激。

【问题讨论】:

当您的凭据出现问题时,您将收到 403 响应。当您尝试访问未链接到您的帐户的商家 ID 时,可能会发生这种情况。 - 来源 test connection 您确定您的商家 ID 正确吗? 是的,我的merchantID没问题,我通过inggenico支持确认了,我的api密钥和merchantID都没有问题 【参考方案1】:

经过几天的研究,我找到了答案,INGENICO使用了一个名为cryptoJS的库来加密签名。

也许这些信息会在未来对其他人有所帮助。

【讨论】:

以上是关于Ingenico API:ACCESS_TO_MERCHANT_NOT_ALLOWED的主要内容,如果未能解决你的问题,请参考以下文章

握手API网关調用 API 网关 暴露的 开放 API

从 API 网关聊到 API 管理

API 到 API - 使用服务帐户

2022年个人怎么调用淘宝api

api = twitter.Api() AttributeError: 'module' 对象没有属性 'Api

握手API网关开发指南-API参考