DGmike

DGmike

Calma! não entre em pânico! Amanhã (talvez) tem novo post…

Você está aqui: dgmike » Arquivos para pagseguro

  • Home
  • Guia Rápido jQuery
  • Códigos prontos
    • PHP: Função __auloload()
    • Classe sqlsimples e sql – PHP
    • Bancos, bancos e mais bancos…
  • PagSeguro
  • Artigos
    • JavaScript (parte 1)
  • Quem é dgmike?

PagSeguro – Gravando log com ASP

Posted in pagseguro by DGmike
Sep 08 2010
TrackBack Address.

Este final de semana precisei implementar um sistema web com PagSeguro usando ASP. Acontece que a biblioteca atual, desenvolvida por um colega da visie, não possui um feedback em log para saber o que está acontecendo no servidor. Portando, o usuário fica sem saber se realmente o código que ele implementou está funcionando com o PagSeguro.

Sempre, sempre, sempre grave log do que acontece no seu servidor

Log de resposta mostrando o que aconteceu no servidor no retorno automático do PagSeguro

Chegou até mim um report de erro sobre a linha 55 do arquivo de retorno automático do PagSeguro para ASP:

55
if Request.Form.count > 0 then

Dizendo que o problema era que Request.Form.Count sempre dava zero. Tive uma idéia do que era, mas como sou programador, precisei fazer testes e comprovar minha teoria. Bom, mão à obra!

Como sou usuário de linux assíduo e não estava com vontade nenhuma de formatar meu notebook apenas para fazer testes, precisei procurar um hosting de ASP gratuito. Me deparei com o somee.com e criei minha conta onde comecei a escrever algumas linhas de html. O formulário do Carrinho Próprio para ser mais exato.

Logo logo chegou a hora de experimentar o retorno automático. Bom, não conheço a fundo a sintaxe da linguagem ASP[bb], procurei saber o que estava acontecendo com base na biblioteca PagSeguro desenvolvida pela Visie. Percebi que seria difícil pois a mesma não gravava log do que acontecia. Então fui procurar como fazer para escrever um arquivo de texto na linguagem. Após alguns minutos fazendo pesquisa na internet me deparei com uma função que adaptei para meu caso.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<%
function WriteToFile(Contents, Append)
    on error resume next
    if Append = true then
       iMode = 8
    else
       iMode = 2
    end if
    ' A proxima linha é referente ao local do arquivo de log, altere aqui
    FileName = "D:\caminho\para\o\meu\log.txt"
    set oFs = server.createobject("Scripting.FileSystemObject")
    set oTextFile = oFs.OpenTextFile(FileName, iMode, True)
    oTextFile.Write Contents & vbCrLF
    oTextFile.Close
    set oTextFile = nothing
    set oFS = nothing
end function
%>

Depois, apenas fiz um include e alterei um pouco a biblioteca, afim de gravar no log a informação necessária:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
<%
' Primeiro, fiz o include do arquivo do gravalog.asp
%>
<!--#include file="gravalog.asp"-->
<%
response.ContentType = "text/HTML"
response.Charset = "ISO-8859-1"
 
' Log para informar que alguém chegou na página, seja usuário ou robo do PagSeguro
WriteToFile "Chegou ate a url de retorno.asp", True
 
Dim TOKEN
 
'TOKEN = "cole aqui o token do vendedor"
 
timeout = 20  'Timeout em segundos
 
function notificationPost()
 
	postdata = "Comando=validar&Token=" & TOKEN
 
	For each x In Request.Form
		valued = clearStr(request.Form(x))
		postdata = postdata & "&" & x & "=" & valued
	Next
 
	notificationPost = verify(postdata)
 
end Function
 
function clearStr(str)
 
	str = replace(str, "'","\'")
	clearStr = str
 
end function
 
