如何使用不同的凭据重新初始化 Docusign PHP API

How to re-initialize the Docusign PHP API with different credentials

我们有一个案例需要检查两个单独的 Docusign 帐户中的信封状态。如果我们在第一个中没有获得状态,我们想检查第二个。

我无法让 API 使用我们第二个帐户的凭据重新初始化。我用新变量调用这个片段:

require_once('docusign/SignatureApi.php');
$IntegratorsKey = "abcd";
$UserID = "dave@account.com";
$Password = "xxxxx";
$_apiEndpoint = $Endpoint;
$_apiWsdl = "docusign/api/APIService.wsdl";
$api_options =  array('location'=>$_apiEndpoint,'trace'=>true,'features' => SOAP_SINGLE_ELEMENT_ARRAYS);
$api = new APIService($_apiWsdl, $api_options);
$api->setCredentials("[" . $IntegratorsKey . "]" . $UserID, $Password);

$res = RequestEnvelopStatuses($envelopes);
$envelopeStatuses = $res->RequestStatusesResult;

if(!count($envelopeStatuses->EnvelopeStatuses->EnvelopeStatus)){
  // If we did not find envelopes, check other account
  $IntegratorsKey = "wxyz";
  $UserID = "fred@altaccount.com";
  $Password = "xxxxx";
  $api->setCredentials("[" . $IntegratorsKey . "]" . $UserID, $Password);
  // retry request
  $res = RequestEnvelopStatuses($envelopes);
  $envelopeStatuses = $res->RequestStatusesResult;
}

它不会 return 错误,但也不会 return 信封状态。它似乎仍然使用第一个凭据(猜测)。无论第一次尝试做了什么,第二次尝试似乎总是 return。

是否有更好/首选的方法来做到这一点?

这看起来不像是获取信封状态的正确方法。也许这就是为什么您没有找到它们并试图再次查看的原因?

// Create a filter using account ID and today as a start time 
$envStatusFilter = new EnvelopeStatusFilter();
$envStatusFilter->AccountId = $AccountID;
$beginDateTime = new EnvelopeStatusFilterBeginDateTime();
$beginDateTime->_ = todayXsdDate(); // note that this helper function
                                    // is in CodeSnippets/include/utils.php
                                    // in the PHP SDK
$envStatusFilter->BeginDateTime = $beginDateTime;

// Send
$requestStatusesparams = new RequestStatuses();
$requestStatusesparams->EnvelopeStatusFilter = $envStatusFilter;
$response = $api->RequestStatuses($requestStatusesparams);