Я использую Docusign PHP Client и пытаюсь создать и конвертировать и отправить его по электронной почте.В текущем SDK я получил ошибку:
INVALID_REQUEST_BODY Тело запроса отсутствует или неправильно отформатировано.Невозможно десериализовать текущий объект JSON (например, {"name": "value"}) в тип 'API_REST.Models.v2.document []', поскольку для десериализации типа требуется массив JSON (например, [1,2,3])правильно. \ r \ n ◀ Чтобы исправить эту ошибку, либо измените JSON на массив JSON (например, [1,2,3]), либо измените десериализованный тип так, чтобы это был нормальный тип .NET (например, не примитив t ▶Путь 'documents.documentBase64', строка 1, позиция 31.
Поэтому мне пришлось отредактировать EnvelopeApi.php (строка 2876) json_encode($httpBody)
, чтобы заставить его работать.
Теперь, когда он работает, я получаю ответ, подобный этому, однако я не могу изменить статус созданного на отправленный - это моя проблема.
EnvelopeSummary {#460 ▼
#container: array:4 [▼
"envelope_id" => "6b9ef863-2ee0-4ea6-9f7e-20b7d4f59b22"
"status" => "created"
"status_date_time" => "2018-10-03T12:30:22.8600000Z"
"uri" => "/envelopes/6b9ef863-2ee0-4ea6-9f7e-20b7d4f59b22"
]
}
Мой полныйкод:
Сначала я проверил и получил мои $accountId
And then creating Envelope
:
$path = public_path('test.pdf');
$b64Doc = base64_encode(file_get_contents($path));
$document = new Document();
$document->setName("TEST.pdf");
$document->setFileExtension("pdf");
$document->setDocumentId(1);
$document->setDocumentBase64($b64Doc);
$sign_here = new SignHere();
$sign_here->setXPosition(25);
$sign_here->setYPosition(50);
$sign_here->setDocumentId(1);
$sign_here->setPageNumber(1);
$sign_here->setRecipientId(1);
$tabs = new Tabs();
$tabs->setSignHereTabs($sign_here);
$signers = new Signer();
$signers->setName('Test User');
$signers->setEmail('test@mailinator.com');
$signers->setRoleName('Signer');
$signers->setRecipientId(1);
$signers->setRoutingOrder(1);
$signers->setTabs($tabs);
$recipients = new Recipients();
$recipients->setSigners($signers);
$envelope_definition = new EnvelopeDefinition();
$envelope_definition->setEmailSubject('Signature Request');
$envelope_definition->setStatus("sent"); // ***
$envelope_definition->setDocuments($document);
$envelope_definition->setRecipients($recipients);
$options = new CreateEnvelopeOptions();
$options->setCdseMode(null);
$options->setMergeRolesOnDraft(null);
try {
$envelopeSummary = $envelopeApi->createEnvelope($accountId, $envelope_definition, $options);
dd($envelopeSummary);
// Also tried this:
// $envelopeApi->update($accountId, $envelopeSummary->getEnvelopeId(), json_encode(['status' => 'sent']);
} catch (ApiException $e){
dd($e->getResponseBody()->errorCode . " " . $e->getResponseBody()->message);
}
$envelope_definition->setStatus("sent");
, это должно вызвать электронную почту, верно?по какой-то причине. Также я не вижу этот созданный конверт в своей песочнице.