Fook
Fook

Reputation: 5550

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

We have a case where we need to check envelope status in two separate Docusign accounts. If we don't get status in the first, we want to check the second.

I'm having trouble getting the API to re-initialize with the credentials of our second account. I'm calling this snippet with the new variables:

require_once('docusign/SignatureApi.php');
$IntegratorsKey = "abcd";
$UserID = "[email protected]";
$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 = "[email protected]";
  $Password = "xxxxx";
  $api->setCredentials("[" . $IntegratorsKey . "]" . $UserID, $Password);
  // retry request
  $res = RequestEnvelopStatuses($envelopes);
  $envelopeStatuses = $res->RequestStatusesResult;
}

It doesn't return an error, but won't return envelope status either. It seems to still use the first credentials (guessing). The second attempt always seems to return whatever the first attempt did.

Is there a better / preferred way to do this?

Upvotes: 0

Views: 56

Answers (1)

greg_diesel
greg_diesel

Reputation: 3005

That does not look like the proper way to get the envelope status. Maybe that's why you are not finding them and trying to look again?

// 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);

Upvotes: 2

Related Questions