Primeiro, edite esse cуdigo conforme as marcaзхes, salve-o como pgcheck.php e coloque-o online numa hospedagem.
Depois, coloque o cуdigo abaixo em seu gamemode ou num filterscript separado, substituindo "suahospedagem.com" pelo link onde vocк hospedou o arquivo PHP.
PHP код:
#include <a_http>
#include <DOF2>
#define DIALOG_NONE 0
#define pgCodesFile "pgCodes/%s.txt"
CMD:pgcheck(playerid, params[])
{
if(isnull(params)) return SendClientMessage(playerid, 0xFF0000FF, "Uso: /pgcheck [Cуdigo PagSeguro]");
CheckPgCode(playerid, params[]);
return 1;
}
stock CheckPgCode(playerid, code[])
{
if(strfind(code, " ", true) != -1) return ShowPlayerDialog(playerid, DIALOG_NONE, DIALOG_STYLE_MSGBOX, "{FF0000}Erro na consulta", "{FFFFFF}O cуdigo nгo pode conter espaзos.", "Fechar", "");
new str[256];
format(str, sizeof(str), "suahospedagem.com/pgcheck.php?code=%s", code);
HTTP(playerid, HTTP_GET, str, "", "HTTP_PgResponse");
SendClientMessage(playerid, -1, "Fazendo requisiзгo, aguarde...");
return 1;
}
forward HTTP_PgResponse(playerid, response_code, data[])
public HTTP_PgResponse(playerid, response_code, data[])
{
if(!IsPlayerConnected(playerid)) return 1;
if(response_code == 200)
{
new str[400], nome[100], code[60], desc[60], Float:valor, status;
strcat(code, pg_split(data, "<code>", "</code>"));
strcat(nome, pg_split(data, "<name>", "</name>"));
strcat(desc, pg_split(data, "<description>", "</description>"));
status = strval(pg_split(data, "<status>", "</status>"));
valor = floatstr(pg_split(data, "<grossAmount>", "</grossAmount>"));
if(isnull(nome) || valor == 0 || status == 0)
{
ShowPlayerDialog(playerid, DIALOG_NONE, DIALOG_STYLE_MSGBOX, "{FF0000}Erro na consulta", "{FFFFFF}Ocorreu um erro na consulta de transaзгo.\n\nDigite o cуdigo e tente novamente.", "Fechar", "");
return 1;
}
format(str, sizeof(str), "{FFFFFF}Detalhes da transaзгo:\n\n\
{FFFFFF}Cуdigo: {ABDDED}%s\n\
{FFFFFF}Nome: {ABDDED}%s\n\
{FFFFFF}Нtem: {ABDDED}%s\n\
{FFFFFF}Status: {ABDDED}%d\n\
{FFFFFF}Valor pago: {ABDDED}R$ %.2f", code, nome, desc, status, valor);
if(status != 3 && status != 4)
{
new statusStr[40];
switch(status)
{
case 1: statusStr = "Aguardando pagamento";
case 2: statusStr = "Em anбlise";
default: statusStr = "Indefinido";
}
format(str, sizeof(str), "%s\n\n{FF0000}O produto nгo pфde ser concedido pelo status: %s (%d).", str, statusStr, status);
}
else
{
new file[70];
format(file, sizeof(file), pgCodesFile, code);
if(!fexist(file))
{
//Dк o VIP/produto de acordo com o valor (var valor) e descriзгo (var desc)
DOF2_CreateFile(file);
}
else
{
ShowPlayerDialog(playerid, DIALOG_NONE, DIALOG_STYLE_MSGBOX, "{FF0000}Erro na consulta", "{FFFFFF}Este cуdigo jб foi utilizado.", "Fechar", "");
return 1;
}
}
ShowPlayerDialog(playerid, DIALOG_NONE, DIALOG_STYLE_MSGBOX, "{00FF00}Consulta bem sucedida", str, "Fechar", "");
}
else
{
format(str, sizeof(str), "{FFFFFF}Ocorreu um erro na consulta de transaзгo.\n\nFalha no acesso, erro: %d", response_code);
ShowPlayerDialog(playerid, DIALOG_NONE, DIALOG_STYLE_MSGBOX, "{FF0000}Erro na consulta", str, "Fechar", "");
}
return 1;
}
stock pg_split(text[], text1[], text2[])
{
new pos1 = strfind(text, text1, true);
new pos2 = strfind(text, text2, true);
new str[256];
strmid(str, text, pos1+strlen(text1), pos2);
return str;
}
Crie a pasta "pgCodes" na scriptfiles. Use o comando /pgcheck para fazer os testes. Serб necessбrio um cуdigo de compra vбlido (e nгo pode ser uma compra do tipo doaзгo).