Trigger provisioning
Last updated
Was this helpful?
Was this helpful?
public class MyEnrollingServiceListener implements EnrollingServiceListener {
// Receive from MGDigitizationListener.onCPSActivationCodeAcquired(...)
private final byte[] activationCode;
public MyEnrollingServiceListener(final byte[] activationCode) {
this.activationCode = activationCode;
}
@Override
public void onStarted() {
// Called when the enrollment flow starts.
}
@Override
public void onCodeRequired(final CHCodeVerifier chCodeVerifier) {
// Called when the activation code is required to continue the flow.
final SecureCodeInputer inputer = chCodeVerifier.getSecureCodeInputer();
for (final byte b : activationCode) {
inputer.input(b);
}
inputer.finish();
}
@Override
public void onComplete() {
// Called once the device enrollment completes successfully.
// In a Green flow, this usually means provisioning is complete.
}
@Override
public void onError(final ProvisioningServiceError error) {
// Called when device enrollment fails.
// Parse error.getCode() and apply the right retry / recovery logic.
}
}byte[] activationCode = ...; // from MGDigitizationListener.onCPSActivationCodeAcquired(...)
String pushToken = "..."; // from FCM or HMS Push Kit
String language = "en"; // Use your app locale when possible.
// Wallet ID is the user identifier for device enrollment.
String walletId = MobileGatewayManager.INSTANCE.getCardEnrollmentService().getWalletId();
EnrollingServiceListener enrollingListener = new MyEnrollingServiceListener(activationCode);
final EnrollingBusinessService enrollingService = ProvisioningServiceManager.getEnrollingBusinessService();
final ProvisioningBusinessService provisioningBusinessService = ProvisioningServiceManager.getProvisioningBusinessService();
// Check enrollment status.
final EnrollmentStatus status = enrollingService.isEnrolled();
switch (status) {
case ENROLLMENT_NEEDED:
// First device enrollment attempt on this wallet instance.
enrollingService.enroll(walletId, pushToken, language, enrollingListener);
break;
case ENROLLMENT_IN_PROGRESS:
// Enrollment was started earlier and must be resumed.
enrollingService.continueEnrollment(language, enrollingListener);
break;
case ENROLLMENT_COMPLETE:
// Device enrollment is already completed.
// Trigger provisioning for this card.
// The SDK requests the activation code via enrollingListener.onCodeRequired(...).
provisioningBusinessService.sendActivationCode(enrollingListener);
break;
default:
// Log error (unknown status).
}