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

cardinal.cca_continue is updated to not pass the hardcoded directoryServerID anymore

 cardinal.cca_continue("[TRANSACTION ID ]", "[PAYLOAD]", this, new CardinalValidateReceiver() {

});

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 older cca_continue() will function as before but moving to this new method is recommended for avoiding a scenario where if the app is killed while in background and SDK 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

...