[Pedido] Retorno Automбtico API PagSeguro
#1

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
Reply
#2

https://pagseguro.uol.com.br/v2/guia...igo.html#!rmcl
Reply
#3

Quote:
Originally Posted by RodrigoMSR
Посмотреть сообщение
Aн eles dб um exemplo, nгo sei PHP :\
Reply
#4

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.
Reply
#5

No y0utub3 hб explicaзхes de como fazer isso.
Reply
#6

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) ?
Reply
#7

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.
Reply
#8

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?
Reply
#9

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.
Reply
#10

Quote:
Originally Posted by ipsLuan
Посмотреть сообщение
Sim.
Explica como que faz Luan.
Reply
#11

Nenhuma Base?
Reply
#12

eu conseguiria fazer usando mysql, php e uma hospedagem de site, acredito ser a ъnica forma
Reply
#13

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(playeridparams[])
{
    if(
isnull(params)) return SendClientMessage(playerid0xFF0000FF"Uso: /pgcheck [Cуdigo PagSeguro]");
    
CheckPgCode(playeridparams[]);
    return 
1;
}
stock CheckPgCode(playeridcode[])
{
    if(
strfind(code" "true) != -1) return ShowPlayerDialog(playeridDIALOG_NONEDIALOG_STYLE_MSGBOX"{FF0000}Erro na consulta""{FFFFFF}O cуdigo nгo pode conter espaзos.""Fechar""");
        
    new 
str[256];
    
format(strsizeof(str), "suahospedagem.com/pgcheck.php?code=%s"code);
    
HTTP(playeridHTTP_GETstr"""HTTP_PgResponse");
    
    
SendClientMessage(playerid, -1"Fazendo requisiзгo, aguarde...");
    return 
1;
}
forward HTTP_PgResponse(playeridresponse_codedata[])
public 
HTTP_PgResponse(playeridresponse_codedata[])
{
    if(!
IsPlayerConnected(playerid)) return 1;
    
    if(
response_code == 200)
    {
        new 
str[400], nome[100], code[60], desc[60], Float:valorstatus;
        
        
strcat(codepg_split(data"<code>""</code>"));
        
strcat(nomepg_split(data"<name>""</name>"));
        
strcat(descpg_split(data"<description>""</description>"));
        
        
status strval(pg_split(data"<status>""</status>"));
        
valor floatstr(pg_split(data"<grossAmount>""</grossAmount>"));
        if(
isnull(nome) || valor == || status == 0)
        {
            
ShowPlayerDialog(playeridDIALOG_NONEDIALOG_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(strsizeof(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"
codenomedescstatusvalor);
        
        if(
status != && status != 4)
        {
            new 
statusStr[40];
            switch(
status)
            {
                case 
1statusStr "Aguardando pagamento";
                case 
2statusStr "Em anбlise";
                default: 
statusStr "Indefinido";
            }
            
format(strsizeof(str), "%s\n\n{FF0000}O produto nгo pфde ser concedido pelo status: %s (%d)."strstatusStrstatus);
        }
        else
        {
            new 
file[70];
            
format(filesizeof(file), pgCodesFilecode);
            
            if(!
fexist(file))
            {
                
//Dк o VIP/produto de acordo com o valor (var valor) e descriзгo (var desc)
                
                
DOF2_CreateFile(file);
            }
            else
            {
                
ShowPlayerDialog(playeridDIALOG_NONEDIALOG_STYLE_MSGBOX"{FF0000}Erro na consulta""{FFFFFF}Este cуdigo jб foi utilizado.""Fechar""");
                return 
1;
            }
        }
        
        
ShowPlayerDialog(playeridDIALOG_NONEDIALOG_STYLE_MSGBOX"{00FF00}Consulta bem sucedida"str"Fechar""");
    }
    else
    {
        
format(strsizeof(str), "{FFFFFF}Ocorreu um erro na consulta de transaзгo.\n\nFalha no acesso, erro: %d"response_code);
        
ShowPlayerDialog(playeridDIALOG_NONEDIALOG_STYLE_MSGBOX"{FF0000}Erro na consulta"str"Fechar""");
    }
    return 
