Общий модуль Server Side SDK

Общее описание

Server Side SDK — это оболочка API, реализованная на Java. Если вам нужен SDK на другом языке, пожалуйста, свяжитесь с нами .

Загрузить файлы SDK

Установка

Вручную разверните артефакты в вашей системе управления зависимостями.
Примеры для локального репозитория maven:

  1. sdk.pom

    mvn install:install-file -Dfile="sdk.pom" -DpomFile="sdk.pom"
  2. core.jar с использованием core.pom

    mvn install:install-file -Dfile="core.jar" -DpomFile="core.pom"
  3. api-client.jar с использованием api-client.pom

    mvn install:install-file -Dfile="api-client.jar" -DpomFile="api-client.pom"

Требования

Пользователи Gradle

Добавьте эту зависимость в файл сборки вашего проекта:

implementation "net.payrdr.integrations:api-client:1.0.0"

Пользователи Maven

Добавьте эту зависимость в POM вашего проекта:

<dependency>
    <groupId>net.payrdr.integrations</groupId>
    <artifactId>api-client</artifactId>
    <version>1.0-SNAPSHOT</version>
</dependency>

Использование

Базовое использование с минимальной конфигурацией:

import net.payrdr.integrations.sdk.apiclient.regiserOrder.RegisterOrderResponse;
import net.payrdr.integrations.sdk.apiclient.regiserOrder.RegisterOrderRequest;
import net.payrdr.integrations.sdk.apiclient.ApiClient;

public class ApiExample {

   public static void main(String[] args) {
       ApiClient client = new ApiClient.Builder()
              .username(username)
              .password(password)
              .baseUrl(baseUrl)
              .build();

      RegisterOrderRequest request = RegisterOrderRequest.builder()
              .setAmount(10000)
              .setReturnUrl("https://mybestmerchantreturnurl.com")
              .build();

      RegisterOrderResponse response = client.registerOrder(request);
   }
}

Настройка

Базовый URL

Статический префикс URL для каждого метода API.
Пример: https://vtb.rbsuat.com/payment/rest/register.do. Здесь:

Кастомизация аутентификации запросов

Настроенный аутентификатор будет использоваться по умолчанию в клиенте API.

Готовые варианты аутентификации:

Если встроенных методов аутентификации недостаточно, вы можете расширить net.payrdr.integrations.sdk.apiclient.ApiRequestAuthenticator и предоставить его сборщику с помощью метода authenticator(ApiRequestAuthenticator).

Включение подписи запроса

Чтобы иметь возможность подписывать запросы, сначала обратитесь в службу технической поддержки, чтобы включить подписи для вас. Затем загрузите сертификат с помощью Портала продавца.

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

Закрытый ключ RSA можно настроить двумя способами:

Алгоритм подписи

Алгоритм подписи запроса по умолчанию — SHA256WithRSA. По умолчанию net.payrdr.integrations.sdk.core.security.SHA256WithRSASigner будет инициализирован с использованием предоставленного java.security.PrivateKey.

Во время выполнения запроса тело запроса будет преобразовано в хэш (X-Hash) и значение подписи (X-Signature) и передано в заголовках запроса.

X-Hash: GDrobAlCcpdOOlVuqra7Oogl/4s3vToGOXGpf3t/wJ0= 
    X-Signature: TJrm6jYAf2ssp/iYoDb3B+nuPqQ572oe/3a2RQ4oG2BFbmeRcoiITvR6tybNsbRHvRRlJys/2xFBW9ilee9GCN9WwYJ9h/MDyUEktj6NLZOztBAWi+7S8LDaiEWd+MUdTqe0hdiqo/lY2uIlEMTtkqTB7LsbEhrJ6NhJdpSxrstAnpyGIrGfldt0Vz+gz+YQ5XXrwhD6HyGShqV+tXzxcMdezWJJJ8vH5C0s  4jij2PuoauUSHkTrSc4vIJl/TPMliLJNsC5KCXka4/1hSr0exawFBekRldFnv5YvFakWJUN3kEc8  w3uauzTDh+CG0/Vxs/3gNun7e9ik9kCpwdiSMw==

Для использования SHA256WithRSASigner по умолчанию дополнительная настройка не требуется.

Кастомный алгоритм может быть реализован с использованием интерфейса net.payrdr.integrations.sdk.core.security.RequestSigner.
Передайте свою реализацию методу ApiClient.Builder.requestSigner(RequestSigner):