function verify(data)
 
	strUrl = "https://pagseguro.uol.com.br/pagseguro-ws/checkout/NPI.jhtml"
 
	Set xmlHttp = Server.Createobject("MSXML2.ServerXMLHTTP")
 
	xmlHttp.Open "POST", strUrl, False
	xmlHttp.setRequestHeader "User-Agent", "asp httprequest"
	xmlHttp.setRequestHeader "content-type", "application/x-www-form-urlencoded"
	xmlHttp.setRequestHeader "content-length", Len(data)
	xmlHttp.Send(data)
 
	retorno = xmlHttp.responseText
 
	xmlHttp.abort()
 
	set xmlHttp = Nothing
 
	verify = retorno
 
end function
 
' Nesta área, mandei gravar os dados de GET para saber o que está acontecendo
WriteToFile "Dados recebidos:", True
WriteToFile "GET", True
WriteToFile Request.Querystring, True
 
' Agora, gravando os dados que chegaram via POST
postdata = ""
For each x In Request.Form
	valued = clearStr(request.Form(x))
	postdata = postdata & "&" & x & "=" & valued
Next
 
WriteToFile "POST", True
WriteToFile "Total de fields: " & Request.Form.Count, True
WriteToFile postdata, True
 
 
if Request.Form.count > 0 then
	result = notificationPost()
 
	if Request.Form("TransacaoID") <> empty then
		transacaoID = Request.Form("TransacaoID")
	Else
		transacaoID = ""
	end If
 
	' Agora ficou fácil, se chegou via POST, o script irá verificar se ele veio do PagSeguro
	' e gravará no log VERIFICADO ou FALSO
	WriteToFile result, True
	WriteToFile "", True
	WriteToFile "---", True
	WriteToFile "", True
 
	if result = "VERIFICADO" then
		'O post foi validado pelo PagSeguro.
	elseif result = "FALSO" then
		'O post não foi validado pelo PagSeguro.
	else
		'Erro na integração com o PagSeguro.
	end if
 
else
	' POST não recebido, indica que a requisição é o retorno do Checkout PagSeguro.
	' No término do checkout o usuário é redirecionado para este bloco.
	%>
 
    <h3>Obrigado por efetuar a compra.</h3>
 
    <%
end if
%>

O retorno que eu peguei no arquivo de log foi uma informação que até então eu já esperava. A biblioteca está correta então o problema era outro… Veja o log na íntegra, com o POST do PagSeguro e o retorno do usuário à página, após efetuar o pagamento.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Chegou ate a url de retorno.asp
Dados recebidos:
GET
 
POST
Total de fields: 34
&VendedorEmail=mike@visie.com.br&CliNumero=apto 030&CliBairro=Santana&NumItens=2&ProdExtras_1=0,00&ProdExtras_2=0,00&TransacaoID=D5AE7B12E7F4485D8F3B8AA634A46AF6&CliCidade=SAO PAULO&Referencia=NUMALUCO&TipoFrete=FR&ProdID_1=1&Extras=0,00&ProdID_2=2&ValorFrete=0,00&Anotacao=&ProdQuantidade_1=2&ProdQuantidade_2=2&DataTransacao=04/09/2010 21:37:38&CliEstado=SP&CliTelefone=12 21010900&TipoPagamento=Boleto&StatusTransacao=Aguardando Pagto&CliNome=Angelo dos Santos&CliComplemento=garagem 200&CliCEP=02021030&ProdDescricao_1=Carrinho&ProdValor_1=2,70&ProdFrete_1=0,00&ProdDescricao_2=Boneca&ProdValor_2=14,30&ProdFrete_2=0,00&CliEmail=angelo@santos.com.br&CliEndereco=RUA ALUISIO AZEVEDO&Parcelas=1
VERIFICADO
 
---
 
Chegou ate a url de retorno.asp
Dados recebidos:
GET
 
POST
Total de fields: 0
 
Chegou ate a url de retorno.asp
Dados recebidos:
GET
 
POST
Total de fields: 0

