SA-MP Forums

Go Back   SA-MP Forums > Non-English > Languages > Português/Portuguese > Lançamentos/Releases

Reply
 
Thread Tools Display Modes
Old 10/05/2016, 01:18 AM   #1
CaioTJF
Gangsta
 
CaioTJF's Avatar
 
Join Date: Sep 2012
Location: Rio de Janeiro
Posts: 540
Reputation: 148
Post Pagamento Automático via PagSeguro (PHP+MySQL)

Neste tópico irei ensinar como receber notificações de pagamentos em uma página PHP e enviar para um banco de dados MySQL, utilizando como exemplo o PagSeguro, pode não ser o melhor tutorial possível pois estou começando a estudar PHP agora, mas o importante é que funciona, se alguém souber melhorias que eu posso fazer no código, basta postaR aqui que eu atualizarei.

Requisitos: Conta PagSeguro e uma hospedagem que tenha suporte para MySQL e PHP

Explicação: Depois que você configura uma URL de retorno, toda vez que um pagamento tiver seu status alterado o PagSeguro envia dados informando no formato POST para a URL de retorno.
O que iremos fazer nesse tutorial é, criar uma página de retorno e armazenar os dados enviados pelo PagSeguro em um banco de dados MySQL.

Então vamos lá! Primeiramente, entre no site do PagSeguro, Clique em "Painel", "Minha Conta" e depois vá em "Preferências" e "Integrações". Nessa página, habilite a notificação de transação e gere um token. Se você souber como irá ficar sua URL, já pode definir ela, exemplo: http://www.meusite.com/pagseguro.php

Após isso, clique em "Confira informações dessa funcionalidade." e ative a URL de retorno e novamente coloque uma URL, nesse tutorial a página será chamada de "pagseguro.php" como citei no exemplo acima.

Ps.: Anote o Token.

Agora crie um banco de dados no MySQL chamado "pagseguro", e rode o código abaixo:

Code:
	
CREATE TABLE `pagseguro` 
(
	`Code` VARCHAR(128) NOT NULL,
	`Cash` INT(11) NOT NULL
)
COLLATE='latin1_swedish_ci'
ENGINE=InnoDB
;
Feito isso, iremos criar nossa página que se chamará "pagseguro.php", ela que irá receber a notificação do PagSeguro e enviará para o banco de dados:

http://pastebin.com/zGC1AzHv

Obs.: Altere os dados de conexão ao MySQL e a definição do TOKEN.

Em seguida, upe a página "pagseguro.php" na hospedagem.

Com tudo isso feito, basta você gerar um link de pagamento, eu tenho este:

http://pastebin.com/WQf9sYdv

Obs.: Altere os campos e-mail e token.

Importante notar, o ID do item (produto) nesse caso é muito importante, é nele que o script classificará o produto, por exemplo, nesse script, o produto número 1 vale 1000 cash.
O ID do item é classificado no arquivo XML, na chave <id>. No pastebin do link de pagamento você irá encontrar.

Esse script tem uma ideia de que os players digitem o código de transação dentro do jogo para receber seu cash. O resto é com você =P

Você pode encontrar todos os campos enviados pelo PagSeguro aqui.

Créditos:
CaioTJF
http://sounoob.com.br/
__________________

IP: 35.196.228.74:2009 / Website: www.gtatorcidas.net




Last edited by CaioTJF; 11/05/2016 at 10:38 PM.
CaioTJF is offline   Reply With Quote
Old 10/05/2016, 01:46 AM   #2
OverKiller
Huge Clucker
 
OverKiller's Avatar
 
Join Date: Mar 2016
Location: Brazil - America South
Posts: 385
Reputation: 4
Default Respuesta: Pagamento Automático via PagSeguro (PHP+MySQL)

Boa, @UP
OverKiller is offline   Reply With Quote
Old 10/05/2016, 01:53 AM   #3
pWesley
Gangsta
 
Join Date: Feb 2011
Posts: 883
Reputation: 21
Default Re: Pagamento Automático via PagSeguro (PHP+MySQL)

Velho, eu te amo cara ... fazia um tempo que eu não mexia com PHP, tinha que revirar a mente pra poder tentar fazer isso mas ... tu me salvou agora cara. Muito obrigado por compartilhar.

@EDIT
Dá pra implementar informações não dá, tipo adicionar mais informações da compra pelo pagseguro?
__________________
[Tutorial] Explicação rápida sobre a DIALOG_STYLE_PASSWORD
[Filterscript] Medkit de chão

