2014-09-04 2 views
-1

디지털 서명을 위해 영수증을 발급받는 방법을 알고 싶습니다. pdf는 itextsharp를 사용하여 스탬프 처리됩니다.asp.net에서 docusign 평안한 API를 사용하여 pdf를 보내는 방법은 무엇입니까?

api에는 봉투 ID가 필요합니까? docusign을 사용하여 보내는 우표 처리 된 pdf를 첨부하려면 어떻게합니까?

기능이 XML

<?xml version="1.0" encoding="UTF-8"?> 
<envelopeDefinition   
xmlns="http://www.docusign.com/restapi"xmlns:xsi="http://www.w3.org/2001/XMLSchema-  
instance"xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
<emailBlurb>Annual contract</emailBlurb> 
<emailSubject>API Call for adding signature request to document and  
sending</emailSubject> 
<status>sent</status> 
<documents> 
    <document> 
    <documentId>1</documentId> 
    <name>myAcrobatFormFile.pdf</name> 
    </document> 
</documents> 
<recipients> 
    <signers> 
    <signer> 
     <recipientId>2</recipientId> 
     <email>[email protected]</email> 
     <name>Bob Smith</name> 
    </signer> 
    </signers> 
</recipients> 
</envelopeDefinition> 
를 보내는 방법을

Private pdfFormFileName As String = "myAcrobatFormFile.pdf" 

