Skip to content

payable/android-ipg-sdk

Repository files navigation

PAYable IPG SDK - Android Integration

PAYable IPG SDK - android-ipg-sdk.payable.lk | Create Issue

Build Status


Initialization

  1. Add the below repository into your project level settings.gradle or build.gradle file.
allprojects {
    repositories {
        ...
        maven { url 'https://jitpack.io' }
    }
}
  1. Add the below dependency into your module level build.gradle file.
implementation 'com.github.payable:android-ipg-sdk:1.0.5'

Implementation

1. Import PAYable IPG SDK package.

import com.payable.ipg.PAYableIPGClient;
import com.payable.ipg.model.IPGListener;
import com.payable.ipg.model.IPGPayment;
import com.payable.ipg.model.IPGStatusListener;

2. Create PAYable IPG client with PAYableIPGClient.

PAYableIPGClient ipgClient = new PAYableIPGClient(
        "YOUR_MERCHANT_KEY",
        "YOUR_MERCHANT_TOKEN",
        "YOUR_REQUEST_URL",
        "YOUR_COMPANY_LOGO",
        PAYableIPGClient.Environment.SANDBOX, // optional
        true // optional
);

3. Prepare IPGPayment to initiate the payment.

IPGPayment ipgPayment = new IPGPayment(
    amount,
    currency,
    orderDescription,
    customerFirstName,
    customerLastName,
    customerEmail,
    customerMobilePhone,
    billingAddressStreet,
    billingAddressCity,
    billingAddressCountry,
    billingAddressPostcodeZip
);

4. Call startPayment method from PAYableIPGClient to perform the payment.

ipgClient.startPayment(activity, ipgPayment, new IPGListener() {

    @Override
    public void onPaymentPageLoaded(String uid) {
        updateUI("onPaymentPageLoaded: " + uid);
    }

    @Override
    public void onPaymentStarted() {
        updateUI("onPaymentStarted");
    }
    
    @Override
    public void onPaymentCancelled() {
        updateUI("onPaymentCancelled");
    }
    
    @Override
    public void onPaymentError(String data) {
        updateUI("onPaymentError: " + data);
    }
    
    @Override
    public void onPaymentCompleted(String data) {
        updateUI("onPaymentCompleted: " + data);
    }
});

Example Usage

public class MainActivityJava extends AppCompatActivity {

    private ActivityMainJavaBinding binding;

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        binding = DataBindingUtil.setContentView(this, R.layout.activity_main_java);

        PAYableIPGClient ipgClient = new PAYableIPGClient(
                "KEY",
                "TOKEN",
                "URL",
                "LOGO",
                PAYableIPGClient.Environment.SANDBOX,
                true
        );

        IPGPayment ipgPayment = new IPGPayment(
                10.00,
                "LKR",
                "Netflix",
                "Aslam",
                "Kasun",
                "[email protected]",
                "0771234567",
                "Hill Street",
                "Dehiwala",
                "LK",
                "10350"
        );

        ipgClient.startPayment(this, ipgPayment, new IPGListener() {

            @Override
            public void onPaymentPageLoaded(String uid) {
                updateUI("onPaymentPageLoaded: " + uid);
            }

            @Override
            public void onPaymentStarted() {
                updateUI("onPaymentStarted");
            }

            @Override
            public void onPaymentCancelled() {
                updateUI("onPaymentCancelled");
            }

            @Override
            public void onPaymentError(String data) {
                updateUI("onPaymentError: " + data);
            }

            @Override
            public void onPaymentCompleted(String data) {

                updateUI("onPaymentCompleted: " + data);

                try {

                    JSONObject jsonObject = new JSONObject(data);
                    
                    ipgClient.getStatus(getApplicationContext(), jsonObject.getString("uid"), jsonObject.getString("resultIndicator"), new IPGStatusListener() {
                        @Override
                        public void onResponse(String data) {
                            updateUI("onResponse: " + data);
                        }
                    });

                } catch (JSONException ex) {
                    ex.printStackTrace();
                }
            }
        });
    }

    private void updateUI(String message) {
        binding.textViewResponse.setText(message + "\n" + binding.textViewResponse.getText().toString());
        Toast.makeText(this, message, Toast.LENGTH_SHORT).show();
    }
}

Advanced Usage

1. Pay with session uid without merchantKey and merchantToken.

ipgClient.startPayment(activity, uid, new IPGListener() {
    
    @Override
    public void onPaymentPageLoaded(String uid) {

    }

    @Override
    public void onPaymentStarted() {

    }

    @Override
    public void onPaymentCancelled() {

    }

    @Override
    public void onPaymentError(String data) {

    }

    @Override
    public void onPaymentCompleted(String data) {

    }
});

2. Check the status of the transaction using uid and resultIndicator.

ipgClient.getStatus(activity, uid, resultIndicator, new IPGStatusListener() {
    @Override
    public void onResponse(String data) {
        updateUI("onResponse: " + data);
    }
});

API Documentation

This document contains all the HTTP APIs used in this package.

ipg-mobile-api.payable.lk


Demo

PAYable IPG SDK - Android Integration