[ATENÇÃO: Não estou programando mais no momento]

PC Specs:
G4400 / H110M-S2PH DDR4 / HyperX Fury 4GB 2133MHz DDR4 / Gigabyte GeForce GT 1030 2GB / SATA 3.5" 250GB 7200RPM / Corsair Carbide Spec-01 Blue / Razer Cyclosa Bundle / Razer Goliathus Speed Mobile / Headset Warrior PH101
pWesley is offline   Reply With Quote
Old 10/05/2016, 03:15 AM   #4
CaioTJF
Gangsta
 
CaioTJF's Avatar
 
Join Date: Sep 2012
Location: Rio de Janeiro
Posts: 540
Reputation: 148
Default Re: Pagamento Automático via PagSeguro (PHP+MySQL)

Quote:
Originally Posted by pWesley View Post
Velho, eu te amo cara ... fazia um tempo que eu não mexia com PHP, tinha que revirar a mente pra poder tentar fazer isso mas ... tu me salvou agora cara. Muito obrigado por compartilhar.

@EDIT
Dá pra implementar informações não dá, tipo adicionar mais informações da compra pelo pagseguro?
Sim dá.

https://pagseguro.uol.com.br/v2/guia...tos.html#!rmcl

Nessa página contém todo tipo de informação que pode ser enviada por você.

E aqui você pode vê todos os POST que o PagSeguro envia de volta:

https://pagseguro.uol.com.br/desenvo...de_dados.jhtml

Por exemplo, você deseja pegar o nome de quem comprou, basta getar no $_POST:

$_POST['CliNome'];

Algumas coisas você precisa enviar pelo XML, tipo a referencia, não testei todos.
__________________

IP: 35.196.228.74:2009 / Website: www.gtatorcidas.net



CaioTJF is offline   Reply With Quote
Old 10/05/2016, 01:46 PM   #5
SkyneTSAMP
Big Clucker
 
SkyneTSAMP's Avatar
 
Join Date: Feb 2015
Location: Santa Catarina, Timbó
Posts: 121
Reputation: 6
Default Re: Pagamento Automático via PagSeguro (PHP+MySQL)

Obrigado Amigo !
__________________
Projeto

[BMR] Brasil Mata-Mata XxRevolutioNxX [BR/EN]
__________________
IP: 181.215.131.5:7777
SkyneTSAMP is offline   Reply With Quote
Old 10/05/2016, 03:11 PM   #6
Dolby
High-roller
 
Dolby's Avatar
 
Join Date: Aug 2011
Location: Brazil - GO
Posts: 2,907
Reputation: 742
Default Re: Pagamento Automático via PagSeguro (PHP+MySQL)

Bom, você pediu para supor melhorias, então vamos lá:

