|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Работа с MD5 и GET запросами
Есть такое описание API сайта
Код:
Интеграция API Все вызовы API осуществляются с помощью GET запросов. Для каждого запроса должны передаваться обязательные параметры: tr - уникальный идентификатор транзакции (максимум 40 символов). key - публичный ключ доступа (Access Key). Генерируется на странице настройки API. sign - подпись запроса. Являет собой MD5 хеш от строки: api_uri:secret_key. Где api_uri - уже готовый подзапрос операции вместе со всеми параметрами, включая tr и key, начиная с /api/... secret_key - секретный ключ (Secret Key). Генерируется на странице настройки API. Обратите внимание: конкатенация строки осуществляется через двоеточие. Для данного примера запроса: http://sample-api-domain.net/api/last-jackpots/?tr=555&key=gmi6etd371nub9otgdetpga2bb281ja7&start=19800530043055&end=20150922000000&page=1&psize=25&sign=7932b279113e7828df8e8cf86a9dbe53 api_uri будет: /api/last-jackpots/?tr=555&key=gmi6etd371nub9otgdetpga2bb281ja7&start=19800530043055&end=20150922000000&page=1&psize=25 если secret_key к примеру взять - d1np2s6e99aqfjb8214699uf9na0n28p2gqc8qg6nca8o7fcliv4mhl87rf56m0h то sign соответственно должен быть - 7932b279113e7828df8e8cf86a9dbe53 Результат ответа на запрос всегда в "application/json;charset=utf-8" формате и статусом 200. Каждый ответ всегда содержит как минимум два поля: success - результат выполнения операции. Успешно - true, ошибка - false. tr - уникальный идентификатор транзакции который был передан в запросе. В случае ошибки, в ответе дополнительно передаются: code - код ошибки. message - описание ошибки. { "success" : false, "tr" : "555", "code" : 6, "message" : "FAIL_TRANSACTION_KEY_NOT_UNIQUE" } При успешном завершении операции, в ответе дополнительно передаются зависящие от конкретного запроса данные. Если запрос подразумевает постраничную навигацию - в теле ответа также будет присутствовать информация о ней. Например: {... "_metadata" : { "totalCount" : 6, "page" : 1, "psize" : 10, "totalPages" : 1 } ...} Формат представления даты (периода) во входящих и исходящих параметрах - "yyyyMMddHHmmss". Важно! Если несколько раз вызывать одну и ту же операцию с одинаковым идентификатором транзакции - все резульататы кроме первого будут браться из кеша. Необходимо например, если вы вызвали операцию создания счета и по каким либо причинам (обрыв связи например) не получили ответ. Если повторно сделать вызов этой операции - счет повторно создан не будет, а вернется результат самой первой операции с тем же идентификатором транзакции. Список операций и их параметры с примерами успешных ответов: Создание нового счета - /api/invoice/new sum - начальная сумма на счету. { "success" : true, "tr" : "1", "invoice" : "30826184148184", "sum" : 2.99 } Проверка состояния счета - /api/invoice/check invoice - номер счета. { "success" : true, "tr" : "2", "invoice" : "30826184148184", "sum" : 2.99 } Пополнить счет - /api/invoice/add invoice - номер счета. sum - сумма. { "success" : true, "tr" : "3", "invoice" : "30826184148184", "sum" : 10.99 } Закрыть счет - /api/invoice/close invoice - номер счета. { "success" : true, "tr" : "4", "invoice" : "30826184148184", "sum" : 0 } Получить джекпот и бонус - /api/jp-bonus { "success" : true, "tr" : "5", "jackpot" : 10367.95, "bonus" : 1551.92 } Общие данные о перечислениях по счету - /api/invoice/total invoice - номер счета. start - начальный период. end - конечный период. { "success" : true, "tr" : "10", "invoice" : "40811858280039", "sum" : 0.00, "in" : 82.00, "out" : 63.37, "in-out" : 18.63, "ret" : 0.00 } Получить список субагентов - /api/subagents parent - если parent пустой - возвращает весь список субагентов текущего пользователя API. Если parent задан - то его субагентов. page - текущая страница. (Опционально. По умолчанию - 1) psize - количество елементов на странице. (Опционально. По умолчанию - 10) { "success" : true, "tr" : "20", "_metadata" : { "totalCount" : 6, "page" : 1, "psize" : 10, "totalPages" : 1 }, "sub-agents" : [ { "parent" : "-", "login" : "teller1", "role" : "ROLE_TELLER", "credit" : 10000.00, "enabled" : true }, { "parent" : "-", "login" : "agent1", "role" : "ROLE_AGENT", "credit" : 541664.18, "enabled" : true }, { "parent" : "-", "login" : "teller2", "role" : "ROLE_TELLER", "credit" : 989590.00, "enabled" : true }, { "parent" : "-", "login" : "teller3", "role" : "ROLE_TELLER", "credit" : 10000.00, "enabled" : true }, { "parent" : "-", "login" : "teller4", "role" : "ROLE_TELLER", "credit" : 70356.76, "enabled" : true }, { "parent" : "-", "login" : "teller5", "role" : "ROLE_TELLER", "credit" : 100000.00, "enabled" : true } ] } Возможные роли: ROLE_TELLER(кассир), ROLE_AGENT(агент) и ROLE_MANAGER(руководитель зала) Сумарная финансовая информация по субагенту за определенный период - /api/report-user Баланс, Депозит, Выплата, Результат, Счета login - логин субагента. start - начальный период. end - конечный период. { "success" : true, "tr" : "30", "credit" : 541664.18, "deposit" : 17000.00, "close" : 8663.80, "result" : 8336.20, "invoice" : 5986.10 } Сделать перевод субагенту или вернуть деньги от субагента - /api/transfer Субагент с ролью ROLE_TELLER(кассир) не имеет права делать перевод. login - логин субагента которому нужно сделать перевод. sum - сумма перевода. Если сумма положительная - делаем перевод. Если отрицательная - возвращаем деньги от субагента { "success" : true, "tr" : "40", "credit" : 7684013.62 } Получить историю игр по счету - /api/invoice/games-history invoice - номер счета. page - текущая страница. (Опционально. По умолчанию - 1) psize - количество елементов на странице. (Опционально. По умолчанию - 10) { "success" : true, "tr" : "50", "_metadata" : { "totalCount" : 1, "page" : 1, "psize" : 25, "totalPages" : 1 }, "game-history" : [ { "time" : "20140503154701", "name" : "no game", "event" : "login", "value" : 0.00, "credit" : 99406.40 } ] } Последние джекпоты - /api/last-jackpots start - начальный период. end - конечный период. page - текущая страница. (Опционально. По умолчанию - 1) psize - количество елементов на странице. (Опционально. По умолчанию - 10) { "success" : true, "tr" : "60", "_metadata" : { "totalCount" : 57233, "page" : 2, "psize" : 2, "totalPages" : 28617 }, "last-jackpots" : [ { "type" : 2, "date" : "20141105073936", "login" : "greengrey", "value" : 195.00, "bet" : 2000.00, "ip" : "95.54.253.237", "amount" : 0.00 }, { "type" : 2, "date" : "20141105073725", "login" : "greengrey", "value" : 183.00, "bet" : 2000.00, "ip" : "95.54.253.237", "amount" : 0.00 } ] } Как правильно отправить любой из запросов на delphi и правильно обработать ответ? С Delphi умею работать как новичёк, но очень сильно хочу для себя програмку написать. Если можно то часть кода как этот запрос отправить, как получить и обработать ответ, и как шифровать строку в MD5 чтоб значение вставить в строку запроса? Буду очень благодарен. |