Step 1 - Update the Gradle Build Properties to Integrate Cardinal Mobile SDK
In Android Studio, open the app directory (which can also be labeled Module: app) and then open the build.gradle file. Double-check to make sure that you edit the Gradle file that is located in the app directory. Add the following contents to the Gradle file.
repositories { ... maven { url "https://cardinalcommerceprod.jfrog.io/artifactory/android" credentials { username '' // Artifactory username password '' // Artifactory API Key } } } dependencies { ... //Cardinal Mobile SDK implementation 'org.jfrog.cardinalcommerce.gradle:cardinalmobilesdk:2.2.6-1' }
If your project uses Proguard, add the following lines into proguard-rules.pro file:
-keep class com.cardinalcommerce.dependencies.internal.bouncycastle.** -keep class com.cardinalcommerce.dependencies.internal.nimbusds.**
If you do not already have a Username and API Key for the JFrog Platform, please reach out to your CardinalCommerce Solution Engineer or account manager.
Step 2 - Configure Cardinal Mobile SDK
Upon successfully completing Integration in Step 1, get the instance of the cardinal object by Cardinal.getInstance(). SDK offers multiple configuration options for you (if not specified, everything is set to default). For more details see the Configurations table further down in this article. Use the code snippets below for completing the cardinal.configure().
Java
private Cardinal cardinal = Cardinal.getInstance(); @Override protected void onCreate(Bundle savedInstanceState) { CardinalConfigurationParameters cardinalConfigurationParameters = new CardinalConfigurationParameters(); cardinalConfigurationParameters.setEnvironment(CardinalEnvironment.STAGING); cardinalConfigurationParameters.setRequestTimeout(8000); cardinalConfigurationParameters.setChallengeTimeout(5); JSONArray rType = new JSONArray(); rType.put(CardinalRenderType.OTP); rType.put(CardinalRenderType.SINGLE_SELECT); rType.put(CardinalRenderType.MULTI_SELECT); rType.put(CardinalRenderType.OOB); rType.put(CardinalRenderType.HTML); cardinalConfigurationParameters.setRenderType(rType); cardinalConfigurationParameters.setUiType(CardinalUiType.BOTH); cardinalConfigurationParameters.setLocationDataConsentGiven(true); UiCustomization yourUICustomizationObject = new UiCustomization(); cardinalConfigurationParameters.setUICustomization(yourUICustomizationObject); cardinal.configure(this,cardinalConfigurationParameters); }
Kotlin
private val cardinal: Cardinal = Cardinal.getInstance() override fun onCreate(savedInstanceState: Bundle?) { val cardinalConfigurationParameters = CardinalConfigurationParameters() cardinalConfigurationParameters.environment = CardinalEnvironment.STAGING cardinalConfigurationParameters.requestTimeout = 8000 cardinalConfigurationParameters.challengeTimeout = 5 val rTYPE = JSONArray() rTYPE.put(CardinalRenderType.OTP) rTYPE.put(CardinalRenderType.SINGLE_SELECT) rTYPE.put(CardinalRenderType.MULTI_SELECT) rTYPE.put(CardinalRenderType.OOB) rTYPE.put(CardinalRenderType.HTML) cardinalConfigurationParameters.renderType = rTYPE cardinalConfigurationParameters.uiType = CardinalUiType.BOTH cardinalConfigurationParameters.isLocationDataConsentGiven = true val yourUICustomizationObject = UiCustomization() cardinalConfigurationParameters.uiCustomization = yourUICustomizationObject cardinal.configure(this, cardinalConfigurationParameters) }
Security Guide
After you configure cardinalSession, call method getWarnings
to get the list of all the warnings for the particular device. Take further action based on the warnings found. The list of warnings can be accessed as follows:
List<Warning> warnings = cardinal.getWarnings();
See our Android Security Guidance for more details.
Available Configurations
Method | Description | Default Values | Possible Values |
---|---|---|---|
setEnvironment(CardinalEnvironment environment) | Sets the environment the SDK has to connect to |
|
|
setUiType(CardinalUiType uiType) | Sets all UI types that the device supports for displaying specific challenge user interfaces within the SDK. This setting interacts with renderType in important ways. See setRenderType(org.json.JSONArray renderType) below for more information. |
It is recommended that you use |
|
setRenderType(org.json.JSONArray renderType) | Sets render Lists all UI types that the device supports for displaying specific challenge user interfaces within the SDK. Note:
See setUiType(CardinalUiType uiType) above for more information on which uiType to use. |
|
|
setProxyAddress(java.lang.String proxyAddress) | Sets the proxy the SDK has to connect to |
| String Value |
setRequestTimeout(int requestTimeout) | Sets the maximum amount of time (milliseconds) for all exchanges | 8000 | >=0 Milliseconds (Integer) |
setChallengeTimeout(int challengeTimeout) | Sets the maximum amount of time (minutes) for challenge | 5 | >=5 minutes (Integer) |
setUICustomization(UiCustomization UI Customization) | Device Default Values | See article: Challenge User InterfaceCustomization Android | |
setEnableDFSync(boolean enableDFSync) | On setting true, onSetupCompleted in step 4, will be called after device data collected is sent to the server | true | Boolean |
setThreeDSRequestorAppURL(String threeDSRequestorAppURL) | The setThreeDSRequestorAppURL method may set the 3DS Requestor App URL. If the app sets the URL, then the SDK shall pass the URL to the server. |
| String Value |
setEnableLogging(boolean enableEventLogging) | Enable cardinal logging | true | Boolean |
setLocationDataConsentGiven() | Validates if the app has received consent to collect location data. Location data is only collected when BOTH consent and permission to use location data has been given by the end user of the app. This will be set to ‘false’ by default unless the app sets it to true after the user has granted their consent. | false | Boolean |
|
|
| Boolean |