2017-03-29 2 views
0

우리는 아래에 실행하려고를 얻을 수 없다 템플릿에 정의 된 필드 프로그램에서 값을 채우고 싶습니다. 이 (템플릿이 서명 태그의 필드가 포함되어 있습니다.) DocuSign의 필드의 목록을 얻기 위해 문제 을 ■나는 EnvelopeTabs 목록

, 이 API (EnvelopeTabs : 목록) 【코딩 예】 , 발행 탭 탭 = envelopesApi.ListTabs (accountId, envelopeSummary.EnvelopeId, "1");

다음과 같은 오류가 발생했습니다. 템플릿을 지정하면 해당 템플릿에 정의 된 필드 목록 획득시 다음 오류가 발생했습니다.

"값 1을 'DocuSign.eSign.Model.Number'로 변환하는 중 오류가 발생했습니다. 경로 'signHereTabs [0] .scaleValue', 6 행, DocuSign의 에서 간행하는 구체적인 구현 세부 사항 ■ 위치 (23) "

· CoreRecipes.cs 우리는 다음을 사용했다. CoreRecipes.cs의 requestSignatureOnDocumentTest 방법의 끝에서

  1. 는 는 탭의 목록을 얻으려면 다음 코드를 추가합니다. 탭 탭 = envelopesApi.ListTabs (accountId, envelopeSummary.EnvelopeId, "1"); CoreRecipes.cs의 주요 방법에
  2. , // *** TEST 1 - (로컬 문서에) 요청 서명 EnvelopeSummary envSummary recipes.requestSignatureOnDocumentTest =(); . 기타 정보 ■

서명 필드가 (예 : 필드 A, 필드 B, 필드 C)에 존재하지 않는 경우 서명 필드가 존재하면 의 경우 필드 목록, 를 얻을 수 있습니다 (예 : 필드 A, 필드 B, 필드 C, 서명 필드) 오류가 반환되고 얻을 수 없습니다.

+0

당신이 송신/수신하는 원시 API 요청/응답을 게시 할 수 있습니까? 그러면 훨씬 빨리 진단하는 데 도움이됩니다. API 로그를받는 방법을 잘 모르는 경우 다음 블로그 게시물을 참조하십시오. https://www.docusign.com/blog/checking-api-logs-like-the-weather/ – Ergin

답변

1

CoreRecipes.cs (우리의 소스 코드)

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
using System.IO; 
using Newtonsoft.Json; 

using DocuSign.eSign.Api; 
using DocuSign.eSign.Model; 
using DocuSign.eSign.Client; 

namespace TestProj 
{ 
    class CoreRecipes 
    { 
     // Integrator Key (aka API key) is needed to authenticate your API calls. This is an application-wide key 
     private string INTEGRATOR_KEY = "[INTEGRATOR_KEY]"; 

     ////////////////////////////////////////////////////////// 
     // Main() 
     ////////////////////////////////////////////////////////// 
     static void Main(string[] args) 
     { 
      CoreRecipes recipes = new CoreRecipes(); 

      //*** TEST 1 - Request Signature (on local document)    
      EnvelopeSummary envSummary = recipes.requestSignatureOnDocumentTest(); 

      Console.Read(); 
     } 

