Pour télécharger l'exemple complet de code, consultez notre site Partage de code.

Cette rubrique décrit comment signer toutes les signatures d'une transaction à l'aide d'un appel unique, au lieu de parcourir successivement chaque document et de signer chaque signature de manière séquentielle.

Dans cet exemple :

  • Il y a deux destinataires dans la transaction : l'expéditeur et un client.

  • Il y a deux documents dans la transaction.

  • Les ancres de texte sont utilisées pour positionner les signatures sur les documents. Pour obtenir plus d'informations, consultez Ancres de texte.

  • L'exemple de PDF utilisé dans ce guide peut être téléchargé ici.

Le code suivant signera toutes les signatures de la transaction.

  //Package   PackageBuilder packageToBuild = PackageBuilder.newPackageNamed("Sign Documents Test");   //Sender   SignerBuilder signer1 = SignerBuilder.newSignerWithEmail("[email protected]")   .withFirstName("Haris")   .withLastName("Haidary")   .withCustomId("Sender");   //Client   SignerBuilder signer2 = SignerBuilder.newSignerWithEmail("[email protected]")   .withFirstName("John")   .withLastName("Smith")   .withCustomId("Signer");   //Sender signature on first document   SignatureBuilder signature1 = SignatureBuilder.signatureFor("[email protected]")   .withPositionAnchor(TextAnchorBuilder.newTextAnchor("Signature of the Contractor")   .atPosition(TextAnchorPosition.TOPLEFT)   .withSize(150, 40)   .withOffset(0, -50)   .withCharacter(0)   .withOccurence(0));   //Client signature on first document   SignatureBuilder signature2 = SignatureBuilder.signatureFor("[email protected]")   .withPositionAnchor(TextAnchorBuilder.newTextAnchor("Signature of the Client")   .atPosition(TextAnchorPosition.TOPLEFT)   .withSize(150, 40)   .withOffset(0, -50)   .withCharacter(0)   .withOccurence(0));   //First document   DocumentBuilder document1 = DocumentBuilder.newDocumentWithName("Cleaning Contract")   .fromFile("DOC_FILE_PATH")   .withSignature(signature1)   .withSignature(signature2);   //Build package   DocumentPackage packageToSend = packageToBuild.withSigner(signer1).withSigner(signer2).withDocument(document1).withDocument(document2).build();   //Create and send package   PackageId packageId = client.createAndSendPackage(packageToSend);   //sign all documents for sender   client.signDocuments(packageId); 

La dernière ligne de cet exemple de code signe automatiquement tous les documents pour l'expéditeur.

Cette fonction ne fonctionne pas pour les signatures par capture.

Résultats

Une fois que vous aurez exécuté votre code, connectez-vous à OneSpan Sign. Vous verrez un crochet à côté de votre expéditeur. Cela confirme que toutes les signatures de l'expéditeur ont été appliquées.

Pour télécharger l'exemple complet de code, consultez notre site Partage de code.

Cette rubrique décrit comment signer toutes les signatures d'une transaction à l'aide d'un appel unique, au lieu de parcourir successivement chaque document et de signer chaque signature de manière séquentielle.

Dans cet exemple :

  • Il y a deux destinataires dans la transaction : l'expéditeur et un client.

  • Il y a deux documents dans la transaction.

  • Les ancres de texte sont utilisées pour positionner les signatures sur les documents. Pour obtenir plus d'informations, consultez Ancres de texte.

  • L'exemple de PDF utilisé dans ce guide peut être téléchargé ici.

Le code suivant signera toutes les signatures de la transaction.

  //Package   PackageBuilder packageToBuild = PackageBuilder.NewPackageNamed("Sign Documents Test");   //Sender   SignerBuilder signer1 = SignerBuilder.NewSignerWithEmail("[email protected]")   .WithFirstName("Haris")   .WithLastName("Haidary")   .WithCustomId("Sender");   //Client   SignerBuilder signer2 = SignerBuilder.NewSignerWithEmail("[email protected]")   .WithFirstName("John")   .WithLastName("Smith")   .WithCustomId("Signer");   //Sender signature on first document   SignatureBuilder signature1 = SignatureBuilder.SignatureFor("[email protected]")   .WithPositionAnchor(TextAnchorBuilder.NewTextAnchor("Signature of the Contractor")   .AtPosition(TextAnchorPosition.TOPLEFT)   .WithSize(150, 40)   .WithOffset(0, -50)   .WithCharacter(0)   .WithOccurrence(0));   //Client signature on first document   SignatureBuilder signature2 = SignatureBuilder.SignatureFor("[email protected]")   .WithPositionAnchor(TextAnchorBuilder.NewTextAnchor("Signature of the Client")   .AtPosition(TextAnchorPosition.TOPLEFT)   .WithSize(150, 40)   .WithOffset(0, -50)   .WithCharacter(0)   .WithOccurrence(0));   //First document   DocumentBuilder document1 = DocumentBuilder.NewDocumentNamed("Cleaning Contract")   .FromFile("DOC_FILE_PATH")   .WithSignature(signature1)   .WithSignature(signature2);   //Build package   DocumentPackage packageToSend = packageToBuild.WithSigner(signer1).WithSigner(signer2).WithDocument(document1).WithDocument(document2).Build();   //Create and send package   PackageId packageId = client.CreateAndSendPackage(packageToSend);   //Sign all documents for sender   client.SignDocuments(packageId); 

