Делюсь наброском кода, который не пригодился по назначению, но в силу своей простоты может помочь понять, как выполнить API запрос к GMDonate с нуля.
Код снизу может использоваться как пример для собственных разработок и оберток над API.
local function request(project, secret, method, params, onSuccess, onError)
local sign = IGS.GetSign(params, secret)
http.Post("https://gm-donate.net/api" .. method, params, function(body, len, headers, code)
local data = util.JSONToTable(body)
if onSuccess and data and data.ok then
if onSuccess then onSuccess(data.data) end
elseif onError then onError(data) end
end, onError, {
project = project, -- headers
sign = sign,
})
end
Пример использования
Установка баланса игрока через API, имея id проекта, секретный ключ и стимайди игрока
local function get_player(project, secret, sid, onSuccess)
request(project, secret, "/donators/get", {
sid = sid,
}, onSuccess, function(data) PrintTable({err = data}) end)
end
local function create_tx(project, secret, sid, amount, onSuccess)
request(project, secret, "/transactions/create", {
sid = sid,
sum = amount,
}, onSuccess, function(data) PrintTable({err = data}) end)
end
local function set_player_balance(project, secret, sid, need_bal, onSuccess)
get_player(project, secret, sid, function(dat)
local bal = dat.Balance
create_tx(project, secret, sid, need_bal - bal, onSuccess)
end)
end
local PROJECT_ID = "12345"
local SECRET_KEY = "secret_key"
local PLAYER_SID = util.SteamIDTo64("STEAM_0:1:23456789")
set_player_balance(PROJECT_ID, SECRET_KEY, PLAYER_SID, 0, function()
print("Раз это вызвалось, то наверное, получилось")
end)