PHP调用DocuSign API发送签署文档遇401认证失败错误求助
解决DocuSign步骤2调用401认证失败问题
你遇到的问题是步骤1登录成功,但创建信封时返回401认证失败,以下是针对性的排查和修复方案:
1. 修复认证头的语法错误
你的代码中构造认证头的行存在字符串未闭合和多余分号的问题:
// 错误写法 $header = "<DocuSignCredentials><Username>" . $email . "</Username><Password>" . $password . "</Password><IntegratorKey>" . $integratorKey . "</IntegratorKey></DocuSignCredentials>;;
虽然步骤1可能侥幸成功,但这个错误会导致步骤2的认证头格式异常。修正为:
// 正确写法 $header = "<DocuSignCredentials><Username>" . $email . "</Username><Password>" . $password . "</Password><IntegratorKey>" . $integratorKey . "</IntegratorKey></DocuSignCredentials>";
确保XML格式完整,字符串正确闭合,无多余符号。
2. 移除手动设置的Content-Length
步骤2中手动计算Content-Length的方式不适用于包含二进制PDF的multipart请求,strlen()无法准确计算二进制数据长度,会导致请求结构损坏,间接引发认证错误。修改请求头设置:
// 移除Content-Length参数 curl_setopt($curl, CURLOPT_HTTPHEADER, array( 'Content-Type: multipart/form-data;boundary=myboundary', "X-DocuSign-Authentication: $header" ) );
让curl自动处理Content-Length,保证请求格式正确。
3. 验证PDF文件读取完整性
添加文件读取校验,确保PDF文件被完整读取:
$file_contents = file_get_contents($document_name); if ($file_contents === false) { echo "无法读取指定的PDF文件"; exit(-1); }
不完整的文件内容会破坏multipart请求结构,导致服务器无法正确解析请求,返回错误的认证提示。
4. 确认baseUrl格式正确
步骤1输出的baseUrl格式应为https://demo.docusign.net/restapi/v2/accounts/{你的账户ID},确保拼接/envelopes后没有多余空格或字符,最终请求地址类似:
https://demo.docusign.net/restapi/v2/accounts/123456/envelopes
内容的提问来源于stack exchange,提问作者Nancy Moore
相关产品推荐
相关产品推荐