La dernière ligne de cet exemple de code signe automatiquement tous les documents pour l'expéditeur.

Cette fonction ne fonctionne pas pour les signatures par capture.

Résultats

Une fois que vous aurez exécuté votre code, connectez-vous à OneSpan Sign. Vous verrez un crochet à côté de votre expéditeur. Cela confirme que toutes les signatures de l'expéditeur ont été appliquées.

Pour télécharger l'exemple complet de code, consultez notre site Partage de code.

Cette rubrique décrit comment signer toutes les signatures d'une transaction à l'aide d'un appel unique, au lieu de parcourir successivement chaque document et de signer chaque signature de manière séquentielle.

Dans cet exemple :

  • Il y a deux destinataires dans la transaction : l'expéditeur et un client.

  • Il y a deux documents dans la transaction.

  • Les ancres de texte sont utilisées pour positionner les signatures sur les documents. Pour obtenir plus d'informations, consultez Ancres de texte.

  • L'exemple de PDF utilisé dans ce guide peut être téléchargé ici.

Requête HTTP

POST /api/packages

En-têtes HTTP

Accept: application/json   
Content-Type: multipart/form-data   
Authorization: Basic api_key 

Données utiles de la demande

 -- -- --WebKitFormBoundary1bNO60n7FqP5WO4t Content - Disposition: form - data;
name = "file";
filename = "testDocumentExtraction.pdf"
Content - Type: application / pdf % PDF - 1.5 % µµµµ 1 0 obj < >>> endobj....-- -- --WebKitFormBoundary1bNO60n7FqP5WO4t Content - Disposition: form - data;
name = "payload"
"roles": [{
	"id": "Signer",
	"type": "SIGNER",
	"signers": [{
		"firstName": "John",
		"lastName": "Smith",
		"email": "[email protected]"
	}],
	"name": "Signer"
}, {
	"id": "Sender",
	"type": "SIGNER",
	"signers": [{
		"firstName": "Haris",
		"lastName": "Haidary",
		"email": "[email protected]"
	}],
	"name": "Sender"
}], "documents": [{
	"approvals": [{
		"fields": [{
			"type": "SIGNATURE",
			"extract": false,
			"extractAnchor": {
				"text": "Signature of the Client",
				"index": 0,
				"width": 150,
				"height": 40,
				"anchorPoint": "TOPLEFT",
				"characterIndex": 0,
				"leftOffset": 0,
				"topOffset": -50
			},
			"left": 0,
			"subtype": "FULLNAME",
			"top": 0
		}, {
			"value": null,
			"type": "INPUT",
			"binding": "{signer.name}",
			"extract": false,
			"extractAnchor": {
				"text": "(hereafter referred to as",
				"index": 0,
				"width": 150,
				"height": 20,
				"anchorPoint": "TOPRIGHT",
				"characterIndex": 0,
				"leftOffset": -175,
				"topOffset": -5
			},
			"left": 0,
			"subtype": "LABEL",
			"top": 0
		}, {
			"value": null,
			"type": "INPUT",
			"binding": "{approval.signed}",
			"extract": false,
			"extractAnchor": {
				"text": "Date",
				"index": 0,
				"width": 75,
				"height": 40,
				"anchorPoint": "TOPRIGHT",
				"characterIndex": 4,
				"leftOffset": 10,
				"topOffset": -30
			},
			"left": 0,
			"subtype": "LABEL",
			"top": 0
		}],
		"role": "Signer"
	}, {
		"fields": [{
			"type": "SIGNATURE",
			"extract": false,
			"extractAnchor": {
				"text": "Signature of the Contractor",
				"index": 0,
				"width": 150,
				"height": 40,
				"anchorPoint": "TOPLEFT",
				"characterIndex": 0,
				"leftOffset": 0,
				"topOffset": -50
			},
			"subtype": "FULLNAME"
		}],
		"role": "Sender"
	}],
	"id": "contract",
	"name": "Sample Contract"
}], "name": "Sign Documents Test", "type": "PACKAGE", "language": "en", "autoComplete": true, "status": "SENT"
}-- -- --WebKitFormBoundary1bNO60n7FqP5WO4t--

