Android SDK

Legacy SDK, not recommended for new integrations. Integrate PayMe into your Android app with the PayMe Android SDK: build and import the AAR, initialize the SDK, and make sale, subscription, buyer and reporting requests.

Legacy SDK. This SDK is no longer recommended for new integrations. It isn't actively updated, it requires your app to collect card details, and it puts your seller_payme_id (MPL), a server-side credential, in the app. For new apps, open the Hosted Payment Page in a secure in-app browser (Custom Tabs on Android), so card details never pass through your app. You can also offer Apple Pay and Google Pay.

How to: Accept payments in a mobile app.

To get the SDK, ask PayMe Partners (partners@payme.io) for access.

Getting started

Build the AAR from sources

  1. Open the SDK project and build it.
  2. The new AAR is generated automatically at library/build/outputs/library-release.aar.
  3. Rename the file to isracard-global-##.aar, where ## is the version.

Import the SDK with Gradle

  1. Copy isracard-global-##.aar into your project's libs folder.
  2. Add the folder to the repositories in build.gradle, and add the SDK to the dependencies:
repositories {
    flatDir {
        dirs 'libs'
    }
}

dependencies {
    implementation(name:'isracard-global-1.0', ext:'aar')
}

Initialize the SDK

Extend your Application and initialize the SDK:

package com.paymeservice.example;

import android.app.Application;

import com.paymeservice.android.PayMe;
import com.paymeservice.android.model.Settings;
import static com.paymeservice.android.model.Settings.Environment.STAGING;

public class PayMeApplication extends Application {
    @Override
    public void onCreate() {
        super.onCreate();
        // Setting the Android SDK
        PayMe.initialize(new Settings(/* Your seller_payme_id */, STAGING));
    }
}

Settings.Environment sets the environment. The sample uses STAGING; ask PayMe Partners for the value to use in production.

Integrate with the PayMe API

Each API request needs the matching request object and a TransactionListener.

