2016-12-19 1 views
0

저는 Docusign PHP SDK를 둘러싼 래퍼 클래스 일 뿐이므로 약간의 코드를 작성하여 응용 프로그램에 맞게 조정할 수 있습니다. 문제는 이제 프로덕션 서버에서 인증이 시작되지 않았지만 똑같은 코드 (문자 그대로 그대로 복사)가 다른 서버에서도 잘 작동한다는 것입니다. 나는 이것으로 무슨 일이 일어나고 있는지를 놓치고있다. 나는에 코드를 삽입 한Docusign 인증이 한 서버에서 실패하고 동일한 코드가 여러 서버에서 작동합니다. (PHP Docusign SDK)

Exception: exception 'DocuSign\eSign\ApiException' with message 'API call to https://demo.docusign.net/restapi/v2/login_information timed out: a:26:{s:3:"url";s:54:"https://demo.docusign.net/restapi/v2/login_information";s:12:"content_type";N;s:9:"http_code";i:0;s:11:"header_size";i:0;s:12:"request_size";i:0;s:8:"filetime";i:-1;s:17:"ssl_verify_result";i:1;s:14:"redirect_count";i:0;s:10:"total_time";d:0.168601;s:15:"namelookup_time";d:0.004248;s:12:"connect_time";d:0.081040000000000001;s:16:"pretransfer_time";d:0;s:11:"size_upload";d:0;s:13:"size_download";d:0;s:14:"speed_download";d:0;s:12:"speed_upload";d:0;s:23:"download_content_length";d:-1;s:21:"upload_content_length";d:-1;s:18:"starttransfer_time";d:0;s:13:"redirect_time";d:0;s:12:"redirect_url";s:0:"";s:10:"primary_ip";s:14:"162.248.184.25";s:8:"certinfo";a:0:{}s:12:"primary_port";i:443;s:8:"local_ip";s:14:"10.231.215.217";s:10:"local_port";i:39287;}' in /srv/www/vhosts/redacted.com/pages/test/docusign/sdk/docusign-php-client-master/src/ApiClient.php:233 
Stack trace: 
#0 /srv/www/vhosts/redacted.com/pages/test/docusign/sdk/docusign-php-client-master/src/Api/AuthenticationApi.php(264): DocuSign\eSign\ApiClient->callApi('/v2/login_infor...', 'GET', Array, '', Array, '\DocuSign\eSign...') 
#1 /srv/www/vhosts/redacted.com/pages/test/docusign/sdk/docusign-php-client-master/src/Api/AuthenticationApi.php(193): DocuSign\eSign\Api\AuthenticationApi->loginWithHttpInfo(Object(DocuSign\eSign\Api\AuthenticationApi\LoginOptions)) 
#2 /srv/www/vhosts/redacted.com/pages/test/docusign/myclass.php(46): DocuSign\eSign\Api\AuthenticationApi->login(Object(DocuSign\eSign\Api\AuthenticationApi\LoginOptions)) 
#3 /srv/www/vhosts/redacted.com/pages/test/docusign/myclass.php(41): DocuSignWrapper->doLogin() 
#4 /srv/www/vhosts/redacted.com/pages/test/docusign/classtest.php(130): DocuSignWrapper->__construct() 
#5 

그리고 네 개의 다른 서버의에서 성공적으로 전송 : 여기에

가 실패의 여기
{ 
    "envelopeId": "881f8fb2-d089-49e5-b70c-8fab37ddc717", 
    "uri": "\/envelopes\/881f8fb2-d089-49e5-b70c-8fab37ddc717", 
    "statusDateTime": "2016-12-19T16:47:34.3265610Z", 
    "status": "sent" 
} 

는 래퍼 클래스의 관련 부분 (생성자 로그인 정보, 수정 된 정보) :

function __construct() 
{ 
    $this->config = new DocuSign\eSign\Configuration(); 
    $this->config->setHost($this->host); 
    $this->config->addDefaultHeader("X-DocuSign-Authentication", '{"Username":"' . $this->username . '", 
            "Password":"' . $this->password . '", 
            "IntegratorKey":"' . $this->integratorKey . '"}'); 
    $this->apiClient = new DocuSign\eSign\ApiClient($this->config); 
    $this->authApi = new DocuSign\eSign\Api\AuthenticationApi($this->apiClient); 
    $this->options = new DocuSign\eSign\Api\AuthenticationApi\LoginOptions(); 
    $this->doLogin(); 
} 

function doLogin() 
{ 
    $loginInfo = $this->authApi->login($this->options); 
    if (isset($loginInfo) && count($loginInfo) > 0) 
    { 
     $loginAccount = $loginInfo->getLoginAccounts()[0]; 
     if (isset($loginInfo)) 
     { 
      $this->accountId = $loginAccount->getAccountId(); 
     } 
    } 
} 

정말 도움이 될만한 tryi 어떻게 그리고 왜 이런 일이 일어나고 있는지 알아 내야합니다. 내 프로젝트가 이것에 의해 생산으로 옮겨 가지 못해서입니다. 인증은 약 일주일 전까지는 여전히 작동했지만 코드는 변경되지 않았습니다. 그것은 다른 것이되어야합니다.

도움 주셔서 감사합니다.

답변

1

아이디어의 몇 :

  1. 당신은 인증 헤더를 구성하는 대신 수동의 PHP JSON 변환 방법을 사용하고 있습니다. 차이점은 이스케이프해야하는 사용자 이름이나 암호의 문자를 이스케이프 처리하지 않는 것입니다.

    따라서 자격 증명으로 테스트하고 있는지 확인하십시오. (이것도 수정해야하는 숨어있는 버그입니다.)

  2. 두 서버간에 분명히 다른 점이 있습니다. 가장 좋은 것은 전송되는 것을 관찰하고 둘을 비교하는 것입니다.

    DocuSign 스택을 충분히 기록하여 요청할 경우 DocuSign 로그를 비교하십시오. Article.

    그렇지 않은 경우 적절한 디버깅 도구를 사용하여 시스템 출력에서 ​​log/peek을 실행하십시오. 또는 requestb.in 엔드 포인트로 요청을 보내고 그런 식으로 두 서버의 요청을 비교할 수 있습니다.