0

こんにちは、PHP curl を介したこの docusignapi 統合は初めてで、この統合を試してみたいと思っています。以下のコードをhttp://iodocs.docusign.com/APIWalkthrough/requestSignatureFromDocumentからコピーしました。統合がどのように機能するかを簡単にテストして理解できることを願っています。しかし残念なことに、「webservice の呼び出し中にエラーが発生しました。ステータスは : 0 です」というエラーが常に発生します。ヘッダー形式を XML から JSON に変更するなど、他の回避策を試しましたが、それでもエラーが表示されます。助けてください。

    // Input your info here:
$integratorKey = 'XXXX-9999X9XX-X999-9999-99X9-9X9999X9XX9X';
$email = 'name@domain.com';
$password = 'samplepassword';
$name = 'Sender Full Name';

// 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"));
print_r(curl_getinfo($curl));
echo "<br/>";
$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 an envelope with one recipient, one tab, and one document and send
    /////////////////////////////////////////////////////////////////////////////////////////////////
    $data = array (
    "emailBlurb" => "This comes from PHP",
    "emailSubject" => "API Signature Request",
    "documents" => array(array( "documentId" => "1", "name" => "testDS.pdf")),
    "recipients" => array( "signers" => array(
            array(      "email" => $email,
                        "name" => $name,
                        "recipientId" => "1",
                        "tabs" => array(
                                "signHereTabs" => array(
                                        array(
                                            "xPosition" => "100",
                                            "yPosition" => "100",
                                            "documentId" => "1",
                                            "pageNumber" => "1"
                                         )
                                    )
                            )
                    )
            )
    ),
"status" => "sent");  
$data_string = json_encode($data);  

$file_contents = file_get_contents("testDS.pdf");

$requestBody = "\r\n"
."\r\n"
."--myboundary\r\n"
."Content-Type: application/json\r\n"
."Content-Disposition: form-data\r\n"
."\r\n"
."$data_string\r\n"
."--myboundary\r\n"
."Content-Type:application/pdf\r\n"
."Content-Disposition: file; filename=\”testDS.pdf\"; documentid=1 \r\n"
."\r\n"
."$file_contents\r\n"
."--myboundary--\r\n"
."\r\n";

// *** append "/envelopes" to baseUrl and as signature request endpoint
$curl = curl_init($baseUrl . "/envelopes" );
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_POST, true);
curl_setopt($curl, CURLOPT_POSTFIELDS, $requestBody);                                                                  
curl_setopt($curl, CURLOPT_HTTPHEADER, array(                                                                          
    'Content-Type: multipart/form-data;boundary=myboundary',
    'Content-Length: ' . strlen($requestBody),
    "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"; 

私のインテグレーターキーが無効である可能性はありますか? はいの場合、インテグレータ キーが有効かどうかを確認する方法はありますか? インテグレータキーを作成する際に、このリンクhttp://www.docusign.com/developer-center/quick-start/first-api-callの手順に従いました

4

1 に答える 1

0

コードに問題があることはすぐにはわかりません。ステータスがまったく返されない場合は、通常、次の 3 つの原因のいずれかが原因である可能性があります。

  1. リクエストの通過を阻止するセキュリティ ソフトウェア。
  2. リクエストの通過を阻止するファイアウォール。
  3. ポート 443 が他の理由 (2 または 3 以外) で閉じられています。

ソフトウェア レベルまたはハードウェア レベル (ハードウェア ファイアウォールがある場合) で、リクエストが傍受されているかどうかを確認できるログはありますか? といったことを確認することから始めます。

于 2013-10-09T17:36:54.220 に答える