我正在使用 Rest API 嵌入式签名。Cert 过程的一部分是正确处理异常。我看到 returnURL 事件参数可以返回“异常”。我如何发现异常是什么,以便我可以正确处理并显示“人性化,友好”的消息?: ) 是否有任何首选方法可以针对可能的异常测试/验证我的异常处理代码,例如强制异常返回的特定测试 URL?MTIA
2 回答
不确定您的环境是什么样的,但如果您使用的是 .NET,也许这会有所帮助。我所做的是在从 docusign 获得的嵌入式签名方法上设置一个 out 参数,以便返回一个布尔值,当通过异常块返回时为 true,如果它返回 iframe 令牌 url,则为 false。
//Console.WriteLine("Embeded View Result --> " + responseText);
//System.Diagnostics.Process.Start(url);
failure = false;
return url;
}
catch (WebException e)
{
using (WebResponse response = e.Response)
{
HttpWebResponse httpResponse = (HttpWebResponse)response;
Console.WriteLine("Error code: {0}", httpResponse.StatusCode);
using (Stream data = response.GetResponseStream())
{
string text = new StreamReader(data).ReadToEnd();
//Console.WriteLine(text);
failure = true;
return text;
}
除了例外,您还会获得包含错误代码和错误消息的错误文本。在我看来,我测试了失败布尔是否为真,如果是,我知道返回的文本是错误文本,而不是要加载到 iFrame 中的 URL 令牌。在确定文本是错误后,我对其进行解析以显示代码,然后是消息,然后是一些自定义文本,要求用户通过电子邮件发送给我们的帮助台系统并显示错误文本。
这是我用来测试失败并在我的 ASPX 视图中显示 iFrame 或解析错误文本的内容:
<%if (Model.APIfail)
{ %>
<p><strong>It appears there was an error connecting with DocuSign API.</strong></p>
<p>Error Code: <br /><%: Model.urlResponse.Substring(Model.urlResponse.IndexOf("<errorCode>") + 11, Model.urlResponse.IndexOf("</errorCode>") - (Model.urlResponse.IndexOf("<errorCode>") + 11)) %></p>
<p>Error Message: <br /><%: Model.urlResponse.Substring(Model.urlResponse.IndexOf("<message>") + 9, Model.urlResponse.IndexOf("</message>") - (Model.urlResponse.IndexOf("<message>") + 9)) %></p>
<p>Please submit error code and error message to the MAAX Spas helpdesk at <a href="mailto:helpdesk@maaxspas.com?Subject=DocuSign%20API%20Failure%20<%: Html.Encode(DateTime.Now.ToShortDateString()) %>" target="_top">helpdesk@maaxspas.com</a>.<br />Thank you.</p>
<% } else { %>
<iframe src="<%: Model.urlResponse %>" width="100%" height="1000" ></iframe>
<% } %>
当然,我还没有获得认证,所以请谨慎对待,因为无论出于何种原因,使用这种方法我都可能被拒绝。
希望这在某种程度上有用。
因此,在认证方面,DocuSign 认证部门要求您在显示的任何错误消息中包含联系信息,让用户知道他们可以联系谁来帮助解决错误。并且联系信息不能是 DocuSign 联系信息,它需要特定于您的组织或其他第三方,否则您将无法通过认证。
在可能的错误方面,RESTAPI 指南有一个页面列出了系统可能抛出的错误:
这是一个相对较大的列表,但由于您的问题与嵌入式签名有关,因此您只需要处理与嵌入式收件人(也称为“俘虏”收件人)相关的错误。搜索“俘虏”一词会从列表中产生以下错误,这些错误都应该通过嵌入式签名工作流程来实现 -
- CAPTIVE_CARBON_COPY_RECIPIENT_NOT_SUPPORTED
- CAPTIVE_IN_PERSON_SIGNER_RECIPIENT_NOT_SUPPORTED
- INVALID_CAPTIVE_RECIPIENT_OPERATION
- RECIPIENT_NOT_CAPTIVE