API-интерфейс Clickbank не аутентифицируется - PullRequest
0 голосов
/ 06 мая 2011

Несмотря на присвоение правильного 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;

Ответы [ 2 ]

1 голос
/ 23 августа 2011

При устранении неполадок, связанных с 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");

Кроме того, ключи разработчика и API, представленные в OP, не являются ключами песочницы, которые подходят для использования на сервере песочницы. Вместо этого они являются основными ключами разработчика и API, которые должны использоваться для выполнения реальных транзакций на реальном API-сервере.

Ключ разработчика SandBank API ClickBank имеет следующий формат:

DEV-SB-4900BEDD687A7893D3E61CDE7009D4900CB0

Ключ разработчика OP не содержит части "-SB-", что указывает на то, что это не ключ песочницы.

Первым шагом при использовании сервера SandBank SandBank является «подготовка» среды SandBank API SandBank. Вот документация для этого метода от ClickBank https://sandbox.clickbank.com/rest/1.2/sandbox:

POST /1.2/sandbox/prepare - подготовить среду песочницы.

Он создаст ключ разработчика песочницы и вернет его конечному пользователю. Заметка что пользователь должен иметь действующий ключ разработчика в авторизации заголовок для доступа к этому API.

Возвращаемый тип: SandboxDeveloperData

Поддерживаемые типы вывода: application / xml, application / json

Чтобы повторить, прежде чем вы сможете начать отправку тестового кода на сервер песочницы ClickBank, вы должны сначала запросить ключ разработчика песочницы ClickBank, отправив запрос PREPARE на правильный URL песочницы. Запрос 'prepare' должен содержать действительный основной ключ разработчика ClickBank в заголовке авторизации, иначе он не будет выполнен.

Продолжая, предыдущий ответ также правильно указывает на то, что хотя в собственном примере PHP ClickBank говорится об использовании параметра опций curl CURLOPT_GET, на самом деле такого параметра curl не существует. Правильный параметр для установки - CURLOPT_HTTPGET, если вы пытаетесь указать запрос GET.

Сказав все это, YMMV. Существует не так много документации об API ClickBank, и что мало информации от ClickBank содержит ошибки. Вполне возможно, что после отладки кода вы все равно получите 403 возврата с сервера Sandbox без видимой причины.

Наконец, один инструмент, который стал для меня бесценным при работе со службами REST, - это "rest-client" http://code.google.com/p/rest-client/

rest-client позволяет вам тестировать запросы GET, POST и HEAD для любой службы REST, прежде чем вы когда-либо напишете первую строку кода.

НТН!

0 голосов
/ 10 июня 2011

Я понимаю, что этому вопросу месяц, и у него пока нет ответа. Я надеюсь, что вы уже нашли ответ, но если нет, у вас есть несколько проблем с вашим запросом:

Во-первых:

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 в моих поисках в Google.

Это может не совсем точно ответить на ваш вопрос, но я надеюсь, что если у вас все еще есть проблемы, то предоставленные мною заметки помогут вам.

спасибо / Aaron

Обновление: о дальнейших исследованиях: для отправки запроса HEAD (validateDeveloperKey) необходимо установить следующее:

curl_setopt($ch, CURLOPT_NOBODY, true);

В противном случае он отправляет его как запрос GET (как я упоминал выше). Он работает с сгенерированными ключами разработчика для песочницы (возвращает 204 No Content), однако с моим настоящим ключом разработчика он возвращает 403 Forbidden.

Опять же, я надеюсь, что это поможет.

...