Php 预填充Docusign模板字段
因此,当从自定义界面提交文档时,我试图在DocuSign模板中预填充一些字段,但请求似乎无法在模板中找到它们。我们正在使用REST、旋度和Codeigniter。我的数据数组如下所示:Php 预填充Docusign模板字段,php,codeigniter,rest,docusignapi,Php,Codeigniter,Rest,Docusignapi,因此,当从自定义界面提交文档时,我试图在DocuSign模板中预填充一些字段,但请求似乎无法在模板中找到它们。我们正在使用REST、旋度和Codeigniter。我的数据数组如下所示: $data = array("accountId" => $accountId, "emailSubject" => "Hello World!", "emailBlurb" => "This comes from PHP", "templateId" => "**
$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");
我尝试用tabs代替tabstatus,但这也不起作用,我们的XML响应使用tabstatus代替tabs。自从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":"mike@cloudpwr.com",
"name":"Mike Longmire",
"roleName":"LC3",
"tabStatuses":[
{
"tabStatus":[
{
"tabLabel":"lic_num",
"tabValue":"1111"
},
{
"tabLabel":"ubi_num",
"tabValue":"2222"
},
{
"tabLabel":"tra_nam",
"tabValue":"Flakey"
}
]
}
],
"email":"duckie715@gmail.com",
"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(“申请人电子邮件”)
)并替换为实际电子邮件等,然后运行
如果仍然出现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的好处在于,即使该变量在双引号中,变量的值仍将插入引号中。对DocuSign API请求(或任何API请求)进行故障排除的第一步是检查完整的JSON(或XML)向服务器发送的请求。(使用Fiddler或类似工具,这很容易做到。)查看原始请求内容并将其与DocuSign代码示例和文档进行比较,应该可以让您确定请求结构/内容的问题,然后您可以相应地调整代码。如果您可以在此处发布请求XML或JSON,我很乐意就您的问题的潜在原因提供反馈。我很乐意,但我无法让Fiddler在我的Mac上工作。你能推荐另一个应用程序吗?我有一个来自data_string变量的准json打印。因此,现在当我单击“创建信封”菜单链接时,它会给我“调用webservice时出错,状态为:400”错误。我想知道它是否不喜欢Codeigniter语法,即$this->input->post(),即使它确实有效。因此它实际上是电子邮件地址。是否有特殊的方法来处理标头请求中的电子邮件地址?它仍然不会写入模板中的字段。这解决了电子邮件问题,但我仍然无法使其写入字段。这是否意味着您不再收到错误,但它不是预填充的是否删除信封标签?如果是这种情况,请确保您在JSON中使用的是
tab
而不是tabStatuses
,并确认传入代码的tabLabel与通过控制台添加标签的tab标签完全匹配。是的。我刚刚将其更改为tab,但它仍然没有预填充。我使用的是tabStatuses和TabStatus,因为在我们的响应XML中,没有Tab和Tab。所以看看我刚刚下载的模板,它确实是Tab(我的错误)。下一步应该是Tab而不是TextTab吗?