Signer le contrat ou le mandat
Retrouvez ce scénario dans notre collection Bruno
Gagnez du temps dans votre implémentation en observant l'enchaînement des appels et en récupérant les requêtes directement depuis Bruno.
Afficher le contrat à l'usager
Si le produit vendu est associé à un modèle de contrat (la propriété product.contractModel est renseignée) alors un contrat est automatiquement généré avec la vente, contrat qu'il faut signer.
Pour afficher visuellement le contrat au client, faites simplement un GET /:clientToken/sales/:saleId/contract, en retour vous récupérez le contenu raw du PDF à afficher.
curl --location 'https://.../demoapi/sales/12345/contract' \
--header 'authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJSUzI1NiJOdDmWEJwl2Zqc' \
--header 'x-user-club-id: /onfit/clubs/2325' \
--header 'x-user-network-node-id: /onfit/network_nodes/2229' \
--header 'x-gravitee-api-key: xxx-yyy-zzz'Note
Vous obtenez le contenu raw du PDF, c'est donc à voir de créer l'endpoint qui distribue ce contenu (avec les bonnes en-têtes http).
Initier le processus de signature par SMS
Le processus de signature dématérialisée passe donc par l'envoi d'un SMS au contact. Ce SMS contient un code qu'il devra utiliser pour valider la signature dans l'étape suivante.
Ce processus est le même pour le contrat ou pour le mandat :
- Si vous n'avez qu'un contrat, fournissez le
saleId(/:clientToken/sales/:id) commetargetId - Si vous n'avez qu'un mandat, fournissez le
mandateId(/:clientToken/mandate/:id) commetargetId - Si vous avez un contrat et un mandat à signer, vous pouvez signer les deux en un seul appel en renseignant les deux identifiants dans un tableau
targetIds
POST /{clientToken}/signature_requests
| paramètre | description | exemple |
|---|---|---|
contactId | Identifiant du contact sous forme d'IRI | /{clientToken}/contacts/1 |
targetId | Identifiant du mandat à signer sous forme d'IRI | /{clientToken}/mandates/373969 |
targetIds | Tableau d'identifiants (sous forme d'IRI) des pièces à signer | /{clientToken}/mandates/373969 |
Exemple
POST /{clientToken}/signature_requests
Body
{
"contactId": "/{clientToken}/contacts/1",
// "targetId": "/{clientToken}/mandates/373969"
"targetIds": [
"/{clientToken}/mandates/373969",
"/{clientToken}/sales/936973"
]
}Réponse 201 Created
{
"@context":"\/clientToken\/contexts\/SignatureRequest",
"@id":"\/clientToken\/signature_requests\/3451", // <-- identifiant du processus de signature
"@type":"SignatureRequest",
// ...
}Terminer le processus de signature
Une fois le SMS reçu l'application souhaitant orchestrer la signature devra récolter le code en provenance du contact ciblé par le mandat et terminer le processus de signature en validant ce code.
POST
/{clientToken}/signature_requests/{signatureRequestId}/transitions
| paramètre | description | exemple |
|---|---|---|
signatureRequestId | Identifiant du processus de signature créé précédemment | 3451 |
transition | Type de transition souhaitée. Les valeurs possibles sont validate ou cancel | validate |
code | Code de validation reçu par SMS | 1234 |
Exemple
POST /{clientToken}/signature_requests/3451/transitions
Body
{
"transition": "validate",
"code": "94852"
}Réponse 201 Created