O que consegui ver com os dados recolhidos é que o atributo Request.Form.count só é válido para dados que chegam via POST, caso o usuário chege até a página através do método GET, ou seja, o usuário escrever a url “meusite.com.br/retorno.asp” no browser a variável Request.Form.count sempre será zero. Então, podemos concluir que o report na verdade eram testes equivocados do desenvolvedor que não estava conseguindo entender o que acontece no retorno automático de dados do PagSeguro. Que na verdade os testes devem ser feitos online e em segundo plano.

Em minhas palestras, deixo em claro que o robô de NPI envia um POST em segundo plano. Mas realmente este não é um conceito fácil de aprender. Para quem está começando a desenvolver com o retorno automático do PagSeguro sempre aconselho a ler os tutoriais do próprio PagSeugro, da Visie e minha área separada neste blog sobre PagSeguro. Bem, fica a dica para os desenvolvedores em ASP. SEMPRE GRAVE LOG! :D

Ps.: Vou fazer um fork da versão desenvolvida pela visie e enviar para eles a alteração com a gravação de logs assim que possível :D

No Comments yet »
Tagged as: asp, pagseguro, retorno automático

Frete com PagSeguro: simples!

Posted in Tutorial, pagseguro by DGmike
Feb 24 2010
TrackBack Address.

Eu participo do Fórum iMasters onde de vez em quando publico algumas informações e dicas sobre PagSeguro. E também respondo alguns e-mail sobre dúvidas e perguntas sobre os meios de integração com a plataforma. Um desses e-mail foi sobre cálculo de frete. A resposta foi tão satisfatória que decidi escrevê-la no fórum do iMasters e publicá-la aqui.

Calculo de Frete usando o PagSeguro

Calculo de Frete usando o PagSeguro

As lojas normalmente tem um sistema de cálculo de frete próprio como FEDEX ou mesmo usando uma API própria que conecta nos correios. Daí você faz um carrinho de compras onde indica um frete para o cliente e você quer que o PagSeguro use esse valor de frete que você passou. (ao invés de usar o cálculo do PagSeguro)

Para resolver esse problema configure o frete no PagSeguro da seguinte forma: Frete adicional com valor fixo com valor fixo definido para zero. Passe o valor de frete com o valor que a loja calculou apenas para o primeiro item.

Para entender melhor ou simplesmente ver quais são as outras opções possíveis, veja a matéria original no fórum do iMasters.

3 Comments »
Tagged as: ajuda, artigo, correios, encomenda, frete, pac, pagseguro, sedex, Tutorial

Palestra PagSeguro na Impacta

Posted in Programação, Semântica, Tecnologia, Trabalho, eventos, html, icephp, pagseguro, php, sql by DGmike
Feb 05 2010
TrackBack Address.

No sábado passado realizei uma palestra na Impacta sobre como implementar uma loja virtual do nada com ajuda do PagSeguro da UOL. Esta palestra já está na terceira versão, eu já a apresentei no PHP-Minas e PHPConference no ano passado. Eu sempre dou um upgrade entre uma apresentação e outra ou corto coisas que não são importantes, mas o conteúdo é basicamente o mesmo.

Foram abordados os temas controle de versão, PDO, Frameworks, motivação, KISS (keep it simple, stupid!) e desenvolvimento ágil.

Eu gosto muito dessa palestra em particular porque demonstra como você pode (e deve) ter sistemas grandes implementados com poucas linhas de código, bastando usar a essência do PHP. Hoje o PHP pode ser considerado uma linguagem bem estável e com grandes recursos que em muitos casos usar um Framework completo é algumas vezes perda de tempo, valendo mais a pena usar a essência da linguagem.

Sala cheia (duas) na palestra sobre PagSeguro na Impacta

Sala cheia (duas) na palestra sobre PagSeguro na Impacta

Também gosto pra caramba de implementar PagSeguro em palestras por ser simples. Em menos de vinte minutos explicativos é possível demonstrar como implementar PagSeguro com direito a retorno automático e dicas de segurança na hora de implementar. É muito satisfatório ver o quanto é rápido, simples e fácil implementar vários meios de pagamento de uma só vez. Com a segurança de “pishing”, fraude, reembolso e muitas outras vantagens que o PagSeguro disponibiliza.

