The AES (Advanced Electronic Signature) module shows the user documents to sign, collects their consent, and captures a certificate-backed electronic signature. That digital certificate verifies their identity, making the signed document legally binding and compliant.
For an overview of this module and how it works, see Advanced Electronic Signature.
How you use this module depends on your integration pattern. In Patterns 1 and 2, you add the module to a FlowConfig in code as shown on this page. In Pattern 3, you define your modules and configuration in Dashboard as a Flow or Workflow and reference it by ID with startFlow() or startWorkflow() as shown on Run Flows Configured in Dashboard.
Add AES
Add the ID Scan, Selfie Scan, and Phone modules before AES. They can be added in any order, but all three must be present in the flow. Calling
addAESwithout these prerequisites throwsModuleConfigurationException.Add the module with
addAES()(default config) oraddAES(aes)(custom config):flowConfigBuilder.addAES() // or with a configured instance: flowConfigBuilder.addAES(aes)flowConfigBuilder.addAES(); // or with a configured instance: flowConfigBuilder.addAES(aes);
Example
The example below builds a custom AES configuration that shows the upload screen and downloads the signed PDF, adds the required ID Scan, Selfie Scan, and Phone modules ahead of it, and listens for the result through onAESCompleted().
val aes = AES.Builder()
.setUploadDocument(true)
.setDownloadDocument(true)
.build()
val flowConfig = FlowConfig.Builder()
.addID()
.addSelfieScan()
.addPhone()
.addAES(aes)
.build()
val onboardingListener = object : OnboardingListener() {
override fun onAESCompleted(aesResult: AESResult) {
// AES step finished. Process the result.
}
}
IncodeWelcome.getInstance()
.startOnboarding(activityContext, sessionConfig, flowConfig, onboardingListener)
AES aes = new AES.Builder()
.setUploadDocument(true)
.setDownloadDocument(true)
.build();
FlowConfig flowConfig = new FlowConfig.Builder()
.addID()
.addSelfieScan()
.addPhone()
.addAES(aes)
.build();
IncodeWelcome.OnboardingListener onboardingListener = new IncodeWelcome.OnboardingListener() {
@Override
public void onAESCompleted(@NonNull AESResult aesResult) {
// AES step finished. Process the result.
}
};
IncodeWelcome.getInstance()
.startOnboarding(activityContext, sessionConfig, flowConfig, onboardingListener);
Configuration Options
Configure the module with AES.Builder.
| Setting | Description |
|---|---|
setUploadDocument(Boolean) |
If true, shows the AES upload screen before the normal AES screens. Defaults to false. |
setDownloadDocument(Boolean) |
If true, downloads signed PDFs and shows the Confirmed Signature Details screen at the end of the AES flow. Defaults to false. |
For the complete option set, see AES.Builder in API Reference.
Result
AES delivers an AESResult to the onAESCompleted(AESResult) callback on the OnboardingListener. Key fields include:
documentSigning:trueif the document was signed using an advanced electronic signature.resourcesNotFound:trueif the required signing resources could not be found.- Fields inherited from
BaseResult:resultCode: TheResultCodefor this result.error: WhenResultCodeisERROR, theThrowablethat caused it; otherwise,null.deviceStats: TheDeviceStatssnapshot of the device state when the result was produced.motionStatus: Device motion assessment during capture. One of the following:UNCLEAR: Motion could not be determined; the default.PASS: Device motion was within acceptable limits.FAIL: Excessive device motion was detected.
If the step fails, the error surfaces through OnboardingListener.onError(Throwable).
For all fields, see AESResult in API Reference.