Πήγαινε στο κύριο περιεχόμενο

C# SDK

Συνιστούμε να κωδικοποιείτε απευθείας έναντι του API, η τεχνική αναφορά και το AI σας το καθιστούν απλό. Μπορεί να δημιουργηθεί ένα SDK C# χρησιμοποιώντας την προδιαγραφή OpenAPI3 του API μας και το openapi generator. Ωστόσο, αν θέλετε ένα SDK, σας προτείνουμε να χρησιμοποιήσετε το παραγόμενο έργο που παρέχεται, καθώς περιλαμβάνει διορθώσεις σε ορισμένα ζητήματα όπως τα πεδία που επιτρέπουν τιμές null.

Κάντε κλικ εδώ για το C# αποθετήριο..

Το πακέτο περιλαμβάνει τη δική του τεκμηρίωση (στο docs/), αλλά τα παραδείγματα παρακάτω θα σας δείξουν πώς να ξεκινήσετε.

Πάρτε το API Key σας

  • Δημιουργήστε λογαριασμό δοκιμής.

  • Ρυθμίστε το API όταν σας ζητηθεί και στείλτε email στο Support για να πάρετε ένα API Key. Πρέπει να δείξετε ότι έχετε κατανόηση στη χρήση REST API, συμπεριλάβετε στο email σας: το όνομα της εταιρείας σας και τη διεύθυνση, το όνομά σας και τον ρόλο σας, περιγράψτε το σενάριο χρήσης σας, και δώστε μια σύντομη περιγραφή της εμπειρίας σας στην προγραμματισμό/REST.

  • Μόλις εκδοθεί, το API key σας θα είναι διαθέσιμο στην web εφαρμογή. Θα δείτε ότι βρίσκεστε σε sandbox – προσθέστε οποιαδήποτε email στα οποία θα στέλνετε τα δοκιμαστικά σας έγγραφα.

Το api key σας τοποθετείται στο header "Authorization" και έχει τη μορφή: Apikey username:secret. Το όνομα χρήστη και το μυστικό σας θα αναγράφονται ξεκάθαρα στην web εφαρμογή.

Κάντε λήψη του SDK και των παραδειγματικών έργων

Με το git εργαλείο της επιλογής σας κάντε κλωνοποίηση του αποθετηρίου C# SDK.

git clone https://github.com/legalesign/LegalesignCsharpSDK.git legalesignSDK

Ρυθμίστε το παραδειγματικό έργο:

Ανοίξτε το LegalesignCsharpSDK.sln και κάντε build το έργο. Θα δείτε ότι περιλαμβάνονται τρία έργα στη λύση, θα εστιάσουμε στο LegalesignTest το οποίο θα σας βοηθήσει να ξεκινήσετε με κλήσεις στο REST API.

Για να εξοικονομήσετε χρόνο ίσως θέλετε να προσθέσετε το όνομα χρήστη, το μυστικό, το όνομα ομάδας, το email στόχο, το μικρό και το επώνυμο ως Ιδιότητες Κειμένου (Text properties) για το txtUsername, txtSecretKey κτλ. στο Form1. Αν όχι, θα πρέπει να τα παρέχετε όταν τρέχετε το Winform έργο (βεβαιωθείτε ότι αυτό έχει οριστεί ως έργο εκκίνησης). Αν τα κωδικοποιήσετε άμεσα, θυμηθείτε να αφαιρέσετε αυτές τις πληροφορίες όταν ολοκληρώσετε το έργο.

Ας δούμε το πρώτο μπλοκ κώδικα στο Form1.cs:

private Configuration makeConfig() {
Configuration c = new Configuration();
c.AddApiKey("Authorization", $"ApiKey {txtUsername.Text}:{txtSecretKey.Text}");

return c;
}

Μπορείτε να δείτε πώς χρησιμοποιεί το όνομα χρήστη και το μυστικό που παρέχετε και τα περνά στην παραμετροποίηση για κάθε κλήση που θα κάνουμε αργότερα. Αυτή είναι η μέθοδος με την οποία εξουσιοδοτούνται οι κλήσεις API.

Δοκιμάστε ένα GET αίτημα:

