Создание приложения

Регистрация нового приложения

Для начала работы надо авторизоваться в приложение API TPU (https://api.tpu.ru)

  1. Перейти на сайт API TPU (https://api.tpu.ru)

  2. Нажать на кнопку вход (см. рисунок) следуя инструкциям авторизации ввести свой корпоративный логин и пароль.

Screenshot_20.jpg

3. После авторизации в боковом меню выбрать раздел "Все приложения"

В списке будут отображаться приложения, где вы являетесь разработчиком. Если кто-то вас добавит к своему приложению - оно отобразиться у вас в боковом меню.

Screenshot_21.jpg

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

Screenshot_22.jpg

5. После добавления вашего приложения отправьте заявку на почту support@tpu.ru для подтверждения вашего приложения.

Добавление платформы приложения

После добавления вашего приложения, требуется добавить платформы и получить API Key для работы с методами API.

Для этого в меню выберите следующие пункты "Настройки" -> "Платформы".

Screenshot_25.jpg

В появившимся окне необходимо выбрать тип платформы приложения и заполнить все поля. Нажать "Сохранить".

Идентификатор платформы должен содержать только латинские буквы. Обычно это алиас системы или доменное имя сайта, записанное в обратном порядке

Screenshot_24.jpg

Добавлении версии приложения

Следующий шаг - это добавление версии приложения, для того чтобы получить API Key и Private Key для работы с методами https://api.tpu.ru

Выберите пункт "Версии" напротив интересующей вас платформы приложения.

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

Screenshot_26.jpg

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

Только версия приложения в статусе "Опубликовано" будет работать в API TPU


Screenshot_27.jpg

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

Screenshot_28.jpg

Расчет контрольной суммы

Для некоторых методов требуется указать дополнительный параметр безопасности sig. В интерфейсе вы сможете проверить алгоритм расчета этого параметра на сервере. Разработчику приложения нужно реализовать свой собственный метод для получения данного параметра.

Screenshot_29.jpg

Пример на языке PHP

public function sig(array $arguments, $secret)
{
    ksort($arguments);
    $string = '';

    foreach ($arguments as $key => $value) {
        $string .= "$key=$value";
    }

    return md5($string . $secret);
}

Пример на языке Java

import java.security.MessageDigest;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import java.security.NoSuchAlgorithmException;

public String sig(Map<String, String> arguments, String secret) throws NoSuchAlgorithmException {
    StringBuilder builder = new StringBuilder();

    List<String> keys = arguments.keySet().stream().sorted().collect(Collectors.toList());

    for(String key : keys) {
        builder.append(key).append("=").append(arguments.get(key));
    }

    builder.append(secret);
    byte[] digest = MessageDigest.getInstance("MD5").digest(builder.toString().getBytes());

    StringBuilder resultBuilder = new StringBuilder();

    for(byte b : digest) {
        resultBuilder.append(String.format("%02x", b));
    }

    return resultBuilder.toString();
}

Пример на языке Scala

import java.security.MessageDigest
import scala.collection.immutable.ListMap

def sig(arguments: Map[String, String], secret: String): String = {
    MessageDigest.getInstance("MD5").digest {
        s"${ListMap(arguments.toSeq.sortBy({ case (key, value) => key }):_*).map({ case (key, value) => s"$key=$value" }).mkString}$secret".getBytes
    }.map(byte => String.format("%02x", byte)).mkString
}

Пример на языке Python

import collections
import hashlib

def sig(arguments, secret):
    ordered = collections.OrderedDict(sorted(arguments.items()))
    concated = "".join(list(map(lambda k,v: k + "=" + v, ordered.keys(), ordered.values()))) + secret
    return hashlib.md5(concated.encode()).hexdigest()