У меня проблемы с подключением к демонстрационному API
https://demo.docusign.net/restapi
Для подключения к API я использую приведенный ниже код. Это хорошо работает для моего коллеги из США, но когда я пытаюсь подключиться из Литвы, я получаю нулевой ответ.
Может ли быть какие-то ограничения местоположения, или я что-то упустил?
Должны ли быть какие-то особенности в противопожарной стене (я нахожусь под NAT)?
Нужен ли мой локальный php / http сервер какой-то конкретной конфигурации?
$email = "some email @ fsdfdsf";
$integratorKey = "TEST-xxxxxxxxxxx";
$password = "some password";
$url = "https://demo.docusign.net/restapi/v2/login_information?include_account_id_guid=true";
$header = "<DocuSignCredentials><Username>" . $email . "</Username><Password>" . $password . "</Password><IntegratorKey>" . $integratorKey . "</IntegratorKey></DocuSignCredentials>";
$curl = curl_init($url);
curl_setopt($curl, CURLOPT_HEADER, false);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HTTPHEADER, array("X-DocuSign-Authentication: $header"));
$json_response = curl_exec($curl);
$status = curl_getinfo($curl, CURLINFO_HTTP_CODE);
if($status==200){
$response = json_decode($json_response, true);
print_r(json_encode($response['loginAccounts'][0]));
}else{
print_r($json_response);
}
Я нашел то, что мешало работать с исходным кодом выше.
На моем локальном сервере ssl не был подписан.
Так просто и только в тестовой среде можно быстро отключить проверку ssl на curl:
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
или получите подписанный сертификат SSL.
Вот как я это решил, я добавил $config->setSSLVerification(false);
выключить проверку ssl
$username = "[email protected]";
$password = "XXX";
$integrator_key = "some_key";
// change to production before going live
//https://www.docusign.net/restapi
//https://www.docusign.com/p/RESTAPIGuide/Content/GettingStarted/REST%20API%20Version.htm
$host = "https://demo.docusign.net/restapi";
// create a new DocuSign configuration and assign host and header(s)
$config = new \DocuSign\eSign\Configuration();
$config->setHost($host);
$config->setSSLVerification(false);
$config->addDefaultHeader("X-DocuSign-Authentication", "{\"Username\":\"" . $username . "\",\"Password\":\"" . $password . "\",\"IntegratorKey\":\"" . $integrator_key . "\"}");
// instantiate a new docusign api client
$apiClient = new \DocuSign\eSign\ApiClient($config);
DocuSign не реализует никаких ограничений местоположения для клиентов API.
Вы можете проверить, что ваш брандмауэр разрешает подключения к DocuSign, попытавшись использовать службу из веб-браузера. Пытаться demo.docusign.net
Вы также можете использовать свой браузер для прямой доступ к методу на сервере API, который предоставляет информацию о точках обслуживания API.
Если это работает, то вы знаете, что проблема в вашем коде API.
Если это так, сначала попробуйте один из API рецепты.
Если вы не можете получить доступ к веб-службе, проверьте настройки брандмауэра.