Ας βεβαιωθούμε ότι μπορείτε να κάνετε ένα απλό GET αίτημα, για να ελέγξετε ότι η αυθεντικοποίηση (Auth) έχει ρυθμιστεί σωστά.

Ο ακόλουθος κώδικας εκτελείται όταν πατάτε το κουμπί Get Groups. Αφιερώστε λίγο χρόνο για να δείτε πού περνά η παραμετροποίηση χρησιμοποιώντας το makeConfig(). Εκτελέστε το έργο, εισάγετε το όνομα χρήστη και το κλειδί στα πεδία αν δεν τα έχετε κωδικοποιήσει ως ιδιότητες κειμένου και πατήστε το κουμπί Get Groups.

private void btnCall_Click(object sender, EventArgs e)
{
GroupApi group = new GroupApi(makeConfig());
GroupListResponse groupList = group.GetGroups();

richTextBox1.Text = groupList.ToJson();
}

Αν πετύχει θα λάβετε μια λίστα JSON με τις ομάδες σας.

Αν όχι, ελέγξτε ξανά ότι η τιμή της Authorization είναι σωστή.

Αυτός ο κώδικας παίρνει οποιαδήποτε έγγραφα που περιμένουν να υπογραφούν, ένα συνηθισμένο σενάριο χρήσης. Δοκιμάστε το εξετάζοντας και τρέχοντας το κουμπί Get Documents.

private void button2_Click(object sender, EventArgs e)
{
DocumentApi docs = new DocumentApi(makeConfig());
DocumentListResponse documentList = docs.GetDocuments();

richTextBox1.Text = documentList.ToJson();
}
συμβουλή

Οι κλήσεις 'get_statuses()' και 'get_status()' είναι πιο γρήγοροι τρόποι για να αναζητήσετε βασικές πληροφορίες εγγράφου.

Θα αρχίζετε να καταλαβαίνετε πώς λειτουργεί το SDK. Επιστρέψτε στο αρχείο Readme του πακέτου, και θα δείτε όλα τα API αντικείμενα για δοκιμή, καθώς και όλες τις μεθόδους τους.

Δοκιμάστε ένα POST αίτημα

Στη συνέχεια θα στείλουμε λίγο προσαρμοσμένο HTML για υπογραφή σε μία κλήση API, μετά θα ανεβάσουμε ένα PDF και θα το στείλουμε.

Στείλτε ένα HTML έγγραφο για υπογραφή:

Ιδού ένα μικρό ποσό HTML για σκοπούς επίδειξης, που περιέχει ένα στοιχείο υπογραφής. Αντικαταστήστε τις τιμές για την ομάδα, το όνομα και το email.

private void btnPost_Click(object sender, EventArgs e)
{
DocumentApi docs = new DocumentApi(makeConfig());

List<DocumentSignerPost> signers = new List<DocumentSignerPost>();
signers.Add(new DocumentSignerPost(email: txtEmail.Text, firstname: txtFirstname.Text, lastname: txtLastname.Text));

//You must provide group id as lowercase
DocumentPost dp = new DocumentPost(
group: $"/api/v1/group/{txtGroupName.Text.ToLower()}/",
name: "dotnetdocument",
text: rtbBodyHTML.Text,
signers: signers,
doEmail: true,
footerHeight:30,
footer: "Legalesign ID: {{doc_id}}");

try
{
InlineResponse201 resp = docs.PostDocument(dp);
richTextBox1.Text = resp.ToJson();
}
catch (Exception ex) {
throw ex;
}
}

Πώς ξέρουμε ότι πέρασε; Το OpenAPI δημιουργεί εξαίρεση για αποκρίσεις εκτός 2XX. Θα θέλετε να βάζετε όλα τα αιτήματα σας μέσα σε ένα try/catch block.

Κάθε φορά που στέλνετε POST, πιθανώς θα θέλετε το νέο ID αντικειμένου. Βρίσκεται στο header Location της απόκρισης. Στο επόμενο παράδειγμά μας βλέπουμε πώς να ανεβάσουμε ένα PDF για να το στείλουμε στους υπογράφοντες και πώς να πάρουμε πίσω το ID για αυτό το νέο πρότυπο.

Ανεβάστε και στείλτε ένα PDF

