Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Section

The biometric signature story Image Modified

Alice and Frank want to buy a new car. So they are going to the local car dealer to look and check the models to buy one. The car dealer is using eSignAnywhere for digital signing. To record biometric signatures on the point-of-sales (POS), a native app (e.g. SIGNificant App or SignAnyWhere App on iOS, Android or Windows ) is required on the tablet device. 

You find a list of available stories here. Please also see the developer mode for this tutorial here: Visit the developer mode.

Biometric Signature StoryImage Modified

Use Case Description

  1. The contract is prepared via salesman on his computer. He enters the data, discount, payment methods and additional data
  2. The salesman opens the contract on the tablet pc via
    1. Option (1): Email – an email with the link to the document is sent to the tablet. The salesman clicks on the link to open the document in the SIGnificant app for signing.
    2. Option (2): QR Code – a QR code is shown on the computer of the salesman and scans it via tablet to open the document in the SIGNificant app
    3. Option (3): a company notification system is used to push the link for the document directly to the tablet
  3. Alice and Frank are signing in the native app on the tablet (in this example via biometric signature)
  4. The document is finished and synchronized with the server (via salesman)
  5. The computer of the salesman shows the finished document and Frank receives a copy of the contract via Email. Optionally the salesman can now print a carbon copy for Alice and Frank


...

Section

Integration

The integration of this use case requires eSignAnywhere and the SIGNificant App on the tablet. Due the integration of the native App, this integration is a little bit different from eSignAnywhere-only integrations.

The creation of the workflow is similar, except that in one step (so one recipient) two persons are signing at once (“hosted meeting”). This is done via the use of the native SIGNificant App. Therefore no authentication is required. Moreover, this scenario is perfect for biometric signatures (advanced electronic signatures) and due the biometric signatures it doesn’t require any authentication.

To bring the document to the tablet there are some options available:

  1. Email: a email is sent to the tablet and opened by the salesman. The email contains a link, which opens automatically the app and the document for signing.
  2. QR Code: on the computer of the salesman is a QR code shown, after the creation of the workflow. The salesman is opening the SIGNificant App and scans the QR code. The app opens automatically the document for signing. In this option there is no email sent in the first signing step.
  3. Custom Notification: a custom notification is used to push the link to the tablet. In that case an even deeper integration (via SIGNificant App SDK) can be used. This means on the tablet is specific car dealership app installed, which has integrated the SIGNificant App SDK for signing. This specific car dealership has integrated the notification service and gets the information for signing task and automatically opens the document for signing.

This example shows two integration for option 1 (Email) and option 2 (QR Code).

Example with Option (1) Email

The workflow is the following:

Endpoint (URI) for REST: https://demo.esignanywhere.net/Api

Endpoint for SOAP: https://demo.esignanywhere.net/api.asmx?WSDL

  1. Create the PDF based on the data provided by the salesman in the car dealerships CRM
  2. Upload the PDF to eSignAnywhere
  3. Prepare the envelope and set CC recipient
  4. Send Envelope
  5. Open the tablets email inbox and click on the link of the eSignAnywhere email
  6. Frank and Alice are signing & finishing the document in the App
  7. Frank recieves and copy of the document via Email
  8. The callback is used to update the car dealerships CRM

...

