因此,当从自定义界面提交文档时,我尝试在 DocuSign 模板中预填充某些字段,但请求似乎无法在模板中找到它们。我们正在使用 REST、cURL 和 Codeigniter。我的数据数组如下:
$data = array("accountId" => $accountId,
"emailSubject" => "Hello World!",
"emailBlurb" => "This comes from PHP",
"templateId" => "********-****-****-****-************",
"templateRoles" => array(
array(
"email" => "****@******.com",
"name" => "**** *****",
"roleName" => "LC3"
),
array(
"email" => $this->input->post("applicant_email"),
"name" => $this->input->post("applicant_name"),
"roleName" => "Applicant",
"tabStatuses" => array(
"textTabs" => array (
array (
"tabLabel" => "lic_num",
"tabValue" => $this->input->post("license_number")
),
array (
"tabLabel" => "ubi_num",
"tabValue" => $this->input->post("ubi_number")
),
array (
"tabLabel" => "tra_nam",
"tabValue" => $this->input->post("trade_name")
)
)
)
)
),
"status" => "sent");
我尝试使用选项卡而不是 tabStatuses,但这也不起作用,并且我们的 XML 响应使用 TabStatuses 而不是选项卡。自从 API 演练发布以来,有什么变化吗?
编辑:因此,在使用 Chrome 的 Postman 扩展进行多次试验和错误之后,这是我实际上没有出错的 JSON 请求:
{
"accountId":"c771ba8c-2947-4bec-acab-15b1b48a11b6",
"emailSubject":"Hello World!",
"emailBlurb":"This comes from PHP",
"templateId":"B96D0480-8792-43E8-AE11-E2AEAC74E601",
"templateRoles":[
{
"email":"<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="781511131d381b14170d1c080f0a561b1715" rel="noreferrer noopener nofollow">[email protected]</a>",
"name":"Mike Longmire",
"roleName":"LC3",
"tabStatuses":[
{
"tabStatus":[
{
"tabLabel":"lic_num",
"tabValue":"1111"
},
{
"tabLabel":"ubi_num",
"tabValue":"2222"
},
{
"tabLabel":"tra_nam",
"tabValue":"Flakey"
}
]
}
],
"email":"<a href="https://stackoverflow.com/cdn-cgi/l/email-protection" class="__cf_email__" data-cfemail="305445535b595507010570575d51595c1e535f5d" rel="noreferrer noopener nofollow">[email protected]</a>",
"name":"Mike Longmire",
"roleName":"Applicant"
}
],
"status":"sent"
}
我得到了同样的回复:
{
"envelopeId": "0063d398-36b7-4e2f-8515-6ed9ab62aaeb",
"uri": "/envelopes/0063d398-36b7-4e2f-8515-6ed9ab62aaeb",
"statusDateTime": "2013-10-08T18:05:54.9926661Z",
"status": "sent"
}
有什么想法吗?
最佳答案
这很可能是由于 JSON 内的函数调用返回的值没有用引号 (") 标记引起的。为了测试该理论,我首先会在任何位置硬编码一些值在 JSON 中调用函数(例如 "email"=> $this->input->post("applicant_email")
)并替换为实际的电子邮件等并运行。
如果您仍然收到 400 错误,则表明您的请求存在其他问题。如果不这样做,那么您只需在这些函数调用传回的值周围添加引号即可。
例如,您可以分配给变量,例如
$applicantEmail_1 = $this->input->post("applicant_email")
然后设置你的 JSON:
"templateRoles" => array(
array(
"email" => "****@******.com",
"name" => "**** *****",
"roleName" => "LC3"
),
array(
"email" => "$applicantEmail_1",
"name" => $this->input->post("applicant_name"),
"roleName" => "Applicant",
...
PHP 的好处是,即使该变量位于双引号中,该变量的值仍将插入到引号内。
关于php - 预填充文档签名模板字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19236315/