Create sales and read reports from your server, never from the app: generateSale, getFinancialTransactions, getSales, getStatistics and getGraphPoinsts (the SDK's spelling) run with your MPL. In the app, use only the calls that take the buyer's card: paySale, paySubscription and captureBuyer.

Generate a sale

Prefer generate-sale on your server.

final GenerateSaleRequest request = new GenerateSaleRequest();
//Sale price - Required
request.setSalePrice(Long.parseLong(edtSalePrice.getText().toString()));
//Currency
request.setSaleCurrency(edtSaleCurrency.getText().toString());
//Installments - Required
request.setSaleInstallments(Integer.parseInt(edtSaleInstallments.getText().toString()));
//Product name - Required
request.setSaleProductName(edtSaleProductName.getText().toString());
//Capture Buyer
request.setCaptureBuyer(Boolean.parseBoolean(cbxCaptureBuyer.getText().toString()));
//Transaction ID
request.setSaleTransactionId(edtSaleTransactionId.getText().toString());

if (!isValid(request)) {
  //Stop execution if request is not valid
  return;
}

PayMe.generateSale(request, new PayMe.TransactionListener<GenerateSaleResponse>() {
  @Override public void onSuccess(GenerateSaleResponse response) {
    //Handle success request
  }

  @Override public void onFailed(Exception exception, PayMeError error) {
    //Handle failed request
  }
});

Pay a sale

First, create the sale on your server with generate-sale and send its payme_sale_id to your app. Then create a PaySaleRequest and send it:

final PaySaleRequest request = new PaySaleRequest();
//Name - Required
request.setBuyerName(edtBuyerName.getText().toString());
//Email - Required
request.setBuyerEmail(edtEmail.getText().toString());
//Phone
request.setBuyerPhone(edtBuyerPhone.getText().toString());
//ID
request.setBuyerSocialID(edtSocialId.getText().toString());
//payme_sale_id - Required - From your server
request.setPaymeSaleId(/* payme_sale_id */);

//Credit Card Number - Required
request.setCreditCardNumber(edtCreditCardNumber.getText().toString());
//CreditCard CVV - Required
request.setCreditCardCVV(edtCreditCardCvv.getText().toString());
//Credit Card Expiration - Required
request.setCreditCardExp(edtCreditCardExp.getText().toString());

if (!isValid(request)) {
  //Stop execution if request is not valid
  return;
}
PayMe.paySale(request, new PayMe.TransactionListener<PaySaleResponse>() {
  @Override public void onSuccess(PaySaleResponse response) {
    //Handle success request
  }

  @Override public void onFailed(Exception exception, PayMeError error) {
    //Handle failed request
  }
});

Pay a subscription

First, create the subscription on your server with generate-subscription and send its sub_payme_id to your app. Then create a PaySubscriptionRequest and send it:

PaySubscriptionRequest request = new PaySubscriptionRequest();
//Name - Required
request.setBuyerName(edtBuyerName.getText().toString());
//Email - Required
request.setBuyerEmail(edtEmail.getText().toString());
//ID
request.setBuyerSocialID(edtSocialId.getText().toString());
//sub_payme_id - Required - From your server
request.setSubPaymeId(/* sub_payme_id */);

//Credit Card Number - Required
request.setCreditCardNumber(edtCreditCardNumber.getText().toString());
//CreditCard CVV - Required
request.setCreditCardCVV(edtCreditCardCvv.getText().toString());
//Credit Card Expiration - Required
request.setCreditCardExp(edtCreditCardExp.getText().toString());


if (!isValid(request)) {
  //Stop execution if request is not valid
  return;
}

PayMe.paySubscription(request, new PayMe.TransactionListener<PaySubscriptionResponse>() {
  @Override public void onSuccess(PaySubscriptionResponse response) {
    //Handle success request
  }

  @Override public void onFailed(Exception exception, PayMeError error) {
    //Handle failed request
  }
});

Capture a buyer token

CaptureBuyerRequest request = new CaptureBuyerRequest();
//Name - Required
request.setBuyerName(edtBuyerName.getText().toString());
//Phone - Required
request.setBuyerPhone(edtPhone.getText().toString());
//Email - Required
request.setBuyerEmail(edtEmail.getText().toString());
//ID
request.setBuyerSocialID(edtSocialId.getText().toString());
//Permanent
request.setBuyerIsPermanent(editIsPermanent.isChecked());

//Credit Card Number - Required
request.setCreditCardNumber(edtCreditCardNumber.getText().toString());
//CreditCard CVV - Required
request.setCreditCardCVV(edtCreditCardCvv.getText().toString());
//Credit Card Expiration - Required
request.setCreditCardExp(edtCreditCardExp.getText().toString());

if (!isValid(request)) {
  //Stop execution if request is not valid
  return;
}

PayMe.captureBuyer(request, new PayMe.TransactionListener<CaptureBuyerResponse>() {
  @Override public void onSuccess(CaptureBuyerResponse response) {
    //Handle success request
  }

  @Override public void onFailed(Exception exception, PayMeError error) {
    //Handle failed request
  }
});

List financial transactions

Run this on your server instead: see get-transactions.

GetFinancialTransactionsRequest request = new GetFinancialTransactionsRequest();
//Seller ID
request.setSellerId(edtSellerId.getText().toString());
//Transaction created
request.setTranCreated(edtTranCreated.getText().toString());
//Transaction created max
request.setTranCreatedMax(edtTranCreatedMax.getText().toString());
//Transaction created min
request.setTranCreatedMin(edtTranCreatedMin.getText().toString());
//Transaction currency
request.setTranCurrency(edtTranCurrency.getText().toString());
//Transaction total
request.setTranTotal(Long.parseLong(edtTranTotal.getText().toString()));
//Transaction type
request.setTranType(Integer.parseInt(edtTranType.getText().toString()));

if (!isValid(request)) {
  //Stop execution if request is not valid
  return;
}

PayMe.getFinancialTransactions(request, new PayMe.TransactionListener<GetFinancialTransactionsResponse>() {
  @Override public void onSuccess(GetFinancialTransactionsResponse response) {
    //Handle success request
  }

  @Override public void onFailed(Exception exception, PayMeError error) {
    //Handle failed request
  }
});

List sales

Run this on your server instead: see get-sales.

GetSalesRequest request = new GetSalesRequest();
//Seller ID
request.setSellerId(edtSellerId.getText().toString());
//Sale Payme Code
request.setSalePaymeCode(Long.parseLong(edtSalePaymeCode.getText().toString()));
//Sale Payme ID
request.setSalePaymeId(edtSalePaymeId.getText().toString());
//Transaction ID
request.setTransactionId(edtTransactionId.getText().toString());
//Sale Created
request.setSaleCreated(edtSaleCreated.getText().toString());
//Sale Created Min
request.setSaleCreatedMin(edtSaleCreatedMin.getText().toString());
//Sale Created Max
request.setSaleCreatedMax(edtSaleCreatedMax.getText().toString());
//Sale Status
request.setSaleStatus(edtSaleStatus.getText().toString());
//Sale Price
request.setSalePrice(Long.parseLong(edtSalePrice.getText().toString()));
//Sale Currency
request.setSaleCurrency(edtSaleCurrency.getText().toString());
//Sale Auth Number
request.setSaleAuthNumber(edtSaleAuthNumber.getText().toString());
//Buyer Card Mask
request.setBuyerCardMask(edtBuyerCardMask.getText().toString());
//Buyer Card Last Four Digits
request.setBuyerCardLastFourDigits(edtBuyerCardLastFourDigits.getText().toString());
//Buyer Name
request.setBuyerName(edtBuyerName.getText().toString());
//Buyer Email
request.setBuyerEmail(edtBuyerEmail.getText().toString());
//Buyer Phone
request.setBuyerPhone(edtBuyerPhone.getText().toString());
//Buyer Social Id
request.setBuyerSocialId(edtBuyerSocialId.getText().toString());
//Buyer Card is Foreign
request.setBuyerCardisForeign(chxBuyerCardIsForeign.isChecked());

if (!isValid(request)) {
  //Stop execution if request is not valid
  return;
}

PayMe.getSales(request, new PayMe.TransactionListener<GetSalesResponse>() {
  @Override public void onSuccess(GetSalesResponse response) {
    //Handle success request
  }

  @Override public void onFailed(Exception exception, PayMeError error) {
    //Handle failed request
  }
});

Get statistics

GetStatisticsRequest request = new GetStatisticsRequest();
//Time Frame - Required
request.setTimeFrame(edtTimeFrame.getText().toString());
//Date Format - Required
request.setDateFormat(edtDateFormat.getText().toString());

if (!isValid(request)) {
  //Stop execution if request is not valid
  return;
}

PayMe.getStatistics(request, new PayMe.TransactionListener<GetStatisticsResponse>() {
  @Override public void onSuccess(GetStatisticsResponse response) {
    //Handle success request
  }

  @Override public void onFailed(Exception exception, PayMeError error) {
    //Handle failed request
  }
});

Get graph points

GetGraphPointsRequest request = new GetGraphPointsRequest();
//Time Frame - Required
request.setTimeFrame(edtTimeFrame.getText().toString());
//Date Format - Required
request.setDateFormat(edtDateFormat.getText().toString());

if (!isValid(request)) {
  //Stop execution if request is not valid
  return;
}

PayMe.getGraphPoinsts(request, new PayMe.TransactionListener<GetGraphPointsResponse>() {
  @Override public void onSuccess(GetGraphPointsResponse response) {
    //Handle success request
  }

  @Override public void onFailed(Exception exception, PayMeError error) {
    //Handle failed request
  }
});