import net.payrdr.integrations.sdk.apiclient.ApiClient;

    public class ApiExample {

        public static void main(String[] args) {
            ApiClient client = new ApiClient.Builder()
                    .username(username)
                    .password(password)
                    .baseUrl(baseUrl)
                    .requestSigner(new RequestSigner() {
                        @Override
                        public void init(PrivateKey privateKey) {
                            //do some magic with provided private key
                        }

                        @Override
                        public void sign(HttpRequest request) {
                            // Here we can customize request signature. Key would be loaded by KeyProvider
                        }
                    })
                    .build();
        }
    }

Кастомизация HTTP-клиента

По умолчанию встроенный HttpClient оборачивает HttpsUrlConnection.

Возможности кастомизации:
Кастомизация реализации HTTP-клиента

HTTP-клиент можно заменить собственной реализацией с помощью интерфейсов net.payrdr.integrations.sdk.core.http.(HttpClient,HttpRequest,HttpResponse):

import net.payrdr.integrations.sdk.apiclient.ApiClient;
    import net.payrdr.integrations.sdk.core.http.HttpClient;
    import net.payrdr.integrations.sdk.core.http.HttpRequest;
    import net.payrdr.integrations.sdk.core.http.HttpResponse;

    public class ApiExample {

       public static void main(String[] args) {
            ApiClient client = new ApiClient.Builder()
                .username(username)
                .password(password)
                .baseUrl(baseUrl)
                .httpClient(new HttpClient() {
                        @Override
                        public HttpResponse execute(HttpRequest request) {
                            // do some magic and transform HttpRequest into HttpResponse
                            return null;
                        }

                        @Override
                        public HttpRequest requestInstance() {
                            // return some implementation of HttpRequest.
                            return null;
                        }
                })
                .build();
       }
    }

Кастомизация сериализации/десериализации

Типы контента, поддерживаемые по умолчанию для сериализации запросов:

Типы контента, поддерживаемые по умолчанию для десериализации ответов:

Кастомизация

Кастомный сериализатор может быть реализован с использованием интерфейсов net.payrdr.integrations.sdk.apiclient.serialization.RequestSerializer и net.payrdr.integrations.sdk.apiclient.serialization.ResponseDeserializer .

Реализации могут быть зарегистрированы с помощью методов ApiClient.Builder.registerSerializer(RequestSerializer) и ApiClient.Builder.registerDeserializer(ResponseDeserializer).

import net.payrdr.integrations.sdk.apiclient.ApiClient;

    public class ApiExample {

        public static void main(String[] args) {
            ApiClient client = new ApiClient.Builder()
                    .username(username)
                    .password(password)
                    .baseUrl(baseUrl)
                    .registerSerializer(new RequestSerializer() {

                        @Override
                        public ContentType getContentType() {
                            //register new ContentType in cache
                            return ContentType.of("custom/content-type");
                        }

                        @Override
                        public String serialize(ApiRequest request) {
                            return "MY_CUSTOM_SERIALIZATION";
                        }
                    })
                    .registerDeserializer(new ResponseDeserializer() {

                        @Override
                        public ContentType getContentType() {
                            //use registered ContentType from cache
                            return ContentType.of("custom/content-type");
                        }

                        @Override
                        public <T extends ApiResponse> T deserialize(String responseBody, Class<T> responseType) {
                            //DO THE DESERIALIZATION MAGIC IN HERE
                            return (T) new ApiResponse() {};
                        }
                    })
                    .build();
        }
    }

Также вы можете настроить конфигурацию библиотеки Gson, используя метод ApiClient.Builder.gson(Gson):

import net.payrdr.integrations.sdk.apiclient.ApiClient;

    public class ApiExample {

        public static void main(String[] args) {
            ApiClient client = new ApiClient.Builder()
                    .username(username)
                    .password(password)
                    .baseUrl(baseUrl)
                    .gson(new GsonBuilder()
                        .setFieldNamingPolicy(FieldNamingPolicy.IDENTITY)
                        .setDateFormat("yyyy-MM-dd'T'HH:mm:ss")
                        .create())
                    .build();
        }
    }

Исключения

Все исключения являются RuntimeException и могут быть следующих типов:

Создание новых методов API

Это можно сделать простым расширением классов net.payrdr.integrations.sdk.apiclient(ApiRequest,ApiResponse).

Абстрактные методы ApiRequest:

Методы по умолчанию ApiRequest:

Категории:
eCommerce SDK
Категории
Результаты поиска