<envelope> <name>Car Contract for Frank and Alice</name> <eMailSubject>Car Contract for Frank and Alic</eMailSubject> <eMailBody>Dear #RecipientFirstName#! Please sign this car contract document.</eMailBody> <enableReminders>True</enableReminders> <firstReminderDayAmount>1</firstReminderDayAmount> <recurrentReminderDayAmount>1</recurrentReminderDayAmount> <beforeExpirationReminderDayAmount>1</beforeExpirationReminderDayAmount> <daysUntilExpire>2</daysUntilExpire> <!-- callback to your backend system on a completed envelope<callbackUrl>http://172.16.17.78:57550/default.aspx?EnvelopeId=##EnvelopeId##&myParamForMe=1234</callbackUrl> --> <callbackUrl /> <steps> <step> <emailBodyExtra /> <orderIndex>1</orderIndex> <recipientType>Signer</recipientType> <recipients> <recipient> <languageCode>en</languageCode> <eMail>alice@xyzmo.com</eMail> <firstName>Sales_Tablet_01</firstName> <lastName>Salesman</lastName> <addAndroidAppLink>1</addAndroidAppLink> <addIosAppLink>1</addIosAppLink> <addWindowsAppLink>1</addWindowsAppLink> </recipient> </recipients> <workstepConfiguration> <WorkstepLabel /> <SmallTextZoomFactorPercent>100</SmallTextZoomFactorPercent> <WorkstepTimeToLiveInMinutes>11520</WorkstepTimeToLiveInMinutes> <FinishAction /> <signatureTemplate> <version>1.2.0.2</version> <positionUnits>PdfUnits</positionUnits> <positionReferenceCorner>Lower_Left</positionReferenceCorner> <sig id="93cce567-ae5c-4e98-ac99-9f56ac034250"> <positionPage>1</positionPage> <DocRefNumber>1</DocRefNumber> <positionX>79.54285</positionX> <positionY>352.32</positionY> <width>133.7143</width> <height>68.57143</height> <param name="enabled">1</param> <param name="completed">0</param> <param name="sigType">BiometricSignature</param> <param name="positioning">onPage</param> </sig> <sig id="13cce567-ae5c-4e98-ac99-9f56ac034250"> <positionPage>1</positionPage> <DocRefNumber>1</DocRefNumber> <positionX>229.7143</positionX> <positionY>352.32</positionY> <width>133.7143</width> <height>68.57143</height> <param name="enabled">1</param> <param name="completed">0</param> <param name="sigType">BiometricSignature</param> <param name="positioning">onPage</param> </sig> </signatureTemplate> <Policy version="1.1.0.0"> <GeneralPolicies> <AllowSaveDocument>0</AllowSaveDocument> <AllowSaveAuditTrail>0</AllowSaveAuditTrail> </GeneralPolicies> <WorkstepTasks SequenceMode="SequenceOnlyRequiredTasks" originalSequenceMode="SequenceOnlyRequiredTasks"> <Task enabled="1" completed="0" required="1" id="93cce567-ae5c-4e98-ac99-9f56ac034250" displayName="Frank" DocRefNumber="1" type="SignField" internalAllConcernedDocRefNumbersList="1" allRequiredFieldsFilledOnWorkstepCreation="0" /> <Task enabled="1" completed="0" required="1" id="13cce567-ae5c-4e98-ac99-9f56ac034250" displayName="Alice" DocRefNumber="1" type="SignField" internalAllConcernedDocRefNumbersList="1" allRequiredFieldsFilledOnWorkstepCreation="0" /> </WorkstepTasks> </Policy> <TransactionCodeConfigurations> <TransactionCodeConfiguration trConfId=""> <Message>Please sign the document with the transactionId {tId} with the code: {Token}</Message> <hashAlgorithmIdentifier>Sha256</hashAlgorithmIdentifier> </TransactionCodeConfiguration> <TransactionCodeConfiguration trConfId="Trans1"> <Message>Please accept the transactionId {tId} with the code: {Token}</Message> <hashAlgorithmIdentifier>Sha256</hashAlgorithmIdentifier> </TransactionCodeConfiguration> </TransactionCodeConfigurations> </workstepConfiguration> </step> <step> <emailBodyExtra /> <orderIndex>2</orderIndex> <recipientType>CC</recipientType> <recipients> <recipient> <languageCode>en</languageCode> <eMail>charly@xyzmo.com</eMail> <firstName>Charly</firstName> <lastName>Randomname</lastName> </recipient> </recipients> </step> </steps> </envelope>
        }
            }
        }
    ]
}
Code Block
languagejava
themeEclipse
 {
    "SspFileIdsDocuments": [{
    "f44e8baf-7a33-42a1-9459-74a8d70976ce"
   ],
  "SendEnvelopeDescription": {
  "NameFileId": "testc30dbbfc-1234-1234-ae0f-55ee351d9452",
   "EmailSubject": "Please sign the enclosed envelope",
         "EmailBodyDocumentNumber": "Dear #RecipientFirstName# #RecipientLastName#\n\n#PersonalMessage#\n\nPlease sign the envelope #EnvelopeName#\n\nEnvelope will expire at #ExpirationDate#",
  "DisplayedEmailSender1
        }
    ],
    "Name": "Test",
    "EnableRemindersActivities": true,[{
  "FirstReminderDayAmount": 5,
    "RecurrentReminderDayAmount": 3,
  "BeforeExpirationDayAmount": 3,
  "DaysUntilExpireAction": 28,{
   "CallbackUrl": "",
  "StatusUpdateCallbackUrl": "",
          "StepsSign": [{
       {
      "OrderIndex": 1,
      "RecipientsRecipientConfiguration": [
{
              {
          "EmailIncludedEmailAppLinks": "##EMAIL##",
{
                 "FirstName": "##NAME##",
          "LastNameAndroid": "##NAME##"true,
          "LanguageCode": "en",
          "EmailBodyExtra       "iOS": ""true,
              "DisableEmail": false,
              "AddAndroidAppLinkWindows": true,
            "AddIosAppLink": true,
          "AddWindowsAppLink": true},
            "AllowDelegation": true,
            "SkipExternalDataValidationContactInformation": false,{
          "AuthenticationMethods": []
        }
      ],
      "EmailBodyExtraEmail": "janedoe@sample.com",
      "RecipientType": "Signer",
             "WorkstepConfiguration": {
        "WorkstepLabelGivenName": "testJane",
        "SmallTextZoomFactorPercent": 100,
        "FinishAction": {
          "ServerActionsSurname": []"Doe",
          "ClientActions": [
            {
     "LanguageCode": "EN"
        "RemoveDocumentFromRecentDocumentList": false,
              "CallClientActionOnlyAfterSuccessfulSync": true, }
              "ClientName": "SIGNificant SignAnywhere"     },
                    "CloseAppElements": false,{
                 "Action": "https://www.esignanywhere.net/"
       "Signatures": [{
      }
          ]
        },
        "ReceiverInformationTaskConfiguration": {
          "UserInformation": {
            "FirstName": "##NAME##",
            "LastNameOrderDefinition": "##NAME##",{
            "EMail": "##EMAIL##"
          },
            "TransactionCodePushPluginData": []
        },
        "SenderInformationOrderIndex": {0
          "UserInformation": {
            "FirstName": "##NAME##",
            "LastName": "##NAME##", }
            "EMail": "##EMAIL##"
            }
        },
        "TransactionCodeConfigurations": [
          {
             "IdElementId": "smsAuthTransactionCodeIdsample sig biometric",
            "HashAlgorithmIdentifier": "Sha256",
            "Texts": [
      "Required": true,
       
            ]
          }
   "DocumentNumber": 1,
    ],
        "SignatureConfigurations": [],
        "ViewerPreferences": {
          "FinishWorkstepOnOpenDisplayName": "Sign falsehere",
            "VisibleAreaOptions": {
            "AllowedDomain": "*",
          "AllowedSignatureTypes": {
         "Enabled": false
          }
        },
        "ResourceUrisBiometric": {
            "DelegationUri": "https://demo.xyzmo.com/Resource/Delegate"
        },
        "AuditingToolsConfiguration": {
          "WriteAuditTrailBiometricVerification": false,
          "NotificationConfiguration": {}
           },
        "Policy": {
          "GeneralPoliciesAllowBiometricStoringOnly": {false,
              "AllowSaveDocument": true,
            "AllowSaveAuditTrail": true,
            "AllowRotatingPagesStoreSignedResponseWithoutBioData": falsetrue,
              "AllowEmailDocument": true,
            "AllowPrintDocument": true,
            "AllowFinishWorkstepAllowSkipBiometricVerification": truefalse,
              "AllowRejectWorkstep": true,
            "AllowRejectWorkstepDelegation": true,
            "AllowUndoLastActionBiometricServerUserId": true"string",
            "AllowAdhocPdfAttachments": false,
            "AllowAdhocSignatures": false,
              "AllowAdhocStampingsSignaturePositioning": false"WithinField",
              "AllowAdhocFreeHandAnnotations": false,
            "AllowAdhocTypewriterAnnotations": false,
            "AllowAdhocPictureAnnotationsPreferred": falsetrue,
            "AllowAdhocPdfPageAppending": false
          },
          "WorkstepTasks": {
      "StampImprintConfiguration": {
     "PictureAnnotationMinResolution": 0,
            "PictureAnnotationMaxResolution": 0,
            "PictureAnnotationColorDepth": "Color16M",
            "SequenceModeDisplayExtraInformation": "NoSequenceEnforced"true,
            "PositionUnits": "PdfUnits",
                   "ReferenceCorner": "Lower_Left",
            "TasksDisplayEmail": [true,
              {
                "PositionPage": 1,
                "PositionDisplayTransactionId": {true,
                  "PositionX": 69.0,
                  "PositionY": 602.0
      "DisplayTransactionToken": true,
         },
                "Size": {
                  "HeightDisplayPhoneNumber": 80.0true,
                  "Width": 191.0
                },
         "UseCustomStampImprint": true,
      "AdditionalParameters": [
                  {
                    "KeyDisplayIp": "enabled"true,
                       "Value": "1"
                     "DisplayName": }true,
                     {
                       "KeyDisplaySignatureDate": "positioning"true,
                    "Value": "intersectsWithField"
                  },
     "FontName": "string",
                        {
                    "KeyFontSizeInPt": "req",0
                     "Value": "1"
                  },
                    {
                }
       "Key": "fd",
                    "Value": ""
   },
               },
                 "FieldDefinition": {
                     "Key": "fd_dateformat",
              "Position": {
     "Value": "dd-MM-yyyy HH:mm:ss"
                  },
                  {"PageNumber": 1,
                    "Key": "fd_timezone",
                    "ValueX": "datetimeutc"100,
                  }
                ],
      "Y": 200
         "AllowedSignatureTypes": [
                  {
        },
               "IsBio": false,
                    "AllowSkipBiometricVerificationSize": false,{
                    "AllowBiometricStoringOnly": false,
                    "SignedResponseWithoutBioDataWidth": false100,
                    "Id": "2773bf43-9d34-4f57-87a0-a5cb894b2efe",
                    "DiscriminatorTypeHeight": "SigTypeBiometricSignature",
70
                      "Preferred": false,
              }
        "StampImprintConfiguration": {
                      "DisplayExtraInformation": true, }
                      "DisplayEmail": true,
      }
                    "DisplayIp": true,
   ]
                   "DisplayName": true},
                      "DisplaySignatureDateSigningGroup": true,"firstSigner"
                }
         "FontFamily": "Times New Roman",}
        },  {
            "FontSizeAction": 11.0{
                "SendCopy": {
   }
                 "RecipientConfiguration": }{
                ],
        "ContactInformation": {
        "UseTimestamp": false,
                    "IsRequiredEmail": true"janedoe@sample.com",
                "Id": "1#XyzmoDuplicateIdSeperator#Signature_ddb22c14-8b00-457b-7888-f21f21f052c3",
                "DisplayNameGivenName": "John",
                "DocRefNumber": 1,
                "DiscriminatorTypeSurname": "SignatureDoe",
              },
               {"LanguageCode": "EN"
                "PositionPage": 1,
                "Position": {
                  "PositionX": 282.0,
                  "PositionY": 600.0
}
                    },
                "Size": {
                  "Height": 80.0,
                  "Width": 191.0
                },
                "AdditionalParameters": [
                  {
                    "Key": "enabled",
                    "Value": "1"
                  },
                  {
                    "Key": "positioning",
                    "Value": "intersectsWithField"
                  },
                  {
                    "Key": "req",
                    "Value": "1"
                  },
                  {
                    "Key": "fd",
                    "Value": ""
                  },
                  {
                    "Key": "fd_dateformat",
                    "Value": "dd-MM-yyyy HH:mm:ss"
                  },
                  {
                    "Key": "fd_timezone",
                    "Value": "datetimeutc"
                  }
                ],
                "AllowedSignatureTypes": [
                  {
                    "IsBio": false,
                    "AllowSkipBiometricVerification": false,
                    "AllowBiometricStoringOnly": false,
                    "SignedResponseWithoutBioData": false,
                    "Id": "2d0adb08-98d3-417c-867b-0533a91344b9",
                    "DiscriminatorType": "SigTypeBiometricSignature",
                    "Preferred": false,
                    "StampImprintConfiguration": {
                      "DisplayExtraInformation": true,
                      "DisplayEmail": true,
                      "DisplayIp": true,
                      "DisplayName": true,
                      "DisplaySignatureDate": true,
                      "FontFamily": "Times New Roman",
                      "FontSize": 11.0
                    }
                  }
                ],
                "UseTimestamp": false,
                "IsRequired": true,
                "Id": "1#XyzmoDuplicateIdSeperator#Signature_2044bd82-d9a6-913f-face-c66e4dd8baec",
                "DisplayName": "",
                "DocRefNumber": 1,
                "DiscriminatorType": "Signature"
              }
            ]
          }
        }
      },
      "DocumentOptions": [
        {
          "DocumentReference": "1",
          "IsHidden": false
        }
      ],
      "UseDefaultAgreements": true
    },
    {
      "OrderIndex": 2,
      "Recipients": [
        {
          "Email": "##EMAIL##",
          "FirstName": "##NAME##",
          "LastName": "##NAME##",
          "LanguageCode": "en",
          "EmailBodyExtra": "",
          "DisableEmail": false,
          "AddAndroidAppLink": false,
          "AddIosAppLink": false,
          "AddWindowsAppLink": false,
          "AllowDelegation": false,
          "SkipExternalDataValidation": false,
          "AuthenticationMethods": []
        }
      ],
      "EmailBodyExtra": "",
      "RecipientType": "Cc",
      "DocumentOptions": [],
      "UseDefaultAgreements": false
    }
  ],
  "AddFormFields": {
    "Forms": {}
  },
  "OverrideFormFieldValues": {
    "Forms": {}
  },
  "AttachSignedDocumentsToEnvelopeLog": false
}
}
Expand
titleAlternative: SOAP implementation (deprecated)
Code Block
languagexml
themeEclipse


Section

Example with Option (2) QR Code

Workflow:

  1. Create the PDF based on the data provided by the salesman in the car dealerships CRM
  2. Upload the PDF to eSignAnywhere
  3. Prepare the envelope and set CC recipient
  4. Send Envelope (with disableEmail=true for first recipient)
  5. The returned envelopeID is used to call GetEnvelopeById to retrieve the envelope status. The first recipient contains the workstepRedirectionURL for the signing taskused to call https://demo.esignanywhere.net/api/v6/envelope/{envelopeId}/viewerlinks to retrieve the redirectionURL. This URL forwards to a HTTP forward to the SignAnywhere Viewer (Web-Client), but we need the workstepId for the App. Therefore you have to add to the WorkstepRedirectionUrl an addional parameter to get it directly (&responseType=returnWorkstepId).
  6. The car dealership CRM shows the QR Code for the signing task. The salesman scans the QR Code from the display via SIGNificant App to open the document
  7. Frank and Alice are signing & finishing the document in the App
  8. Frank recieves and copy of the document via Email
  9. The callback is used to update the car dealerships CRM

Retrieve WorkstepID and generate the QR Code

The first recipient in this example is the tablet. The SIGNificant App requires the workstepId for signing the document. After you created the envelope (SendEnvelope) you do the following:

  1. Call GetEnvelopeByID(envelopeId) https://demo.esignanywhere.net/api/v6/envelope/{envelopeId}/viewerlinks to retrieve the status of the enveloperedirectionURL.
  2. The response contains the workstepRedirectionUrl in envelopeStatus > bulkRecipients > bulkRecipient > recipients > recipient >workstepRedirectionUrl. This URL is the link to the SignAnywhere Viewer (Web-Client), which forwards to the eSAW redirector and delivers a link with a workstepId parameter. With the additional parameter&responseType=returnWorkstepId you directly receive the workstepId:

    "https://demo.

    xyzmo

    esignanywhere.

    com

    net/workstepredirector/sign?identifier=

    8WNDxmUVr5V

    1234~E8/

    aV1AAN49xjKuVsHMQEIQVuM/ktLNw1jOfWgaovF2mDg3uW9JJbp5Q/k7Yz92eoo

    79lYvRIwR4wI41234hbX6NHKhxuKv~jjIsG4trySqTsn12345JuSJm/NJo8Mmii7G~1234==&responseType=returnWorkstepId

  3. Extract the workstepID from the response.
  4. Prepare Data for QR Code: the QR Code contains a link to the server and the workstepId (Signing-Task). So you have to use the extraced workstepId to build a link (replace ##WORKSTEPID##):
    http://launch.xyzmo.com/SignificantAndroidAppLauncher.aspx?WorkstepId=##WORKSTEPID##&server=demo.xyzmoesignanywhere.comnet/WSCProcess&protocol=https
  5. Generate a QR Code with that link (e.g. with a proper QR Code library, as example you may use a offline QR Code Generator [https://sites.google.com/site/qrcodeforwn/home/qr-code-generator-for-wireless-networks]).
  6. Show the QR Code and scan it with the SIGNificant App (Button lower left above settings  symbol)

...