PHP Code:
if ($result == "VERIFICADO")
{
   if(
$Status == "Aprovado")
   {
      if(
$Produto_ID == "1"$Cash 1000
SEMPRE que for comparar uma variável com uma string no PHP, use strict equals (===).

Certo, mas qual a diferença?

A equalidade do PHP (==) não leva em conta o tipo de dado. Ou seja, se você fizer
PHP Code:
$nVar 0;
if(
$nVar == "caio"
A condicional vai ser verdadeira. Porque o interpretador vai converter a string caio para inteiro, então ela assume o valor neutro, 0. Já até mesmo fiz uma mega postagem aqui falando sobre isso.

O strict equals leva em consideração o tipo de dado, logo a condição abaixo será falsa:
PHP Code:
$nVar 0;
if(
$nVar === "caio"
Aliás, $Produto_ID realmente é uma string?

Você usou mysqli_* e isto é ótimo! Mas seu código é vulnerável a Inject, posso entrar e me autenticar como pagante. Dê uma lida: How to Prevent

No mais ficou bom.
Dolby is offline   Reply With Quote
Old 10/05/2016, 11:07 PM   #7
ipsLuan
High-roller
 
ipsLuan's Avatar
 
Join Date: Feb 2013
Location: Ilhéus, BA
Posts: 3,959
Reputation: 298
Default Re: Pagamento Automático via PagSeguro (PHP+MySQL)

Muito bom!

@Dolby, a maioria aqui só quer saber se baixar um GameMode pirata, ninguém vai saber usar Inject. Mas, isso é uma falha grave, deveria ser counterada (gíria de LOL).
__________________
A fé na vitória tem que ser inabalável.


Procurando um programador? Achou! Contato através de MP.
ipsLuan is online now   Reply With Quote
Old 10/05/2016, 11:43 PM   #8
Kamper
Guest
 
Posts: n/a
Default Re: Pagamento Automático via PagSeguro (PHP+MySQL)

Quote:
Originally Posted by Dolby View Post
Bom, você pediu para supor melhorias, então vamos lá:

PHP Code:
if ($result == "VERIFICADO")
{
   if(
$Status == "Aprovado")
   {
      if(
$Produto_ID == "1"$Cash 1000
SEMPRE que for comparar uma variável com uma string no PHP, use strict equals (===).

Certo, mas qual a diferença?

A equalidade do PHP (==) não leva em conta o tipo de dado. Ou seja, se você fizer
PHP Code:
$nVar 0;
if(
$nVar == "caio"
A condicional vai ser verdadeira. Porque o interpretador vai converter a string caio para inteiro, então ela assume o valor neutro, 0. Já até mesmo fiz uma mega postagem aqui falando sobre isso.

O strict equals leva em consideração o tipo de dado, logo a condição abaixo será falsa:
PHP Code:
$nVar 0;
if(
$nVar === "caio"
Aliás, $Produto_ID realmente é uma string?

Você usou mysqli_* e isto é ótimo! Mas seu código é vulnerável a Inject, posso entrar e me autenticar como pagante. Dê uma lida: How to Prevent

No mais ficou bom.
MySQLi por si já escapa os caracteres. Não está vulnerável a SQL Injection.
  Reply With Quote
Old 10/05/2016, 11:48 PM   #9
CaioTJF
Gangsta
 
CaioTJF's Avatar
 
Join Date: Sep 2012
Location: Rio de Janeiro
Posts: 540
Reputation: 148
Default Re: Pagamento Automático via PagSeguro (PHP+MySQL)

Thanks Dolby, vou dar um update.

Mas minha dúvida é, como ocorreria o SQL Injection nesse caso?

Todos os dados POST enviado pra page, o script envia para o site do PagSeguro e ele retorna se é verdadeiro ou não, eu só envio pro MySQL.
__________________

IP: 35.196.228.74:2009 / Website: www.gtatorcidas.net



CaioTJF is offline   Reply With Quote
Old 11/05/2016, 12:04 AM   #10
NegoEnsina
Big Clucker
 
Join Date: Jun 2015
Posts: 73
Reputation: 28
Default Re: Pagamento Automático via PagSeguro (PHP+MySQL)

Quote:
Originally Posted by Dolby View Post
Bom, você pediu para supor melhorias, então vamos lá:

PHP Code:
if ($result == "VERIFICADO")
{
   if(
$Status == "Aprovado")
   {
      if(
$Produto_ID == "1"$Cash 1000
SEMPRE que for comparar uma variável com uma string no PHP, use strict equals (===).

Certo, mas qual a diferença?

A equalidade do PHP (==) não leva em conta o tipo de dado. Ou seja, se você fizer
PHP Code:
$nVar 0;
if(
$nVar == "caio"
A condicional vai ser verdadeira. Porque o interpretador vai converter a string caio para inteiro, então ela assume o valor neutro, 0. Já até mesmo fiz uma mega postagem aqui falando sobre isso.

O strict equals leva em consideração o tipo de dado, logo a condição abaixo será falsa:
PHP Code:
$nVar 0;
if(
$nVar === "caio"
Aliás, $Produto_ID realmente é uma string?

Você usou mysqli_* e isto é ótimo! Mas seu código é vulnerável a Inject, posso entrar e me autenticar como pagante. Dê uma lida: How to Prevent

No mais ficou bom.
Tu nem sabe do que falas, filha da puta burro.
NegoEnsina is offline   Reply With Quote
Reply

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
[Off] Problema com entregas digitais (PagSeguro) CaioTJF Português/Portuguese 4 30/04/2016 05:25 PM
[Off] Paypal > Pagseguro s4kuL Português/Portuguese 3 01/04/2016 08:26 AM
[Ajuda] Função HTTP e API pagseguro Colgate Português/Portuguese 3 21/01/2014 05:20 PM
[Ajuda] MySql automatico Don_Speed Português/Portuguese 2 10/07/2013 01:34 PM


All times are GMT. The time now is 11:27 PM.


Powered by vBulletin® Version 3.8.6
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.