A palestra esteve bem cheia, foram necessárias duas salas e uma conexão de áudio e vídeo para que todos possam ver a palestra. Dentre o pessoal consegui ver o @caferrari – dono do projeto vortice framework, e o @rodrideme – ex-funcionário da Visie e sua namorada @alazanscarol. Muito bom ver esse pessoal.

Enfim a palestra foi ótima e o código-fonte do projeto está no trac para qualquer um estudar. Para ver a palestra, basta vê-la no SlideShare. Espero que tenha mais palestras como esta pois acredite em mim, não é a mesma coisa assistir a palestra e vê-la no SlideShare, é completamente diferente.

Da argila ao forte: como desenvolver uma loja com PagSeguro
View more presentations from Michael Castillo Granados.

5 Comments »
Tagged as: controle de versão, desenvolvedor, ecommerce, ice-baby, impacta, implementação, loja, pagseguro, palestra, pdo, php, subversion, SVN, trac

O PagSeguro mudou a URL de retorno automático, e agora?

Posted in Chrome, Cotidiano, Firefox, Internet Explorer, Navegadores, Programação, Semântica, Tecnologia, Trabalho, Tutorial, eventos, jQuery, javascript, pagseguro, php, plugin, python, yui by DGmike
Nov 02 2009
TrackBack Address.

Nesta sexta-feira, dia 30 de outubro, o PagSeguro mudou a sua homepage e com ela muitas coisas novas aconteceram. Inclusive rolou uma palestra para 70 pessoas do twitter que acompanharam as mudanças do Twitter. A palestra foi ministrada pelo Dennis Ferreira e pela Valéria Santos. Pessoas que tive a oportunidade de conhecer de perto e eles são pessoas responsáveis e estão conscientes das mudanças e do impacto que esta mudança causa.

PagSeguro - Uma empresa UOL

PagSeguro - Uma empresa UOL

Tem bastante gente falando sobre as novidades do novo site do PagSeguro por aí, então se quiser saber o que exatamente, recomendo os slides da palestra e uma busca no oráculo.

