迁移至OAuth后,Docusign EnvelopesAPI(PHP)重发信封遇ENVELOPE_NOT_DRAFT错误
DocuSign eSign EnvelopesAPI(PHP)迁移OAuth后重发信封报错问题
问题描述
原有运行多年的PHP遗留代码,使用DocuSign eSign EnvelopesAPI触发信封重发,迁移至OAuth并更新API库后,调用重发接口时出现400错误:
请求服务器时出错,收到非成功HTTP状态码[400],响应体如下:
O:8:"stdClass":2:{s:9:"errorCode";s:18:"ENVELOPE_NOT_DRAFT";s:7:"message";s:113:"The requested envelope is not a draft. Not able to update envelope properties in an envelope that is not a draft.";}
当前信封并非草稿,但此前非草稿状态下重发操作一直正常。原有调用代码如下:
$options = ["advanced_update" => NULL, "resend_envelope" => true]; $envelopeApi->update($accountId, $envelopeId, $envelope, $options);
原因分析
这是DocuSign API后续版本的规范调整:旧版API中update接口的resend_envelope参数存在设计疏漏,允许对非草稿信封执行重发操作;但新版本API明确了接口职责,update接口仅用于修改草稿状态信封的属性,非草稿信封的重发需使用专门的重发接口。
解决方案
替换原有update调用为resendEnvelope方法,这是DocuSign为非草稿信封重发提供的标准接口:
// 初始化重发选项(可选自定义邮件主题、正文) $resendOptions = new \DocuSign\eSign\Model\ResendEnvelopeOptions(); $resendOptions->setEmailSubject('重新发送签署请求'); $resendOptions->setEmailBlurb('请完成这份文档的签署'); // 调用重发接口 $envelopeApi->resendEnvelope($accountId, $envelopeId, $resendOptions);
如果不需要自定义邮件内容,也可以直接传入空的选项对象:
$envelopeApi->resendEnvelope($accountId, $envelopeId, new \DocuSign\eSign\Model\ResendEnvelopeOptions());
内容的提问来源于stack exchange,提问作者Geoff Maddock
相关产品推荐
相关产品推荐

