Статьи

J2Pay — полный пример

Вступление

В этом разделе мы подробно рассмотрим, как использовать шлюз и успешно задействовать все четыре метода: покупку, возврат, аннулирование и повторную оплату.

Для этого примера мы будем использовать шлюз авторизации. Давайте начнем.

Прежде всего мы получим объект шлюза Authorize.

1
Gateway gateway = GatewayFactory.getGateway(AvailableGateways.AUTHORIZE);

Но что, если вы хотите динамически получать шлюз Authorize, например, вы получаете его имя из базы данных.

Вот как вы могли бы сделать это.

1
Gateway gateway = GatewayFactory.getGateway(AvailableGateways.valueOf("AUTHORIZE"));

Знайте, что вы можете понять оба подхода к получению желаемого объекта шлюза.

Поскольку мы работаем в тестовой среде, второе, что мы сделаем, это включим тестовый режим.

1
gateway.setTestMode(true);

Примечание. Тестовый режим будет работать только в том случае, если он поддерживается шлюзом, в противном случае он будет игнорироваться библиотекой.

Следующая и самая важная вещь — это параметры API, это уникальные значения, предоставляемые моими поставщиками услуг, т. Е. Имя пользователя и пароль API, которые должны быть включены во все запросы, и они всегда различны для всех шлюзов.

Поскольку мы используем J2pay, нам не нужно читать документацию для авторизации переменных шлюза.

Именно здесь вы будете использовать примеры методов параметров (см. Раздел «Примеры параметров»).

Вот как вы это сделаете.

1
JSONObject apiSampleParameters = gateway.getApiSampleParameters();

Теперь мы распечатаем его, чтобы увидеть параметры.

1
2
3
4
5
JSONObject apiSampleParameters = gateway.getApiSampleParameters();
    System.out.println(apiSampleParameters);
     
    //output
    { "name" : "also called api user name / api login id", "transactionKey" : "the transaction key" }

Как вы можете видеть для параметров авторизации API являются имя и транзакции. Заполним эти значения и перейдем к методу покупки.

1
2
apiSampleParameters.put("name", "<your acount's user name here>");
apiSampleParameters.put("transactionKey", "<your account's transaction key here>");

покупка

Способ покупки требует пять параметров.

  1. JSONObject apiParamters, то есть параметры, специфичные для шлюза, всегда уникальные для каждого шлюза.
  2. Клиент-клиент, этот класс представляет личную информацию клиента.
  3. CustomerCard customerCard, этот класс представляет данные карты клиента.
  4. Валюта валюты, то есть enum, содержит список валют, в которых будет взиматься сумма.
  5. сумма с плавающей запятой, сумма, которая будет взиматься.

Мы уже установили apiParameters выше.

Теперь создаем объект карты клиента и клиента.

Примечание. Классы customer и customercard поддерживают методы установки цепочек, и все поля, используемые ниже, обязательны для заполнения.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
Customer customer = new Customer();
         
    customer
        .setFirstName("test first name")
        .setLastName("test last name")
        .setCountry(Country.US)
        .setState("TX")
        .setCity("test city")
        .setAddress("test address")
        .setZip("12345")
        .setPhoneNumber("1234567890")
        .setEmail("[email protected]")
        .setIp("127.0.0.1");
 
    CustomerCard customerCard = new CustomerCard();
 
    customerCard
        .setName("test card name")
        .setNumber("5424000000000015")
        .setCvv(123)
        .setExpiryMonth("01")
        .setExpiryYear("2022");

Примечание: 4-й и 5-й параметры не требуют объяснения.

Теперь все параметры готовы, мы можем передать их методам покупки.

1
HTTPResponse response = gateway.purchase(apiSampleParameters, customer, customerCard, Currency.USD, 45);

Вы можете проверить состояние запроса на покупку, вызвав метод isSuccessful, а также получить ответ JSON, вызвав метод getJSONResponse.

1
2
response.isSuccessful();
    response.getJSONResponse();

Давайте соединим весь код.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
Gateway gateway = GatewayFactory.getGateway(AvailableGateways.AUTHORIZE);
    JSONObject apiSampleParameters = gateway.getApiSampleParameters();
 
    apiSampleParameters.put("name", "");
    apiSampleParameters.put("transactionKey", "");
 
    Customer customer = new Customer();
 
    customer
        .setFirstName("test first name")
        .setLastName("test last name")
        .setCountry(Country.US)
        .setState("TX")
        .setCity("test city")
        .setAddress("test address")
        .setZip("12345")
        .setPhoneNumber("1234567890");
 
    CustomerCard customerCard = new CustomerCard();
     
    customerCard
        .setName("test card name")
        .setNumber("5424000000000015")
        .setCvv(123)
        .setExpiryMonth("01")
        .setExpiryYear("2022");
         
    gateway.setTestMode(true);
 
    HTTPResponse response = gateway.purchase(apiSampleParameters, customer, customerCard, Currency.USD, 45);
 
    System.out.println (response.isSuccessful());
    System.out.println (response.getJSONResponse());

Давайте посмотрим на ответ, который мы получаем. Представьте, что мы держим ответ в переменной ответа.

1
JSONObject response = response.getJSONResponse();