Pour une description complète de chaque champ, voir le tableau des données utiles de la demande ci-dessous.

Données utiles de la réponse

 {   "id": "9sKhW-h-qS9m6Ho3zRv3n2a-rkI="   } 

Une fois que vous avez envoyé votre transaction, vous effectuez une requête POST vers :

Requête HTTP

POST /api/packages/{packageId}/documents/signed_documents

En-têtes HTTP

Accept: application/json   
Content-Type: application/json   
Authorization: Basic api_key 
 {   "documents": [   {   "id": "contract",   "name": "Sample Contract"   }   ]   } 

La dernière ligne de cet exemple de code signe automatiquement tous les documents pour l'expéditeur.

Cette fonction ne fonctionne pas pour les signatures par capture.

Résultats

Une fois que vous aurez exécuté votre code, connectez-vous à OneSpan Sign. Vous verrez un crochet à côté de votre expéditeur. Cela confirme que toutes les signatures de l'expéditeur ont été appliquées.

Tableau des données utiles de la demande

PropriétéTypeModifiableRequisPar défautExemples de valeurs
statutchaîne de caractèresOuiNonÉBAUCHEÉBAUCHE / ENVOYÉ / COMPLÉTÉ / ARCHIVÉ / DÉCLINÉ / REFUSÉ / EXPIRÉ
ComplétionAutobooléenOuiNonvraivrai / faux
typechaîne de caractèresOuiNonPACKAGEPAQUET / MODÈLE / MISE EN PAGE
nomchaîne de caractèresOuiOuis.o.Exemple d'extraction d'ancres de texte API REST
languechaîne de caractèresOuiOuienen / fr / de ...
documents
nomchaîne de caractèresOuiNons.o.Exemple de contrat
approbations
rôlechaîne de caractèresOuiNons.o.client
champs
typechaîne de caractèresOuiOuis.o.SIGNATURE / ENTRÉE
extraitbooléenOuiNonfauxvrai / faux
sous-typechaîne de caractèresOuiOuis.o.NOM COMPLET / INITIALES / CAPTURE / CAPTURE_MOBILE / ÉTIQUETTE / CHAMP DE TEXTE / ZONE DE TEXTE / CASE / DATE / RADIO / LISTE
liaisonchaîne de caractèresOuiNonnulnul / {approval.signed} / {signer.title} / {signer.name} / {signer.company}
gaucheentierOuiNon00 / 10 / 20 ...
hautentierOuiNon00 / 10 / 20 ...
extractAnchor
textechaîne de caractèresOuiOuis.o.Signature du client
PointAncragechaîne de caractèresOuiOuis.o.HAUT-GAUCHE / HAUT-DROIT / BAS-GAUCHE / BAS-DROIT
indexentierOuiNon00 / 1 / 2 ...
largeurentierOuiNon200150
characterIndexentierOuiNon00
hauteurentierOuiNon5040
décalageGaucheentierOuiNon040
DécalageDroiteentierOuiNon0-10
rôles
idchaîne de caractèresOuiNons.o.client
indexentierOuiNon01 / 2 / 3 ...
nomchaîne de caractèresOuiNons.o.client
typechaîne de caractèresOuiNonSIGNERSIGNATAIRE / EXPÉDITEUR
signataires
courrielchaîne de caractèresOuiOuis.o.[email protected]
Prénomchaîne de caractèresOuiOuis.o.John
Nom de famillechaîne de caractèresOuiOuis.o.Smith
idchaîne de caractèresOuiNons.o.client

Pour télécharger l'exemple complet de code, consultez notre site Partage de code.

Cette rubrique décrit comment signer toutes les signatures d'une transaction à l'aide d'un appel unique, au lieu de parcourir successivement chaque document et de signer chaque signature de manière séquentielle.

Dans cet exemple :

  • Il y a deux destinataires dans la transaction : l'expéditeur et un client.

  • Il y a deux documents dans la transaction.

  • Les ancres de texte sont utilisées pour positionner les signatures sur les documents. Pour obtenir plus d'informations, consultez Ancres de texte.

  • L'exemple de PDF utilisé dans ce guide peut être téléchargé ici.

Après avoir envoyé votre paquet à la signature, vous devrez récupérer votre packageID. Ensuite, utilisez le code suivant pour signer toutes les signatures de la transaction :

 public void signDocuments(String packageId) 

Résultats

Une fois que vous aurez exécuté votre code, connectez-vous à OneSpan Sign. Vous verrez un crochet à côté de votre expéditeur. Cela confirme que toutes les signatures de l'expéditeur ont été appliquées.