Sub Print_Click(ByVal sender As Object, ByVal e As CommandEventArgs) 
    Dim sUniqueKey As String 
    Dim dr As OdbcDataReader 
    Dim sql As String 
    Dim reader As PdfReader 
    Dim sFileName As String = "" 

    Dim sArray As Array 

    sUniqueKey = e.CommandArgument 
    sArray = sUniqueKey.Split(",") 

    sql = "select " 
    sql += "name," 
    sql += "id" 
    sql += " from table" 
    sql += " where key1=" & sArray(0) 
    sql += " and key2=" & sArray(1) 

    oFnc.OpenODBC() 

    selectCommand = New OdbcCommand(sql, oFnc.connWeb) 
    dr = selectCommand.ExecuteReader 
    If dr.Read Then 

     reader = New PdfReader(server.mappath(pdfFormFileName)) 

     sFileName = "data/" & oFnc.GetTimeStamp & "displayForm.pdf" 

     Dim stamper As PdfStamper = New PdfStamper(reader, New System.IO.FileStream(Server.MapPath(sFileName), FileMode.Create)) 


     Dim fields As AcroFields 
     fields = stamper.AcroFields 


     With fields 
      .SetField("txtName", Left(dr("name"), 20)) 
      .SetField("txtId", dr("id") 
     End With 
     stamper.FormFlattening = True 
     stamper.Close() 

    End If 
    dr.Close() 

    oFnc.CloseODBC() 
End Sub 
당신이 발견
+0

의 도움 HTTP 수 있습니다이 글을 읽을 : //www.codeproject를하지만 C#을 로컬 파일에 서명을 요청 특히이 예 예 (다른 .NET 기술)가있다. co.kr/Articles/14488/전자 서명 - PDF 문서와 iTextSharp –

+0

현재 PDF 스탬퍼 코드가 작동하고 있습니다. PDF는 docusign의 디지털 서명 만 있으면됩니다. 나는 pdf를 보내기위한 편안한 API 코드가 필요하다. –

+0

나는 코드 프로젝트를 읽고 그것이 내가 원하는 것이 아니었다. 나는 스탬퍼를 통해 pdf에 서명 된 서명을 추가하고 싶지 않습니다. docusign 클라우드를 사용하여 디지털 서명하기 위해 수신자에게 스탬프 처리 된 docusign pdf를 보내고 싶습니다. –

답변

1

DocuSign의 API 연습은이 작업을 수행하는 방법의 좋은 예, 그리고 API 탐색기는 또 다른 훌륭한 도구입니다 REST 호출이 수행되는 방법을 보여줍니다. 이들 모두는 개발자 센터에서 API 도구 페이지에서 볼 수 있습니다

https://www.docusign.com/developer-center/quick-start/api-explorer

이 API Explorer를 사용하면 코드를 작성하지 않고 어떤 API 호출을 할 수 있습니다. 페이지 상단에 자격 증명을 입력하고 원하는 통화를 선택하고 필요한 경우 매개 변수를 채우고 TRY IT 버튼을 누르기 만하면됩니다.

아쉽게도 API 연습에는 Visual Basic 예제가 없습니다.

http://iodocs.docusign.com/APIWalkthrough/requestSignatureFromDocument

0
Sub login_click(ByVal sender As Object, ByVal e As System.EventArgs) 
    'Dim oClient = New WebClient 
    Dim sUrl As String = "https://demo.docusign.net/restapi/v1/login_information?api_password=true&include_account_id_guid=true&login_settings=all" 
    Dim sEmail As String = "[email protected]" 
    Dim sPassword As String = "mypassword" 
    Dim sIntegratorKey As String = "myintegratorkey" 
    Dim sDocumentName As String = "mypdfdocument.pdf" 
    Dim sContentType As String = "application/pdf" 

    Dim oRequest As HttpWebRequest 
    oRequest = initializeRequest(sUrl, "GET", "", sEmail, sPassword, sIntegratorKey) 


    Dim oResponse As HttpWebResponse = oRequest.GetResponse 
    Dim baseURL As String = "" 
    Dim oStreamReader As StreamReader = New StreamReader(oResponse.GetResponseStream) 
    Dim sXML As String = oStreamReader.ReadToEnd 
    baseURL = parseDataFromResponse(sXML, "baseUrl") 
    Dim sXmlBody As String 
    sXmlBody = "<envelopeDefinition xmlns='http://www.docusign.com/restapi'>" & _ 
       "<emailSubject>DocuSign API</emailSubject>" & _ 
       "<status>sent</status>" & _ 
       "<documents>" & _ 
       "<document>" & _ 
       "<documentId>1</documentId>" & _ 
       "<name>" & sDocumentName & "</name>" & _ 
       "</document>" & _ 
       "</documents>" & _ 
       "<recipients>" & _ 
       "<signers>" & _ 
       "<signer>" & _ 
       "<recipientId>1</recipientId>" & _ 
       "<email>[email protected]</email>" & _ 
       "<name>John Smith</name>" & _ 
       "<tabs>" & _ 
       "<signHereTabs>" & _ 
       "<signHere>" & _ 
       "<xPosition>100</xPosition>" & _ 
       "<yPosition>100</yPosition>" & _ 
       "<documentId>1</documentId>" & _ 
       "<pageNumber>1</pageNumber>" & _ 
       "</signHere>" & _ 
       "</signHereTabs>" & _ 
       "</tabs>" & _ 
       "</signer>" & _ 
       "</signers>" & _ 
       "</recipients>" & _ 
       "</envelopeDefinition>" 

    sUrl = baseURL & "/envelopes" 

    oRequest = initializeRequest(sUrl, "POST", "", sEmail, sPassword, sIntegratorKey) 

    configureMultiPartFormDataRequest(oRequest, sXmlBody, sDocumentName, sContentType) 

    Dim sMessage As String 
    sMessage = getResponseBody(oRequest) 
    MsgBox(sMessage) 
    'Dim sUri As String = parseDataFromResponse(sXML, "uri") 

End Sub 
Function getResponseBody(ByRef oRequest As HttpWebRequest) As String 
    Dim oResponse As HttpWebResponse = oRequest.GetResponse 
    Dim oStreamReader As StreamReader = New StreamReader(oResponse.GetResponseStream) 
    Dim sResponseString As String = oStreamReader.ReadToEnd 
    Return (sResponseString) 
End Function 

Sub configureMultiPartFormDataRequest(ByRef oRequest As HttpWebRequest, sXmlBody As String, sDocumentName As String, sContentType As String) 
    oRequest.ContentType = "multipart/form-data; boundary=BOUNDARY" 
    Dim sRequestBodyStart As String = "\r\n\r\n--BOUNDARY\r\n" & _ 
     "Content-Type: application/xml\r\n" & _ 
       "Content-Disposition: form-data\r\n" & _ 
       "\r\n" & _ 
       sXmlBody & "\r\n\r\n--BOUNDARY\r\n" & _ 
       "Content-Type: " & sContentType & "\r\n" & _ 
       "Content-Disposition: file; filename='" & sDocumentName & "'; documentId=1\r\n" & _ 
       "\r\n" 
    Dim sRequestBodyEnd As String = "\r\n--BOUNDARY--\r\n\r\n" 
    Dim oFileStream As FileStream = File.OpenRead(Server.MapPath(sDocumentName)) 
    Dim bodyStart As Byte() = System.Text.Encoding.UTF8.GetBytes(sRequestBodyStart.ToString) 
    Dim bodyEnd As Byte() = System.Text.Encoding.UTF8.GetBytes(sRequestBodyEnd.ToString) 
    Dim oDataStream As Stream = oRequest.GetRequestStream 
    oDataStream.Write(bodyStart, 0, sRequestBodyStart.ToString.Length()) 
    Dim buffer(4096) As Byte 
    Dim iLen As Integer = 0 
    iLen = oFileStream.Read(buffer, 0, 4096) 
    Do While iLen > 0 
     oDataStream.Write(buffer, 0, iLen) 
     iLen = oFileStream.Read(buffer, 0, 4096) 
    Loop 

    oDataStream.Write(bodyEnd, 0, sRequestBodyEnd.ToString.Length()) 
    oDataStream.Close() 

End Sub 

Function initializeRequest(sUrl As String, sMethod As String, sBody As String, sEmail As String, sPassword As String, sIntegratorKey As String) As HttpWebRequest 
    Dim oRequest As HttpWebRequest 

    oRequest = WebRequest.Create(sUrl) 
    oRequest.KeepAlive = False 
    oRequest.Method = sMethod 

    AddRequestHeaders(oRequest, sEmail, sPassword, sIntegratorKey) 
    If sBody <> "" Then 
     AddRequestBody(oRequest, sBody) 
    End If 


    Return (oRequest) 
End Function 
Sub AddRequestHeaders(ByRef oRequest As HttpWebRequest, sEmail As String, sPassword As String, sIntegratorKey As String) 
    oRequest.Headers.Add("X-DocuSign-Authentication", 
     String.Format("<DocuSignCredentials><Username>{0}</Username><Password>{1}</Password><IntegratorKey>{2}</IntegratorKey></DocuSignCredentials>", sEmail, sPassword, sIntegratorKey)) 

    oRequest.Accept = "application/xml" 
    oRequest.ContentType = "application/xml" 
End Sub 
Sub addRequestBody(ByRef oRequest As HttpWebRequest, sRequestBody As String) 
    Dim body As Byte() = System.Text.Encoding.UTF8.GetBytes(sRequestBody) 
    Dim oDataStream As Stream = oRequest.GetRequestStream 
    oDataStream.Write(body, 0, sRequestBody.Length) 
    oDataStream.Close() 

End Sub 
Function parseDataFromResponse(sXML As String, sSearchToken As String) As String 
    Dim oXmlReader As XmlReader = XmlReader.Create(New StringReader(sXML)) 
    Do While oXmlReader.Read() 
     If oXmlReader.NodeType = XmlNodeType.Element And oXmlReader.Name = sSearchToken Then 
      Return oXmlReader.ReadString() 
     End If 
    Loop 
    Return "" 
End Function 
+0

404 오류가 발생합니다. 왜? –

+0

파일 스트림은 pdf를 요청 스트림으로 읽어서 게시하려고 시도합니다. 서버가 게시물을 거부하지만 오류 메시지가 분명하지 않습니다. –

+0

서명 요청 방법 http : //iodocs.docusign.com/APIWalkthrough/requestSignatureFromDocument –