2011-05-06 80 views
0

尽管分配了正确的API密钥和开发密钥点击银行不认证我的应用程序进行身份验证。它发出403条禁止信息。Clickbank api没有验证

我的脚本有什么问题?

$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; 
+0

也许Clickbank应用[与Paypal相同的付款处理规则](http://stackoverflow.com/questions/6014208/paypal-checkout-issue)并拒绝处理来自或来自贵国的付款? – sarnold 2011-05-17 00:29:00

回答

0

我意识到这个问题已经一个月了,并且还没有答案。我希望你已经发现通过现在的答案,但是如果你没有,有几个与你的要求的问题:

第一:

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方法不允许的回应)。

二: 没有CURLOPT_GET。如果您更改了方法(即CURLOPT_POST),则可以使用CURLOPT_HTTPGET将其重置,否则默认为GET。 (是的,PHP示例显示CURLOPT_GET,但它不存在于手册中),如果你打开E_NOTICE,你会看到失败

我不知道为什么validateDeveloperKey不起作用,但是我已经成功与所有其他沙箱请求(所有POST的工作)。我很好奇是否有新的API版本(高于1.2),因为我在我的谷歌搜索中阅读了关于2.1的帖子。

这可能不会完全回答你的问题,但我希望如果你仍然有问题,我提供的笔记可以帮助你。

感谢/阿龙

更新:在进一步的研究:以发送HEAD请求(validateDeveloperKey),则必须进行以下设置:

curl_setopt($ch, CURLOPT_NOBODY, true); 

否则,将其作为一个GET请求(如我上面提到)。它适用于生成的沙箱开发人员密钥(返回204无内容),但使用我的实际开发人员密钥时,它会返回403 Forbidden。

再次,我希望这有助于。

1

在解决ClickBank问题时,指出问题请求是在API服务器(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的API测试区开发重点有以下格式:

DEV-SB-4900BEDD687A7893D3E61CDE7009D4900CB0

的OP的开发者密钥不包含“-SB-”的一部分,这将表明它不是一个沙盒键。

利用ClickBank Sandbox服务器的第一步是“准备”一个ClickBank API Sandbox环境。这里是ClickBank https://sandbox.clickbank.com/rest/1.2/sandbox的该方法的文档:

POST /1.2/sandbox/prepare - 准备一个沙箱环​​境。

它将创建一个沙盒开发人员密钥并将其返回给最终用户。注意 用户必须在授权 标题中拥有有效的生产开发人员密钥才能访问此API。

返回类型:SandboxDeveloperData

支持的输出类型:应用程序/ XML的应用程序/ JSON

要重申,然后才能开始发送测试代码ClickBank的沙盒服务器,你必须先申请通过将PREPARE请求POST到正确的Sandbox URL,ClickBank Sandbox开发人员密钥。 '准备'请求必须在授权标头中包含有效的ClickBank主开发人员密钥,否则将失败。

继续前面的回答也正确地指出,虽然ClickBank自己的PHP示例说使用curl选项参数CURLOPT_GET,但实际上不存在这样的curl参数。如果您试图指定GET请求,则要设置的正确参数是CURLOPT_HTTPGET。 YMMV说了这么多的话。关于ClickBank的API没有太多文档存在,并且ClickBank中的信息很少包含错误。有可能一旦你调试了你的代码,你仍然可以从Sandbox服务器得到403回报,没有明显的原因。

最后,一个工具,REST服务时已成为宝贵的对我来说是“休息客户” http://code.google.com/p/rest-client/

其余的客户端,您可以测试GET,POST和HEAD请求任何REST服务,您之前曾经写过一行代码。

HTH!

+0

很好的详细信息。 – vgoff 2012-11-13 21:51:21