Versions Compared

Key

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


Excerpt

After the completion of the cmpi_lookup request, check the CMPI_Lookup_Response for the following fields : 

  • ThreeDSVersion = 2.X ( 2.0, 2.1, etc)
  • Enrolled = Y
  • PAResStatus = C

Upon validating the above fields, you will call cardinal.cca_continue to hand control to SDK for performing the challenge between the user and the issuing bank. Use the code snippet below for completing the cardinal.continue()


Info
title2.2.7-4 Update to cca_continue()

With the 2.2.7-4 release, we introduced a new way to display the challenge screen which will help avoid app crashes due to Android System killing the app while it is in background.

The new, overloaded ‘cca_continue()’ method takes in the following parameters:

  • String: transactionId
  • String: payload
  • CardinalChallengeObserver: challengeObserver
    • This is a new class that the App will have to instantiate in their onCreate() method and pass on the new cca_continue method.
    • The CardinalChallengeObserver takes in two parameters:
      • FragmentActivity
      • CardinalValidateReceiver: this was previously passed in the old cca_continue method directly. 

All the functionality for of the older version of cca_continue() will function as before, but moving to this new method is recommended for avoiding a in order to help avoid the scenario where if the your app is may be killed while in the background and the SDK then being unable to return control back to the app.


Code Block
languagejava
themeEmacs
titleJava
  // This version of cca_continue is available in Cardinal SDK 2.2.7-4 for Android

  public void cca_continue(String transactionId, String payload, CardinalChallengeObserver challengeObserver) throws InvalidInputException {
    ccaProcessor.cca_continue(transactionId, payload, challengeObserver);
}

// The new CardinalChallengeObserver class is required in using the new version of cca_continue shown above

 
public CardinalChallengeObserver(@NonNull FragmentActivity activity, @NonNull CardinalValidateReceiver cardinalValidateReceiver) throws InvalidInputException {
    super(activity, cardinalValidateReceiver);
}


// Put together, it would look something like this:

CardinalChallengeObserver challengeObserver;
challengeObserver = new CardinalChallengeObserver(this, new CardinalValidateReceiver() {
    @Override
    public void onValidated(Context context, ValidateResponse validateResponse, String s) {
        //your code here to handle onValidate result
    }
});




Code Block
languagejava
themeEmacs
titleJava
 /**
  * Cca continue
  *
  * @param transactionId     the transaction id
  * @param payload           the payload
  * @param currentActivity   the current activity
  * @throws InvalidInputException        the invalid input exception
  * @throws JSONException                the json exception
  * @throws UnsupportedEncodingException the unsupported encoding exception
  */
 try {
     cardinal.cca_continue("[TRANSACTION ID ]", "[PAYLOAD]", this, new CardinalValidateReceiver() {
            /**
             * This method is triggered when the transaction has been terminated. This is how SDK hands back
             * control to the merchant's application. This method will
             * include data on how the transaction attempt ended and
             * you should have your logic for reviewing the results of
             * the transaction and making decisions regarding next steps.
             * JWT will be empty if validate was not successful.
             *
             * @param validateResponse
             * @param serverJWT
             */
            @Override
            public void onValidated(Context currentContext, ValidateResponse validateResponse, String serverJWT) {

            }
        });
  }
 catch (Exception e) {
    // Handle exception
  }


Code Block
languagejava
themeEmacs
titleKotlin
collapsetrue
 /**
  * Cca continue.
  *
  * @param transactionId     the transaction id
  * @param payload           the payload
  * @param currentActivity   the current activity
  * @throws InvalidInputException        the invalid input exception
  * @throws JSONException                the json exception
  * @throws UnsupportedEncodingException the unsupported encoding exception
  */
 try {
     cardinal.cca_continue("[TRANSACTION ID ]", "[PAYLOAD]", this, object: CardinalValidateReceiver {
            /**
             * This method is triggered when the transaction has been terminated.This is how SDK hands back
             * control to the merchant's application. This method will
             * include data on how the transaction attempt ended and
             * you should have your logic for reviewing the results of
             * the transaction and making decisions regarding next steps.
             * JWT will be empty if validate was not successful.
             *
             * @param validateResponse
             * @param serverJWT
             */
            override fun onValidated(currentContext: Context?, validateResponse: ValidateResponse, serverJWT: String?) {

            }
        });
  }
 catch (e: Exception) {
    // Handle exception
  }


Insert excerpt
Handling the onValidated - Android
Handling the onValidated - Android
nopaneltrue

...