gn-api-sdk-android
An Android SDK for easy integration of your mobile apps with the payment methods provided by Gerencianet.
 
 [
](https://search.maven.org/#search|ga|1|g:"br.com.gerencianet.mobile" AND a:"gn-api-sdk-android")
According to Gerencianet API Docs, a payment_token represents a credit card number in their context. With a payment token acquired you can process/confirm payments. The purpose of this SDK is to provide a simple way to get these tokens so that you can send them to your backend from your Android mobile apps.
Requirements
- Android 2.2+
 
Installation
Via gradle:
compile 'br.com.gerencianet.mobile:gn-api-sdk-android:0.6' 
Via maven:
<dependency>
  <groupId>br.com.gerencianet.mobile</groupId>
  <artifactId>gn-api-sdk-android</artifactId>
  <version>0.6</version>
</dependency> 
Usage
Instantiate a Config object, set your account code and whether or not you're using sandbox environment:
Config config = new Config();
config.setAccountCode("yourAccountCode");
config.setSandbox(true); 
Create a CreditCard:
CreditCard creditCard = new CreditCard();
creditCard.setBrand("visa");
creditCard.setCvv("123");
creditCard.setNumber("40120010384433");
creditCard.setExpirationMonth("05");
creditCard.setExpirationYear("2018"); 
Create an Endpoints instance:
Endpoints gnEndpoints = new Endpoints(config, new IGnListener() {
    @Override
    public void onPaymentDataFetched(PaymentData paymentData) {
        Log.d(Constants.TAG, new Gson().toJson(paymentData));
    }
    @Override
    public void onPaymentTokenFetched(PaymentToken paymentToken) {
        Log.d(Constants.TAG, paymentToken.getHash());
    }
    @Override
    public void onError(Error error) {
        Log.d(Constants.TAG, new Gson().toJson(error));
    }
}); 
Get a PaymentToken:
gnEndpoints.getPaymentToken(creditCard); 
Observe that getPaymentToken is an asynchronous call. When the response arrives, onPaymentTokenFetched will be triggered.
Log.d output:
{
  "hash": "5fcf90da4830edcacf96e96814c66f5ec1bf28de"
} 
In addition to getting payment tokens, sometimes you'll need to get payment information to display it for the users. For this, first create a PaymentType:
PaymentType paymentType = new PaymentType();
paymentType.setName("visa");
paymentType.setTotal(10000);
gnClient.getPaymentData(paymentType); 
This time, onPaymentDataFetched will be triggered if the call succeeds.
Log.d output:
{
  "installments": [{
    "currency": "101,50",
    "hasInterest": false,
    "parcels": 1,
    "value": 10150
  }, {
    "currency": "52,79",
    "hasInterest": true,
    "parcels": 2,
    "value": 5279
  }, {
    "currency": "35,89",
    "hasInterest": true,
    "parcels": 3,
    "value": 3589
  }, {
    "currency": "27,46",
    "hasInterest": true,
    "parcels": 4,
    "value": 2746
  }, {
    "currency": "22,40",
    "hasInterest": true,
    "parcels": 5,
    "value": 2240
  }, {
    "currency": "19,04",
    "hasInterest": true,
    "parcels": 6,
    "value": 1904
  }, {
    "currency": "16,64",
    "hasInterest": true,
    "parcels": 7,
    "value": 1664
  }, {
    "currency": "14,85",
    "hasInterest": true,
    "parcels": 8,
    "value": 1485
  }, {
    "currency": "13,47",
    "hasInterest": true,
    "parcels": 9,
    "value": 1347
  }, {
    "currency": "12,36",
    "hasInterest": true,
    "parcels": 10,
    "value": 1236
  }, {
    "currency": "11,46",
    "hasInterest": true,
    "parcels": 11,
    "value": 1146
  }, {
    "currency": "10,72",
    "hasInterest": true,
    "parcels": 12,
    "value": 1072
  }],
  "interestPercentage": 0,
  "name": "visa",
  "rate": 150
} 
As you may have already suspected, onError will be called in case of any error.
Here is a sample app with a checkout page using this SDK.
If you're wondering what to do in your backend code, here are the SDK's that will help:
If you're looking for this same code but for iOS, here it goes:
Tests
To run the test suite with coverage:
./gradlew jacocoTestReport
 
The output files will be created in app/build/reports.