1;
}
stock pg_split(text[], text1[], text2[])
{
    new 
pos1 strfind(texttext1true);
    new 
pos2 strfind(texttext2true);
    
    new 
str[256];
    
strmid(strtextpos1+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).
Reply
#14

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(playeridparams[])
{
    if(
isnull(params)) return SendClientMessage(playerid0xFF0000FF"Uso: /pgcheck [Cуdigo PagSeguro]");
    
CheckPgCode(playeridparams[]);
    return 
1;
}
stock CheckPgCode(playeridcode[])
{
    if(
strfind(code" "true) != -1) return ShowPlayerDialog(playeridDIALOG_NONEDIALOG_STYLE_MSGBOX"{FF0000}Erro na consulta""{FFFFFF}O cуdigo nгo pode conter espaзos.""Fechar""");
        
    new 
str[256];
    
format(strsizeof(str), "suahospedagem.com/pgcheck.php?code=%s"code);
    
HTTP(playeridHTTP_GETstr"""HTTP_PgResponse");
    
    
SendClientMessage(playerid, -1"Fazendo requisiзгo, aguarde...");
    return 
1;
}
forward HTTP_PgResponse(playeridresponse_codedata[])
public 
HTTP_PgResponse(playeridresponse_codedata[])
{
    if(!
IsPlayerConnected(playerid)) return 1;
    
    if(
response_code == 200)
    {
        new 
str[400], nome[100], code[60], desc[60], Float:valorstatus;
        
        
strcat(codepg_split(data"<code>""</code>"));
        
strcat(nomepg_split(data"<name>""</name>"));
        
strcat(descpg_split(data"<description>""</description>"));
        
        
status strval(pg_split(data"<status>""</status>"));
        
valor floatstr(pg_split(data"<grossAmount>""</grossAmount>"));
        if(
isnull(nome) || valor == || status == 0)
        {
            
ShowPlayerDialog(playeridDIALOG_NONEDIALOG_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(strsizeof(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"
codenomedescstatusvalor);
        
        if(
status != && status != 4)
        {
            new 
statusStr[40];
            switch(
status)
            {
                case 
1statusStr "Aguardando pagamento";
                case 
2statusStr "Em anбlise";
                default: 
statusStr "Indefinido";
            }
            
format(strsizeof(str), "%s\n\n{FF0000}O produto nгo pфde ser concedido pelo status: %s (%d)."strstatusStrstatus);
        }
        else
        {
            new 
file[70];
            
format(filesizeof(file), pgCodesFilecode);
            
            if(!
fexist(file))
            {
                
//Dк o VIP/produto de acordo com o valor (var valor) e descriзгo (var desc)
                
                
DOF2_CreateFile(file);
            }
            else
            {
                
ShowPlayerDialog(playeridDIALOG_NONEDIALOG_STYLE_MSGBOX"{FF0000}Erro na consulta""{FFFFFF}Este cуdigo jб foi utilizado.""Fechar""");
                return 
1;
            }
        }
        
        
ShowPlayerDialog(playeridDIALOG_NONEDIALOG_STYLE_MSGBOX"{00FF00}Consulta bem sucedida"str"Fechar""");
    }
    else
    {
        
format(strsizeof(str), "{FFFFFF}Ocorreu um erro na consulta de transaзгo.\n\nFalha no acesso, erro: %d"response_code);
        
ShowPlayerDialog(playeridDIALOG_NONEDIALOG_STYLE_MSGBOX"{FF0000}Erro na consulta"str"Fechar""");
    }
    return 
1;
}
stock pg_split(text[], text1[], text2[])
{
    new 
pos1 strfind(texttext1true);
    new 
pos2 strfind(texttext2true);
    
    new 
str[256];
    
strmid(strtextpos1+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!
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)