Пример выполнения простейшего запроса к GMD API

Делюсь наброском кода, который не пригодился по назначению, но в силу своей простоты может помочь понять, как выполнить API запрос к GMDonate с нуля.

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

Даже если сам функционал вам кажется бесполезным, код снизу может использоваться как пример для собственных разработок и оберток над 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,
		sign = sign,
	})
end

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)

1 лайк