SDK Integration
Developer option:
Most of the code examples in this document are editable.
Click [ Reset ] in the lower-right corner of an example to restore its original code.
Integrating the SDK
Follow these steps to perform a Example Android SDK integration using the Android Studio IDE.
- Important note:
- The following integration process is built using the Android Studio IDE.
- Download it here: Google Android Studio
Android Studio prerequisites
The following items are needed when integrating the SDK using Android Studio.
- Android OS: Android 4.1 (minimum)
- The Example Android SDK supports Android 4.1 "Jelly Bean" - API level 16 (minimum supported version) and above.
-
For further reference, see:
- Android operating systems support in the SDK's Getting Started page
- Android Codenames, Tags, and Build Numbers
- Android OS packages
- The Example Android SDK needs the following Android OS package: Location Services .
- Gradle
- Gradle is used to build the SDK and its dependencies.
- Further reference: Google Android Studio: Gradle
Example SDK dependencies
The Example Android SDK depends on:
Step-by-Step
Step 1. Add and reference the following libraries in your application.
- Android support libraries
-
- support-v4
- appcompat-v7
- recyclerview-v7
- design
- Note: For detailed setup instructions please see: Android Support Library Setup
- Google Play Services library
- Note: For detailed setup instructions please see: Setting Up Google Play Services
Step 2. Make a direct reference in your application's build.gradle for the following libraries:
compile 'com.android.support:design:23.0.1'
compile 'com.android.support:cardview-v7:23.2.1'
compile 'uk.co.chrisjenx:calligraphy:2.1.0'
Step 3. Add the following Android permissions and entries to your AndroidManifest.xml file:
<!-- Example utilizes the follow permissions -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_GPS" />
Step 4. Add the following metadata elements to the "Application" node of your AndroidManifest.xml file.
- For this release: In the following code examples, replace all editable items with appropriate values:
-
API Key:
Use this API Key only for initial development purposes.
It will be replaced at a date prior to launch:
Game ID:android:value="82bbe614adada4be6df2e970d26b235f716275d5a04ea5e1ab052e3b96d613c1"
Populate this field with a unique value of your choosing for your Game ID.
We recommend a game id value like: "com.mygame.game1".
App ID:android:value="com.mygame.game1"
Populate this field with a unique value of your choosing for your App ID.
We recommend an app id value like: "com.myapp.app1".android:value="com.myapp.app1"
-
For example, after editing and replacement it should now say this:
<!-- Required to authenticate with our technologies --> <meta-data android:name="api_key" android:value="82bbe614adada4be6df2e970d26b235f716275d5a04ea5e1ab052e3b96d613c1" /> <meta-data android:name="game_id" android:value="com.mygame.game1" /> <meta-data android:name="app_id" android:value="com.myapp.app1" />
Important: Please note that you will be assigned a permanent "api_key" value prior to launch.
Step 5. Add and reference the Example Android SDK AAR Library into your application.
- Download the SDK's Android Archive Library
- Go to the AAR Library page (also found in the navigation bar at the top of each page) and download the Example SDK Android Archive Library (.aar).
- Using the File menu
-
- Select New > New Module.
- In the window that appears, select "Import .JAR/.AAR Package".
- In the File name: field, select the most recent Example SDK AAR file from your computer and set Subproject name to your liking. References in the documentation will refer to this link as "Example-sdk".
- A new module will be generated for your project.
Important note: The wizard should, but may not link the SDK with your application automatically, so
- Return to the File menu:
-
- Select Project Structure...
- In the window that appears, select your application module on the left.
- Select Dependencies on the tabs at the top-right.
- If you do not see the SDK listed, click the green plus icon to the right [ + ] and add a Module dependency. Any unreferenced modules should appear in the next window.
- Select the SDK and click OK.
Integrating the SDK
Initialize the Example Android SDK in your Java application class.
Prerequisite: Your application's manifest must have your identifier-defined metadata.
...
import com.Example.android.Example;
...
public class YourActivity extends Activity {
String extUserId = “SomeUserIdentifier”;
private Example exampleSdk;
@Override
public void onCreate() {
super.onCreate();
// initialize Example SDK
exampleSdk = Example.init(this, extUserId);
}
...
@Override
public void onStart() {
super.onStart();
// Ensure SDK is valid
exampleSdk.verifyMarketAuthorization();
}
...
@Override
public void onResume() {
super.onResume();
// Pass Example SDK resume notifications
exampleSdk.onResume();
}
...
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// Pass Example SDK activity results
exampleSdk.onActivityResult(requestCode, resultCode, data);
super.onActivityResult(requestCode, resultCode, data);
}
}
Handling deposits
You can pass in a callback to generally define how deposit events will be handled.
Note: A casino can use any string for the "extCasinoPaymentgatewayID".
exampleSdk.setDepositListener(new Example.DepositListener() {
@Override
public void onExampleDepositSuccess(String extCasinoPaymentGatewayID, double deposit) {
// TODO: Handle success
}
@Override
public void onExampleDepositFail(String extCasinoPaymentGatewayID) {
// TODO: Handle failure
}
@Override
public void onExampleDepositCancel(String extCasinoPaymentGatewayID) {
// TODO: Handle cancel
}
});
Requesting funds
Default funds request
Note: A casino can use any string for the "extCasinoPaymentgatewayID".
Begin a deposit by using the "Example.DepositRequestContainer" builder to define your transaction's parameters. Once complete, call the "Example.deposit(<container>)" to start an in-app payment form and make a deposit. This default request relies heavily on server configuration defined in the Developer Portal, including preset amounts, customer limits, and deposit limits.
...
Example.DepositRequestContainer container = new Example.DepositRequestContainer()
.withExtCasinoPaymentGatewayID(<extCasinoPaymentGatewayID>)
.withExtCasinoTransId(<extTransID>)
.withExtCasinoUserId(<extCasinoUserID>)
.withExtCasinoUserStatus("NEW")
;
Example.deposit(container);
Extended request: Provide preset amounts and customer input disabling
Note: A casino can use any string for the "extCasinoPaymentgatewayID".
This extended request overrides server configurations defined in the Developer Portal, providing preset amounts and customer input disabling. The presets define their own values and currency (required) and provide an option to define a unique identifier (optional). Using this deposit call, the user would only have access to the defined preset values.
...
import com.Example.sdk.model.Amount;
...
ArrayList<Amount> amountList = new ArrayList<Amount>(){{
add(new Amount(){{
setId("5");
setAmountValue("5");
setAmountCurrency(Amount.CURRENCY_GBP);
}});
add(new Amount(){{
setId("10");
setAmountValue("10");
setAmountCurrency(Amount.CURRENCY_GBP);
}});
add(new Amount(){{
setId("15");
setAmountValue("15");
setAmountCurrency(Amount.CURRENCY_GBP);
}});
add(new Amount(){{
setId("20");
setAmountValue("20");
setAmountCurrency(Amount.CURRENCY_GBP);
}});
}};
Example.DepositRequestContainer container = new Example.DepositRequestContainer()
.withExtCasinoPaymentGatewayID(<extCasinoPaymentGatewayID>)
.withExtCasinoTransId(<extTransID>)
.withExtCasinoUserId(<extCasinoUserID>)
.withExtCasinoUserStatus("NEW")
.isCustomAmountAllowed(false) // disable user input of amount (presets only)
.withCustomPresetAmountList(amountList) // define the preset buttons
;
Example.deposit(container);
Extended request: Provide preset amounts and customer limitations
Note: A casino can use any string for the "extCasinoPaymentgatewayID".
This extended request overrides server configurations defined in the Developer Portal, providing preset amounts and customer limitations. In this instance, the user will be allowed to enter any amount but will not be allowed to continue if it is outside the boundaries defined in the parameters passed.
...
import com.Example.sdk.model.Amount;
...
ArrayList<Amount> amountList = new ArrayList<Amount>(){{
add(new Amount(){{
setId("5");
setAmountValue("5");
setAmountCurrency(Amount.CURRENCY_GBP);
}});
add(new Amount(){{
setId("10");
setAmountValue("10");
setAmountCurrency(Amount.CURRENCY_GBP);
}});
add(new Amount(){{
setId("15");
setAmountValue("15");
setAmountCurrency(Amount.CURRENCY_GBP);
}});
add(new Amount(){{
setId("20");
setAmountValue("20");
setAmountCurrency(Amount.CURRENCY_GBP);
}});
}};
Example.DepositRequestContainer container = new Example.DepositRequestContainer()
.withExtCasinoPaymentGatewayID(<extCasinoPaymentGatewayID>)
.withExtCasinoTransId(<extTransID>)
.withExtCasinoUserId(<extCasinoUserID>)
.withExtCasinoUserStatus("NEW")
.withCustomPresetAmountList(amountList) // define the preset buttons
.withMaximumDepositValue(300d) // set maximum deposit is 300
.withMinimumDepositValue(10d) // set minimum deposit is 10
.isUserLimited(true) // enforce restrictions for user limits
;
Example.deposit(container);