     //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 
     public EnvelopeSummary requestSignatureOnDocumentTest() 
     { 
      // Enter your DocuSign credentials below. Note: You only need a DocuSign account to SEND documents, 
      // signing is always free and signers do not need an account. 
      string username = "[EMAIL]"; 
      string password = "[PASSWORD]"; 

      // Enter recipient (signer) name and email address 
      string recipientName = "[RECIPIENT_NAME]"; 
      string recipientEmail = "[RECIPIENT_EMAIL]"; 

      // the document (file) we want signed 
      const string SignTest1File = @"[PATH/TO/DOCUMENT/TEST.PDF]"; 

      // instantiate api client with appropriate environment (for production change to www.docusign.net/restapi) 
      configureApiClient("https://demo.docusign.net/restapi"); 

      //=========================================================== 
      // Step 1: Login() 
      //=========================================================== 

      // call the Login() API which sets the user's baseUrl and returns their accountId 
      string accountId = loginApi(username, password); 

      //=========================================================== 
      // Step 2: Signature Request (AKA create & send Envelope) 
      //=========================================================== 

      // Read a file from disk to use as a document. 
      byte[] fileBytes = File.ReadAllBytes(SignTest1File); 

      EnvelopeDefinition envDef = new EnvelopeDefinition(); 
      envDef.EmailSubject = "[DocuSign C# SDK] - Please sign this doc"; 

      // Add a document to the envelope 
      Document doc = new Document(); 
      doc.DocumentBase64 = System.Convert.ToBase64String(fileBytes); 
      doc.Name = "TestFile.pdf"; 
      doc.DocumentId = "1"; 

      envDef.Documents = new List<Document>(); 
      envDef.Documents.Add(doc); 

      // Add a recipient to sign the documeent 
      Signer signer = new Signer(); 
      signer.Email = recipientEmail; 
      signer.Name = recipientName; 
      signer.RecipientId = "1"; 

      // Create a |SignHere| tab somewhere on the document for the recipient to sign 
      signer.Tabs = new Tabs(); 
      signer.Tabs.SignHereTabs = new List<SignHere>(); 
      SignHere signHere = new SignHere(); 
      signHere.DocumentId = "1"; 
      signHere.PageNumber = "1"; 
      signHere.RecipientId = "1"; 
      signHere.XPosition = "100"; 
      signHere.YPosition = "100"; 
      signer.Tabs.SignHereTabs.Add(signHere); 

      envDef.Recipients = new Recipients(); 
      envDef.Recipients.Signers = new List<Signer>(); 
      envDef.Recipients.Signers.Add(signer); 

      // set envelope status to "sent" to immediately send the signature request 
      envDef.Status = "sent"; 

      // |EnvelopesApi| contains methods related to creating and sending Envelopes (aka signature requests) 
      EnvelopesApi envelopesApi = new EnvelopesApi(); 
      EnvelopeSummary envelopeSummary = envelopesApi.CreateEnvelope(accountId, envDef); 

      // print the JSON response 
      Console.WriteLine("EnvelopeSummary:\n{0}", JsonConvert.SerializeObject(envelopeSummary)); 

      // *** I added a code here *** 
      Tabs tabs = envelopesApi.ListTabs(accountId, envelopeSummary.EnvelopeId, "1"); 
      // *** I added a code here *** 

      return envelopeSummary; 

     } // end requestSignatureTest() 

     //********************************************************************************************************************** 
     //********************************************************************************************************************** 
     //* HELPER FUNCTIONS 
     //********************************************************************************************************************** 
     //********************************************************************************************************************** 
     public void configureApiClient(string basePath) 
     { 
      // instantiate a new api client 
      ApiClient apiClient = new ApiClient(basePath); 

      // set client in global config so we don't need to pass it to each API object. 
      Configuration.Default.ApiClient = apiClient; 
     } 

     //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 
     public string loginApi(string usr, string pwd) 
     { 
      // we set the api client in global config when we configured the client 
      ApiClient apiClient = Configuration.Default.ApiClient; 
      string authHeader = "{\"Username\":\"" + usr + "\", \"Password\":\"" + pwd + "\", \"IntegratorKey\":\"" + INTEGRATOR_KEY + "\"}"; 
      Configuration.Default.AddDefaultHeader("X-DocuSign-Authentication", authHeader); 

      // we will retrieve this from the login() results 
      string accountId = null; 

      // the authentication api uses the apiClient (and X-DocuSign-Authentication header) that are set in Configuration object 
      AuthenticationApi authApi = new AuthenticationApi(); 
      LoginInformation loginInfo = authApi.Login(); 

      // find the default account for this user 
      foreach (LoginAccount loginAcct in loginInfo.LoginAccounts) 
      { 
       if (loginAcct.IsDefault == "true") 
       { 
        accountId = loginAcct.AccountId; 
        break; 
       } 
      } 
      if (accountId == null) 
      { // if no default found set to first account 
       accountId = loginInfo.LoginAccounts[0].AccountId; 
      } 
      return accountId; 
     } 

    } // end class 
} // end namespace