Πιθανώς θα χρησιμοποιείτε text-tags μέσα στα PDFs σας, για να ορίζετε πού θα υπογράφουν ή θα συμπληρώνουν φόρμες οι άνθρωποι. Η χρήση της παραμέτρου processTags=true ενημερώνει το σύστημα να ψάξει μέσα στο έγγραφό σας και να δημιουργήσει πεδία για πληροφορίες και υπογραφές που πρέπει να υπογράψει ο παραλήπτης. Στο ριζικό φάκελο του SDK έργου περιλαμβάνεται ένα βασικό παράδειγμα PDF με tags.

Ας ανεβάσουμε ένα PDF χρησιμοποιώντας την έκδοση 'with_http_info' της POST αιτήματος για να πάρουμε το ID

private void btnUploadPdf_Click(object sender, EventArgs e)
{
DialogResult result = openFileDialog1.ShowDialog();

if (result == System.Windows.Forms.DialogResult.OK)
{
TemplatepdfApi pdf = new TemplatepdfApi(makeConfig());

// Get the file and convert the contents to a base64 byte array.
Byte[] bytes = File.ReadAllBytes(openFileDialog1.FileName);
String contents = Convert.ToBase64String(bytes);
Byte[] encodedBytes = Convert.FromBase64String(contents);

try
{
// Upload the pdf for our group to use with a title and a tag
ApiResponse &lt;object&gt; response = pdf.PostPdfTemplateWithHttpInfo(new TemplatePdfFieldPost(group: $"/api/v1/group/{txtGroupName.Text.ToLower()}/",
pdfFile: encodedBytes, processTags: true, title: "test tagged document"));

// Just to demonstrate how to read response headers we'll put the returned
// header in the output rich text box. The 'Location' header contains the new
// Template ID.
richTextBox1.Text = JsonConvert.SerializeObject(response.Headers);

// We'll save this so we can use it when calling Send with Template
txtPDFLocation.Text = response.Headers["Location"];
}
catch (Exception ex)
{
throw ex;
}
}
}

Επειδή ορίσαμε το process_tags σε true, όλα τα tags έχουν επεξεργαστεί οπότε το PDF σας είναι έτοιμο. Όπως και πριν, χρειαζόμαστε το ID για το PDF ώστε να το στείλουμε. Ευτυχώς το κρατήσαμε στο πεδίο κειμένου txtPdfLocation.

Το τελευταίο απόσπασμα κώδικα από το Send with Template δείχνει πώς χρησιμοποιούμε αυτή την τοποθεσία του PDF για να στείλουμε ένα προφορτωμένο έγγραφο για υπογραφή.

private void btnSendTemplate_Click(object sender, EventArgs e)
{
DocumentApi docs = new DocumentApi(makeConfig());

List<DocumentSignerPost> signers = new List<DocumentSignerPost>();
signers.Add(new DocumentSignerPost(email: txtEmail.Text, firstname: txtFirstname.Text, lastname: txtLastname.Text));

//You must provide group id as lowercase
DocumentPost dp = new DocumentPost(
group: $"/api/v1/group/{txtGroupName.Text.ToLower()}/",
name: "dotnetdocument",
template: txtPDFLocation.Text,
signers: signers,
doEmail: true,
footerHeight: 30,
footer: "Legalesign ID: {{doc_id}}");

try
{
InlineResponse201 resp = docs.PostDocument(dp);
richTextBox1.Text = resp.ToJson();
}
catch (Exception ex)
{
throw ex;
}
}

Ξεκινήστε την κωδικοποίηση

Βεβαιωθείτε ότι ελέγχετε την τεκμηρίωση που παράγεται από το OpenAPI για διαφορετικούς τύπους κλήσεων και επιλογές.

Κάποια κοινά προβλήματα είναι:

Το όνομα της ομάδας πρέπει να ταιριάζει ακριβώς με κάποια που ήδη έχετε στον οργανισμό σας.

Το αίτημά σας θα απορριφθεί αν τα διαπιστευτήριά σας είναι λανθασμένα, ληγμένα ή κλειδωμένα.

Θα λάβετε 401 αν είστε σε sandbox και προσπαθήσετε να στείλετε έγγραφο σε κάποιον εκτός της λίστας email sandbox σας.

Καλή κωδικοποίηση!