Учебное пособие по Docusign — Ошибка PHP API cURL — буфер не может быть нулевым

Я следую учебнику docusign, чтобы создать конверт, используя их PHP API. Учебник можно найти здесь: http://www.docusign.com/developer-center/quick-start/request-signatures

Я скопировал код и загрузил образец файла, и теперь получаю этот ответ: "errorCode": "UNSPECIFIED_ERROR", "message": "Буфер не может быть нулевым.\r\nИмя параметра: буфер"

Я думаю, что ошибка может быть связана с этим разделом:

$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=\"document.pdf\"; documentid=1 \r\n"
."\r\n"
."$file_contents\r\n"
."--myboundary--\r\n"
."\r\n";

Проблема, я думаю, в том, что $data_string нигде в их примере не определена. Есть определение данных:

$data = "{
\"emailBlurb\":\"This comes from PHP\",
\"emailSubject\":\"API Signature Request\",
\"documents\":[
{
\"documentId\":\"1\",
\"name\":\"document.pdf\"
}
],
\"recipients\":{
\"signers\":[
{
\"email\":$email,
\"name\":$name,
\"recipientId\":\"1\",
\"tabs\":{
\"signHereTabs\":[
{
\"xPosition\":\"100\",
\"yPosition\":\"100\",
\"documentId\":\"1\",
\"pageNumber\":\"1\"
}
]
}
}
]
},
\"status\":\"sent\"
}";

....Но не $data_string.

Я попытался использовать «ТЕСТ» в качестве значения для $data_string и получил: "errorCode": "INVALID_MULTI_PART_REQUEST", "message": "An error was found while parsing the multipart request. The JSON data in the first part of the multi-part request does not match the expected format. The token 'true' was expected but found 'test'."

Затем я установил значение $data_string как логическое значение (TRUE) и получил следующее сообщение об ошибке: errorCode": "INVALID_MULTI_PART_REQUEST", "message": "An error was found while parsing the multipart request. The JSON data in the first part of the multi-part request does not match the expected format. "

Любая помощь в решении этого вопроса приветствуется.


person Bad Programmer    schedule 19.06.2013    source источник


Ответы (2)


Все, что вам нужно сделать, это изменить $data_string на $data в вашем коде...

Спасибо, что заметили это, я обновил Gist на странице подписи запроса, теперь он должен работать.

person Ergin    schedule 20.06.2013

Да, это ошибка. Я работаю над созданием разумного файла класса PHP, полученного из этого примера кода. Вот класс, полученный из этого кода, который работает и немного чище: https://github.com/sylnsr/esign-samples/tree/master/docusign/php -- Если вы заинтересованы в изучении чего-то другого, кроме DocuSign, не стесняйтесь проверять этот проект время от времени. время для других образцов для других поставщиков, таких как RightSignature, над которыми я буду работать дальше.

person StartupGuy    schedule 19.06.2013
comment
P.S. Я также добавил проверку, чтобы убедиться, что идентификатор документа является GUID или целым числом. Я заметил, что служба возвращает сообщение об ошибке, если вы пытаетесь использовать что-то вроде Recipient 1 для идентификатора получателя в JSON. - person StartupGuy; 21.06.2013
comment
FYI DocuSign выпустила клиентские библиотеки Java и PHP для своего REST API. См. здесь: github.com/docusign/eSignPHPLib - person Ergin; 10.10.2013