После распечатки ответа вот что мы получили.

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
{
        "lr": {
            "amount": 2.5,
            "cardExpiryYear": "2017",
            "message": "This transaction has been approved.",
            "cardFirst6": "542400",
            "cardExpiryMonth": "12",
            "transactionId": "60036012175",
            "maskedCard": "542400******0015",
            "rebillParams": {
                "customerProfileId": "1813844918",
                "paymentProfileId": "1808509554"
            },
            "success": true,
            "voidParams": {
                "transactionId": "60036012175"
            },
            "currencyCode": "USD",
            "cardLast4": "0015",
            "refundParams": {
                "transactionId": "60036012175",
                "cardLast4": "0015"
            }
        },
        "gr": { //long gateway response }
    }

Как вы можете видеть для дальнейших транзакций, таких как возврат, недействительность или повторная библиотека, сама создала необходимые параметры

Для ребилла

1
2
3
4
"rebillParams": {
        "customerProfileId": "1813844918",
        "paymentProfileId": "1808509554"
    },

Для пустоты

1
2
3
"voidParams": {
        "transactionId": "60036012175"
    },

Для возврата

1
2
3
4
"refundParams": {
        "transactionId": "60036012175",
        "cardLast4": "0015"
    }

Примечание. Вы можете сохранить эти параметры в базе данных и передать их подходящим методам.

ребилл

Для повторного вызова мы вызовем метод getRebillSampleParameters.

1
JSONObject rebillSampleParameters = gateway.getRebillSampleParameters();

После печати вы увидите.

1
{"customerProfileId":"the customer profile id","paymentProfileId":"the customer payment profile id"}

Если вы согласуете это с вышеуказанным ключом отклика на покупку rebillParams, вы увидите, что на самом деле разницы нет. Ответ на покупку уже содержит эти параметры с заполненными значениями.

Поэтому мы не создаем их, как описано выше, как getApiSampleParameters, но если вы не выполнили транзакцию покупки из этой библиотеки, у вас есть второй вариант для создания этих параметров и передачи их в метод ребилла. Ниже мы описали оба подхода, чтобы вы могли использовать то, что вам больше подходит.

Первый подход

Этот подход быстр. Мы будем использовать сгенерированные библиотекой параметры (rebillParams).

Поскольку метод ребилла требует трех параметров

  1. JSON apiParameters
  2. JSON rebillParameters
  3. количество с плавающей запятой

Мы уже обсуждали apiParameters и просто напомним, что мы сохранили объект шлюза в переменной шлюза и ответ покупки в переменной ответа.

Вот как мы могли бы легко вызвать метод ребилла.

1
2
JSONObject rebillParams = response.getJSONObject("lr").getJSONObject("rebillParams")
    HTTPResponse rebillResponse = gateway.rebill(apiSampleParameters, rebillParams, 105);

Разве это не просто две строки?

Второй подход

Второй метод похож на то, как мы создали apiParameters.

1
JSONObject rebillParams = gateway.getRebillSampleParameters();

После печати rebillParams мы получили.

1
2
3
4
System.out.println(rebillParams);
     
    //output
    {"customerProfileId":"the customer profile id","paymentProfileId":"the customer payment profile id"}

Теперь мы заполним эти значения.

1
2
rebillParams.put("customerProfileId", "1813844918");
    rebillParams.put("paymentProfileId", "1808509554");

Теперь мы можем вызвать метод ребилла.

1
HTTPResponse rebillResponse = gateway.rebill(apiSampleParameters, rebillParams, 105);

Как вы видели выше, вы можете вызвать rebillResponse. Метод getJSONResponse () для получения ответа. И вы также можете проверить, была ли транзакция успешной или нет, вызвав метод rebillResponse.isSuccessful ().

вы также можете заметить, что оба подхода действительно просты, и вы можете использовать то, что вам больше подходит, но рекомендуется использовать первый подход, так как он также очень прост и исключает вероятность любой ошибки.

Примечание: для остальной части примера мы будем использовать первый подход.

Возврат денег

Для метода возврата требуется три параметра

  1. JSON apiParameters
  2. JSON refundParameters
  3. количество с плавающей запятой

Это очень похоже на возврат. Вот как мы будем называть метод возврата.

1
2
JSONObject refundParams = response.getJSONObject("lr").getJSONObject("refundParams")
    HTTPResponse refundResponse = gateway.refund(apiSampleParameters, refundParams, 2.5);

Примечание: остальная часть работы останется без изменений. Ответ содержит фактический ответ.

пустота

Метод voidTransaction требует двух параметров.

  1. JSON apiParameters
  2. JSON voidParameters

Ниже приведен пример кода.

1
2
JSONObject voidParams= response.getJSONObject("lr").getJSONObject("voidParams")
    HTTPResponse voidResponse = gateway.voidTransaction (apiSampleParameters, voidParams);

Примечание: остальная часть работы останется прежней. VoidResponse содержит фактический ответ.

Поздравляю с завершением примера. Вы полностью поняли библиотеку.

Опубликовано на Java Code Geeks с разрешения Мухаммеда Ильяса, партнера нашей программы JCG. Смотрите оригинальную статью здесь: Пример

Мнения, высказанные участниками Java Code Geeks, являются их собственными.