Integrate DocuSign API in a C# Application
- Add the DocuSign NuGet package to your project to simplify API interaction. Use the DocuSign.eSign SDK, which offers a higher-level interface.
- Configure your application to authenticate with the DocuSign API. This often involves OAuth 2.0 for security and flexibility in handling user authentication.
Install-Package DocuSign.eSign
Authenticating with OAuth 2.0
- Begin by setting up your application to handle OAuth 2.0 authentication. You need to follow the Authorization Code Grant flow or use JWT Grant if you need non-interactive authentication.
- Utilize DocuSign's OAuth library for C#, which handles the complexity of the OAuth process, reducing manual coding.
// Use JWT authentication for server-side operations
string privateKey = File.ReadAllText("path/to/your/private.key");
ApiClient apiClient = new ApiClient();
apiClient.ConfigureJwtAuthorizationFlow(clientId, userId, authServer, privateKey, 1);
string accessToken = apiClient.RequestJWTUserToken();
Create an Envelope for Electronic Signatures
- Prepare the envelope that DocuSign will use to send documents for electronic signatures. This involves setting recipient information, document information, and any signing tabs.
- Use envelope definition to configure multiple elements such as signers and documents inside your C# code.
EnvelopeDefinition envelopeDefinition = new EnvelopeDefinition
{
EmailSubject = "Please sign this document",
Documents = new List<Document>
{
new Document
{
DocumentBase64 = Convert.ToBase64String(File.ReadAllBytes("path/to/document.pdf")),
Name = "Sample Document",
FileExtension = "pdf",
DocumentId = "1"
}
},
Recipients = new Recipients
{
Signers = new List<Signer>
{
new Signer
{
Email = "recipient@example.com",
Name = "John Doe",
RecipientId = "1",
Tabs = new Tabs
{
SignHereTabs = new List<SignHere>
{
new SignHere
{
DocumentId = "1",
PageNumber = "1",
XPosition = "100",
YPosition = "100"
}
}
}
}
}
},
Status = "sent"
};
Send the Envelope
- Utilize the EnvelopesApi to send the prepared envelope. This step officially triggers the process of sending your documents to the specified recipient for electronic signatures.
- Manage the response to ensure the envelope creation and sending process were successful.
var apiClient = new ApiClient(baseUrl);
apiClient.Configuration.DefaultHeader["Authorization"] = "Bearer " + accessToken;
EnvelopesApi envelopesApi = new EnvelopesApi(apiClient);
EnvelopeSummary results = envelopesApi.CreateEnvelope(accountId, envelopeDefinition);
Console.WriteLine("Envelope has been sent, with Envelope ID: " + results.EnvelopeId);
Handle Callbacks and Notifications
- Implement webhooks to receive real-time updates on the status of envelopes and recipients. This allows your application to respond to events like when a document is signed.
- Configure the listener to process DocuSign event notifications, ensuring that your application handles these callbacks effectively and securely.
// Simplified example of a webhook handler
public IActionResult WebhookListener()
{
// Logic to handle notification here
string requestBody = new StreamReader(HttpContext.Request.Body).ReadToEndAsync().Result;
Console.WriteLine("Received notification: " + requestBody);
return Ok();
}
By following these guidelines and utilizing the C# DocuSign library, you can efficiently integrate electronic signature functionality into your application.