Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ] > Код на шару!
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 24.08.2017, 14:17
DreyQQ DreyQQ вне форума
Прохожий
 
Регистрация: 24.08.2017
Сообщения: 4
Версия Delphi: Delphi 7, XE5
Репутация: 10
По умолчанию Работа с MD5 и GET запросами

Есть такое описание API сайта
Код:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
Интеграция 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 чтоб значение вставить в строку запроса?

Буду очень благодарен.
Ответить с цитированием
 


Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 22:03.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025