Skip to content

3. Android Payment SDK

nitintechjini edited this page May 10, 2016 · 21 revisions

Android Payment SDK Integration

Supported os version

Android API Level 15 and above

Setup

Import UnoPayPaymentSDK1.0.0.aar module into your project: Follow below steps to import the aar file. In the Android studio Click on File->New->New Module. Now In the New Module screen select Import .JAR/.AAR Package and click Next. In the next screen locate the UnoPayPaymentSDK1.0.0.aar file and click Finish.

Downloads

You can download the Sample app and SDK aar file from here.

Build.gradle

Please add below dependencies in your app’s build.gradle

compile 'com.android.support:appcompat-v7:23.2.1'
compile 'com.android.support:recyclerview-v7:23.1.1'
compile 'com.squareup.retrofit2:retrofit:2.0.0'
compile 'com.squareup.retrofit2:converter-gson:2.0.0'
compile 'com.google.android.gms:play-services-location:8.1.0'
compile 'com.squareup.picasso:picasso:2.5.2'
compile 'com.android.support:design:23.1.1'
compile 'com.squareup.okhttp3:logging-interceptor:3.2.0'
compile project(':UnoPayPaymentSDK1.0.0')

Proguard Rules

Add the below proguard rule in you custom proguard file.(Only add this if you are building your app with proguard enabled).

-keep class com.techjini.android.paymnetlibrary.activities.**{*;}
-keep class com.techjini.android.paymnetlibrary.constants.**{*;}
-keep class com.techjini.android.paymnetlibrary.UnoPayParams{
public <methods>;
}
-keep class retrofit2.** { *; }
-keepclasseswithmembers class com.techjini.android.paymnetlibrary.network.model.response.MasterWalletResponse,**{*;}
-keepattributes *Annotation*, InnerClasses, Signature

Permission declaration.

Make sure following permission are defined in your app’s AndroidManifest.xml

<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-permission android:name="android.permission.RECEIVE_SMS"/>
<uses-permission android:name="android.permission.READ_SMS"/>

Integration

Create an object of UnoPayParams and set the parameters those are required for the transactions. Below are the parameters we need for the transaction ( * marked are mandatory).

  • * Partner Id : A unique id which UnoPay provides.
  • * Merchant SDK Key: A unique key which UnoPay provides.
  • * Order ID: The Unique Id that app should provide for their reference.
  • * App Name: Pass the Application Name to the sdk.
  • * Amount: Payable Amount.
  • Email: It is used to pre-fill the data while making the payment.
  • Mobile: User mobile number.
  • Production: set true or false. False to point to UnoPay test server and true to point to UnoPay production server.

Below is the sample code snippet for Initialization of Parameters

UnoPayParams unoPayParams = new UnoPayParams();
unoPayParams.setAmount(Double.valueOf(mAmountET.getText().toString()));
unoPayParams.setAppName("Sample App");
unoPayParams.setEmail("[email protected]");
unoPayParams.setMobileNumber(Long.parseLong(mMobileNumberET.getText().toString()));
unoPayParams.setPartnerId("b643f013cb9f3ccc9b44c0bd1ebbc669");
unoPayParams.setMerchantSdkKey("da35732a966ac2e96b99b5c640808ff0cdd4c18e");
unoPayParams.setName("Test");
unoPayParams.setOrderId(String.valueOf(System.currentTimeMillis()));
unoPayParams.setProduction(false);

Payment Initiation

After the parameters initialization you are ready to initiate the payment. To Initiate the payment call the UnoPayPayment activity from your class. Sample code snippet to initiate the payment:

Intent payUsingUnoPayIntent = new Intent(MainActivity.this, UnoPayPayment.class);

//pass the UnoPayParams object populated with required params
payUsingUnoPayIntent.putExtra(UnoPayPayment.PAYMENT_PARAMS, unoPayParams);

startActivityForResult(payUsingUnoPayIntent, 100);

###Callback from UnoPay Please note that all the payment status callbacks you will receive in onActivityResult() of your calling activity. So your Activity should call UnoPayPayment activity as given above.

Sample callbacks from UnoPay SDK

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 100) {
// The order id to payment is requested for
String orderId = data.getStringExtra("ORDER_ID");
// complete payment result
String result = data.getStringExtra("RESULT");
 }
}

Samples for SUCCESS,FAILURE and CANCELED transactions

Status codes: 
0 - SUCCESS
1 - FAILED
2 - CANCELED


For Canceled transaction : Cancelled by the user

{"status":2,"error":{"message":"User canceled the transaction","code":6}}



For Success transaction:

{"status":0,"data":{"message":"Transaction successfull","transactionId":"abc-122324345454","requestedAmount","1.0","merchantAmount","1.0"},"error":null}



For Failed transaction

{"status":1,"error":{"message":"Transaction failed due to insufficient fund","code":8}}
Clone this wiki locally