2015-09-04 50 views
0

尝试使用示例PHP代码Requesting a signature via a template设置Docusign。我有我的所有账户的细节设置正确,并尝试添加行:Docusign API调用错误PHP

curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST,false); 

,但我仍然不断收到错误:

帐户ID = XXXXXXX的baseUrl = https://demo.docusign.net/restapi/v2/accounts/1135802错误调用webservice的,状态是:0错误文本是 - >

我也打开了防火墙,以防止任何错误有

任何想法的错误意味着

Docusign的代码是:

<?php 
// Input your info here: 
$email = "#######";   // your account email (also where this signature request will be sent) 
$password = "#######";  // your account password 
$integratorKey = "########";  // your account integrator key, found on (Preferences -> API page) 
$recipientName = "#####";  // provide a recipient (signer) name 
$templateId = "#######";  // provide a valid templateId of a template in your account 
$templateRoleName = "Owner"; // use same role name that exists on the template in the console 

// construct the authentication header: 
$header = "<DocuSignCredentials><Username>" . $email . "</Username><Password>" . $password . "</Password><IntegratorKey>" . $integratorKey . "</IntegratorKey></DocuSignCredentials>"; 

///////////////////////////////////////////////////////////////////////////////////////////////// 
// STEP 1 - Login (to retrieve baseUrl and accountId) 
///////////////////////////////////////////////////////////////////////////////////////////////// 
$url = "https://demo.docusign.net/restapi/v2/login_information"; 
$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")); 
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false); 
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST,false); 

$json_response = curl_exec($curl); 
$status = curl_getinfo($curl, CURLINFO_HTTP_CODE); 

if ($status != 200) { 
    echo "error calling webservice, status is:" . $status; 
    exit(-1); 
} 

$response = json_decode($json_response, true); 
$accountId = $response["loginAccounts"][0]["accountId"]; 
$baseUrl = $response["loginAccounts"][0]["baseUrl"]; 
curl_close($curl); 

// --- display results 
echo "\naccountId = " . $accountId . "\nbaseUrl = " . $baseUrl . "\n"; 

///////////////////////////////////////////////////////////////////////////////////////////////// 
// STEP 2 - Create and envelope using one template role (called "Signer1") and one recipient 
///////////////////////////////////////////////////////////////////////////////////////////////// 
$data = array("accountId" => $accountId, 
    "emailSubject" => "DocuSign API - Signature Request from Template", 
    "templateId" => $templateId, 
    "templateRoles" => array( 
      array("email" => $email, "name" => $recipientName, "roleName" => $templateRoleName)), 
    "status" => "sent");                  

$data_string = json_encode($data); 
$curl = curl_init($baseUrl . "/envelopes"); 
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true); 
curl_setopt($curl, CURLOPT_POST, true); 
curl_setopt($curl, CURLOPT_POSTFIELDS, $data_string);                 
curl_setopt($curl, CURLOPT_HTTPHEADER, array(                   
    'Content-Type: application/json',                     
    'Content-Length: ' . strlen($data_string), 
    "X-DocuSign-Authentication: $header")                  
); 

$json_response = curl_exec($curl); 
$status = curl_getinfo($curl, CURLINFO_HTTP_CODE); 
if ($status != 201) { 
    echo "error calling webservice, status is:" . $status . "\nerror text is --> "; 
    print_r($json_response); echo "\n"; 
    exit(-1); 
} 

$response = json_decode($json_response, true); 
$envelopeId = $response["envelopeId"]; 

// --- display results 
echo "Document is sent! Envelope ID = " . $envelopeId . "\n\n"; 
+0

您使用了什么“提供的代码”?请包括一个链接或将更多的sw放入问题中。 –

+0

这是Docusign给出的PHP代码 – andyc209

+0

我已经在使用WAMP的Window 7系统上确认了问题。这个例子在Linux系统上正常工作(我刚测试过)。我正在继续调查...... –

回答

1

是您的问题,您没有安装受信任的CA证书?

如何检查

添加到示例代码:

$curl = curl_init($url); 
curl_setopt($curl, CURLOPT_VERBOSE, true); #### Added 
curl_setopt($curl, CURLOPT_HEADER, false); 

,看看你会得到什么。

在我的情况下,(在Windows上运行WAMP),详细输出包括:

SSL certificate problem: unable to get local issuer certificate

对此的解决办法是安装在本地受信任的证书。另一种方法是关闭证书检查,非常不推荐!

安装可信证书

  1. Download the certificates from the Curl website。本地存储的文件,在同一目录作为您例如PHP软件cacert.pem

  2. 添加以下两个选项到这两个卷曲操作:

搜索$卷曲= curl_init($ URL);并添加代码的每个实例之后:

curl_setopt($curl, CURLOPT_CAINFO, "cacert.pem"); 
curl_setopt($curl, CURLOPT_CAPATH, "."); 

在PHP层

更妙的是,以解决您的PHP安装安装信任的CA列表,作为一个整体,通过配置它使用CACERT。 pem默认。

+1

特别是在WAMP中,你将不得不将它添加到配置中。 文件: C:\瓦帕\ BIN \ PHP中\ PHPX \ php.ini中 添加以下内容: [卷曲] curl.cainfo = “C:/wamp/cert/cacert.pem” – Andrew