尽管分配了正确的API密钥和Dev密钥,但点击银行不会对我的应用程序进行身份验证。它返回403禁止消息。
我的脚本出了什么问题?
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, "https://api.clickbank.com/rest/1.2/sandbox/validateDeveloperKey");
curl_setopt($ch, CURLOPT_HEADER, true);
curl_setopt($ch, CURLOPT_GET, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
//for security reasons these are not real keys
$dev_key="DEV-9E4ABEDD687A7893D3E61CDE7009D4900CB0";
$api_key= "API-02BFF7786901A18D9Y5FAAAD3853435AE646";
curl_setopt($ch, CURLOPT_HTTPHEADER, array("Accept: application/xml", "Authorization: ".$dev_key.":". $api_key));
$result = curl_exec($ch);
curl_close($ch);
print $result;发布于 2011-08-23 11:08:25
在对ClickBank问题进行故障排除时,必须指出问题请求是发生在ClickBank服务器(https://api.clickbank.com)上的“实时事务”期间,还是发生在沙盒服务器(https://sandbox.clickbank.com)上的“测试事务”期间。
OP似乎是通过向实时ClickBank服务器而不是测试服务器发送请求来测试ClickBank功能。
正如前面的答案所指出的,CURLOPT_URL行应该是:
curl_setopt($ch, CURLOPT_URL, "https://sandbox.clickbank.com/rest/1.2/sandbox/validateDeveloperKey");此外,在OP中呈现的开发者和API密钥似乎不是适合在沙盒服务器上使用的沙盒密钥。相反,它们是主要的开发人员和API密钥,应用于在实时API服务器上执行实际事务。
ClickBank应用程序接口沙盒开发者密钥格式如下:
DEV-SB-4900BEDD687A7893D3E61CDE7009D4900CB0
OP的developer密钥不包含"-SB-“部分,这表明它不是Sandbox密钥。
利用API服务器的第一步是“准备”一个ClickBank ClickBank沙箱环境。以下是ClickBank https://sandbox.clickbank.com/rest/1.2/sandbox中有关该方法的文档
POST /1.2/ sandbox /prepare -准备沙箱环境。
它将创建一个沙箱开发人员密钥,并将其返回给最终用户。请注意,用户必须在Authorization头部中拥有有效的产品开发人员密钥才能访问此API。
返回类型: SandboxDeveloperData
支持的输出类型: application/xml、application/json
再次重申,在开始向ClickBank沙盒服务器发送测试代码之前,必须首先通过向正确的沙盒URL发送一个PREPARE请求来请求ClickBank沙盒开发人员密钥。“prepare”请求必须在授权标头中包含有效的ClickBank主开发人员密钥,否则它将失败。
接下来,前面的答案也正确地指出,尽管ClickBank自己的PHP示例说要使用curl选项参数CURLOPT_GET,但实际上并不存在这样的curl参数。如果尝试指定GET请求,则要设置的正确参数为CURLOPT_HTTPGET。
话虽如此,YMMV。关于ClickBank的API的文档不多,来自ClickBank的很少的信息包含错误。有可能的是,一旦你调试了你的代码,你仍然会从沙盒服务器得到403的返回,没有明显的原因。
最后,在使用REST服务时,对我来说非常有价值的一个工具是"rest-client“http://code.google.com/p/rest-client/
rest-client允许您在编写第一行代码之前测试对任何REST服务的GET、POST和HEAD请求。
哈!
发布于 2011-06-10 11:49:06
我意识到这个问题已经提出一个月了,现在还没有答案。我希望你现在已经找到了答案,但是如果你还没有找到答案,你的请求有几个问题:
首先:
curl_setopt($ch, CURLOPT_URL, "https://api.clickbank.com/rest/1.2/sandbox/validateDeveloperKey");应该是:
curl_setopt($ch, CURLOPT_URL, "https://sandbox.clickbank.com/rest/1.2/sandbox/validateDeveloperKey");注意:我还没有收到对该查询的成功响应(给出了405 Method not Allowed响应)。
第二:没有CURLOPT_GET。如果您已经更改了方法(即CURLOPT_POST),可以使用CURLOPT_HTTPGET重置它,否则默认为GET。(是的,php示例显示了CURLOPT_GET,但手册中没有),如果您打开E_NOTICE,您将看到该故障。
我不确定为什么validateDeveloperKey不能工作,但是我已经成功地处理了所有其他沙箱请求(所有帖子的工作)。我很好奇是否有新的API版本(高于1.2),因为我在谷歌搜索中看到过关于2.1的帖子。
这可能没有准确地回答你的问题,但我希望如果你仍然有问题,我提供的注释对你有帮助。
谢谢/Aaron
更新:在进一步的研究中:为了发送HEAD请求(validateDeveloperKey),您必须设置以下内容:
curl_setopt($ch, CURLOPT_NOBODY, true);否则,它会将其作为GET请求发送(正如我在上面提到的)。它使用生成的沙箱开发人员密钥(返回204无内容),但是使用我的实际开发人员密钥,它返回403禁止。
再说一次,我希望这能有所帮助。
https://stackoverflow.com/questions/5907407
复制相似问题