Mas, e na parte de códigos? O que muda? Você precisa atualizar seus códigos para essa nova plataforma? A resposta é simples e óbvia: NADA. Sim você não precisa atualizar seu código correndo achando que sua URL mudou. O PagSeguro deixou de ser implementado em ASP e passou a ser implementado em JAVA, o que deixou a aplicação muito mais robusta e segura, com isso a URL do retorno automático mudou. No site do PagSeguro eles indicam uma nova URL para o retorno automático ( https://pagseguro.uol.com.br/pagseguro-ws/checkout/NPI.jhtml ) mas a URL anterior continua funcionando normalmente e continuará por um longo tempo.

O pessoal do PagSeguro fez todas as alterações no seu sistema e antes de por no ar fez uma longa bateria de testes e só foi para o ar após verificar se todas as bibliotecas oficiais continuavam funcionando normalmente. Então, as URL de retorno automático continuará funcionando normalmente. Com o passar do tempo, é óbvio que a URL anterior morra, mas isso acontecerá muito tempo depois, até perceberem que ninguém mais utiliza a URL antiga.

A mudança vai ser longa e sutil, com o tempo iremos alterar todos os scripts para a nova URL, mas você não precisa sair desesperado para trocar suas URLs. O PagSeguro pensou bem nisso quando alterou a url de retorno automático. Eu mesmo fiz testes hoje de tarde para comprovar isso, já que recebi algumas dúvidas de alguns clientes e algumas pessoas reclamaram disso no twitter. Portanto, não se preocupe, você não precisa alterar nada no seu script de retorno automático do PagSeguro.

8 Comments »
Tagged as: Code, código, integração, javascript, novo pagseguro, pagseguro, php, python, rails, retorno automático, RoR, ruby on rails, Tecnologia, url

PagSeguro, o que aconteceu por aqui

Posted in pagseguro by DGmike
Oct 13 2009
TrackBack Address.

Algumas matérias sobre PagSeguro que passaram no meu blog são muito interessantes para serem esquecidas no meio de tantos POSTs que eu escrevo, então decidi fazer um review do que rolou por aqui durante esse tempo todo.

  • [2010-09-08 06:36:14] PagSeguro – Gravando log com ASP
  • [2010-02-24 11:18:53] Frete com PagSeguro: simples!
  • [2010-02-05 07:08:48] Palestra PagSeguro na Impacta
  • [2009-11-02 17:34:03] O PagSeguro mudou a URL de retorno automático, e agora?
  • [2009-10-07 14:35:57] Verifique o retorno automático, sempre!
  • [2009-10-06 05:08:34] [Post rápido] PHP-MG
  • [2009-09-15 13:41:59] [PagSeguro] O campo status
  • [2009-06-19 13:02:09] [PagSeguro] Faça log do retorno automático
  • [2009-04-20 23:25:52] PHP+PagSeguro = Loja virtual de downloads
  • [2009-04-03 07:18:59] Campo DataTransacao no retorno do PagSeguro
  • [2009-02-17 14:00:00] Loja PagSeguro usando JavaScript

2 Comments »
Tagged as: pagseguro
Next page »

Categorias

  • Cotidiano  (132)
    • Amigos  (16)
    • Dia-a-dia  (33)
    • Diversão  (18)
    • Games  (1)
    • Não categorizado  (26)
  • Design  (15)
    • Ilustração  (6)
    • Imagem  (8)
    • Inspiração  (5)
    • Vetorial  (5)
  • eventos  (10)
    • PHP Conference  (3)
  • flash  (4)
  • Navegadores  (22)
    • Chrome  (6)
    • extensions  (11)
    • Firefox  (18)
    • Internet Explorer  (6)
  • pagseguro  (13)
  • Programação  (106)
    • CSS  (20)
    • html  (7)
    • javascript  (36)
      • jQuery  (7)
      • yui  (2)
    • php  (44)
      • icephp  (4)
    • plugin  (3)
    • python  (5)
    • sql  (9)
    • tableless  (18)
    • wordpress  (2)
    • xHTML  (23)
  • Tecnologia  (70)
    • Semântica  (16)
    • Tutorial  (25)
    • video  (8)
      • video-tutorial  (5)
    • Windows  (4)
  • Trabalho  (33)
    • cases  (4)

Tags

ajax artigo banco de dados biblioteca blog browser classe CSS data Design Dia-a-dia dinheiro evento eventos Firefox framework google html icephp internet Internet Explorer javascript jQuery loja mysql opera pagseguro palestra php plugin Programação python retorno automático simples site solução sql tableless Tecnologia Trabalho Tutorial twitter visie web wordpress

Arquivo

SlideSare

Últimos Posts

  • PagSeguro – Gravando log com ASP
  • Vá com calma
  • Vírgula em html5 e css3
  • Youtube e HTML5, agora ficou mais fácil
  • Novo emprego!

Tags

ajax artigo banco de dados biblioteca blog browser classe CSS data Design Dia-a-dia dinheiro evento eventos Firefox framework google html icephp internet Internet Explorer javascript jQuery loja mysql opera pagseguro palestra php plugin Programação python retorno automático simples site solução sql tableless Tecnologia Trabalho Tutorial twitter visie web wordpress

Conteúdo

  • Artigos
    • JavaScript (parte 1)
  • Códigos prontos
    • Bancos, bancos e mais bancos…
    • Classe sqlsimples e sql – PHP
    • PHP: Função __auloload()
  • Guia Rápido jQuery
  • PagSeguro
  • Quem é dgmike?
PagSeguro Powered by WordPress | “Blend” from Spectacu.la WP Themes Club