Retorno Automбtico API PagSeguro -
GuiKommander - 11.11.2018
Quando compra um item com cartгo gera uma key no PAGSEGURO.
E pode-se usar no SAMP, Ativando por um dialog ou comando.
Ninguйm tem uma BASE disso? Achei um tуpico desse:
https://sampforum.blast.hk/showthread.php?tid=606843
Sу que nгo consigo acompanhar o raciocнnio da explicaзгo do criador do tуpico :\
Se alguйm tiver alguma base, posta ai :3
Re: Retorno Automбtico API PagSeguro -
RodrigoMSR - 11.11.2018
https://pagseguro.uol.com.br/v2/guia...igo.html#!rmcl
Re: Retorno Automбtico API PagSeguro -
GuiKommander - 11.11.2018
Quote:
Originally Posted by RodrigoMSR
|
Aн eles dб um exemplo, nгo sei PHP :\
Re: Retorno Automбtico API PagSeguro -
bruxo00 - 12.11.2018
Se a API deles estiver bem feita (nгo conheзo o PagSeguro, mas parece um tipo de paypal), nгo vai conseguir usar a API diretamente pelo SAMP, por falta de seguranзa. Se vocк sabe pawn, tambйm consegue aprender PHP. Sabendo uma linguagem, as outras tornam-se muito mais fбceis. Basta aprender sobre POST's e GET's e jб consegue fazer com que o seu servidor SAMP se conecte a uma pбgina PHP que por sua vez se conecte а API.
Re: Retorno Automбtico API PagSeguro -
ipsLuan - 12.11.2018
No y0utub3 hб explicaзхes de como fazer isso.
Re: Retorno Automбtico API PagSeguro -
GuiKommander - 12.11.2018
Quote:
Originally Posted by ipsLuan
No y0utub3 hб explicaзхes de como fazer isso.
|
Esse й o problema, atй esse passo й fбcil.
Mas como adaptar o Cуdigo para ativar o ITEM no SAMP (MINHA GM) ?
Re: Retorno Automбtico API PagSeguro -
ipsLuan - 12.11.2018
Quote:
Originally Posted by GuiKommander
Esse й o problema, atй esse passo й fбcil.
Mas como adaptar o Cуdigo para ativar o ITEM no SAMP (MINHA GM) ?
|
Simples, uai!
Quando a compra for aprovada, insira o pedido, o cуdigo e a quantidade no banco de dados.
Apуs isso, й sу vocк conectar o servidor ao banco de dados e fazer o que deve ser feito.
Re: Retorno Automбtico API PagSeguro -
GuiKommander - 12.11.2018
Jб consegui pensar como fazer, agora sу vou colocar em Prбtica.
Mas tem como identificar o EMAIL do Comprador pra mim mostrar no /AtivarCODIGO?
Re: Retorno Automбtico API PagSeguro -
ipsLuan - 12.11.2018
Quote:
Originally Posted by GuiKommander
Jб consegui pensar como fazer, agora sу vou colocar em Prбtica.
Mas tem como identificar o EMAIL do Comprador pra mim mostrar no /AtivarCODIGO?
|
Sim.
Re: Retorno Automбtico API PagSeguro -
GuiKommander - 12.11.2018
Quote:
Originally Posted by ipsLuan
Sim.
|
Explica como que faz Luan.
Re: Retorno Automбtico API PagSeguro -
GuiKommander - 16.11.2018
Nenhuma Base?
Re: Retorno Automбtico API PagSeguro -
GSantana - 16.11.2018
eu conseguiria fazer usando mysql, php e uma hospedagem de site, acredito ser a ъnica forma
Re: Retorno Automбtico API PagSeguro -
RodrigoMSR - 17.11.2018
Primeiro, edite esse cуdigo conforme as marcaзхes, salve-o como pgcheck.php e coloque-o online numa hospedagem.
Код:
<?php
if(isset($_GET['code']))
{
$code = $_GET['code'];
$email = "emailDaSuaConta";
$token = "tokenDaSuaConta";
print file_get_contents("https://ws.pagseguro.uol.com.br/v2/transactions/".$code."?email=".$email."&token=".$token);
}
?>
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).
Re: Retorno Automбtico API PagSeguro -
matheusdorado - 17.11.2018
Quote:
Originally Posted by RodrigoMSR
Primeiro, edite esse cуdigo conforme as marcaзхes, salve-o como pgcheck.php e coloque-o online numa hospedagem.
Код:
<?php
if(isset($_GET['code']))
{
$code = $_GET['code'];
$email = "emailDaSuaConta";
$token = "tokenDaSuaConta";
print file_get_contents("https://ws.pagseguro.uol.com.br/v2/transactions/".$code."?email=".$email."&token=".$token);
}
?>
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).
|
SIMPLESMENTE PARABЙNS! 100% Funcional!