Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Oi pessoal!
Postei em outro tópico a respeito deste problema, mas devo ter postado no lugar errado, pq não obtive resposta.
Estou tentando integrar o pagseguro no Django, mas não estou recebendo o POST do servidor de teste do pagseguro.
Estou enviando através de um form simples na html:
<form target="pagseguro" action="https://pagseguro.uol.com.br/security/webpagamentos/webpagto.aspx" method="post">
<p> Seus dados :</p>
Nome: <input type="text" name="senderName"/>
Telefone: <input type="text" id="id_telefone" name="senderPhone"/>
E-mail: <input type="text" name="senderEmail"/>
<p> Escolha o plano :</p>
<select name="itemId1" />
<option value="">-- Selecione o plano --</option>
{% for p in planos %}
<option value="{{p.cod_plano}}">{{p.nome}}</option>
{% endfor %}
</select>
<input type="hidden" name="receiverEmail" value="suporte@lojamodelo.com.br" />
<input type="hidden" name="tipo" value="CBR" />
<input type="hidden" name="currency" value="BRL" />
<input type="submit" value="Register" />
</form>
Minha função de retorno na views.py é esta:
def retorno_pagseguro(request):
if request.method == 'POST':
# token gerado no painel de controle do PagSeguro
token = '12345699CA2AAAF4599EA697BB2F7FFF'
p = PagSeguro()
retorno = p.processar(token, request.POST)
if retorno == True:
try:
# Dados Pessoais
nome = request.POST.get('CliNome')
print nome
telefone = request.POST.get('CliTelefone')
print telefone
except:
pass
return HttpResponse('OK')
else:
return HttpResponse('Error')
O método processar se encontra na classe Pagamento:
class Pagamento(object):
def _conectar(self, url, params):
query_str = urllib.urlencode(params)
req = urllib2.Request(url, query_str)
f = urllib2.urlopen(req)
conteudo = f.read()
f.close()
return conteudo
def _enviar(self, url, params):
retorno = self._conectar(url, params)
if retorno.lower() == 'verificado':
return True
else:
return False
class PagSeguro(Pagamento):
def processar(self, token, params, url='https://pagseguro.uol.com.br/Security/NPI/Default.aspx'):
if not params:
return False
else:
lista = []
for key in params.keys():
lista.append((key,params[key]))
lista.append(('Comando', 'validar'))
lista.append(('Token', token))
return self._enviar(url, lista)
/applications/core/interface/imageproxy/imageproxy.php?img=http://img153.imageshack.us/img153/6383/printcf.png&key=941322ce0b1d0bd50224230a50c933487a21f7e9ff8b04b4115615c9f8328c0b" alt="printcf.png" />
Sou redirecionado para a página de "Pagamento Processado", clico no botão "Testar retorno automático", sou redirecionado para a url de retorno com a mensagem "OK", mas nada é mostrado no console referente aos dados enviados pelo server de teste para Django.
Estou pesquisando há dias e não consigo documentação atualizada e correta para integrar o pagseguro ao django, muitas vezes porque as informações estão desatualizadas.
Instalei o django-pagseguro e segui as dicas do blog do Gustavo Henrique:
https://github.com/fabiocerqueira/django-pagseguro/
http://blog.gustavohenrique.net/2009/07/integrando-pagseguro-com-django/
Alguém poderia ajudar a obter os dados do retorno automático? É isso que está faltando aqui.
Abraço!
>
Oi pessoal!
Postei em outro tópico a respeito deste problema, mas devo ter postado no lugar errado, pq não obtive resposta.
Estou tentando integrar o pagseguro no Django, mas não estou recebendo o POST do servidor de teste do pagseguro.
Estou enviando através de um form simples na html:
{% for p in planos %} <option value="{{p.cod_plano}}">{{p.nome}}</option> {% endfor %}Minha função de retorno na views.py é esta:
def retorno_pagseguro(request):
if request.method == 'POST':
# token gerado no painel de controle do PagSeguro
token = '12345699CA2AAAF4599EA697BB2F7FFF'
p = PagSeguro()
retorno = p.processar(token, request.POST)
if retorno == True:
try:
# Dados Pessoais
nome = request.POST.get('CliNome')
print nome
telefone = request.POST.get('CliTelefone')
print telefone
except:
pass
O método processar se encontra na classe Pagamento:
class Pagamento(object):
def _conectar(self, url, params):
query_str = urllib.urlencode(params)
req = urllib2.Request(url, query_str)
f = urllib2.urlopen(req)
conteudo = f.read()
f.close()
class PagSeguro(Pagamento):
def processar(self, token, params, url='https://pagseguro.uol.com.br/Security/NPI/Default.aspx'):
if not params:
/applications/core/interface/imageproxy/imageproxy.php?img=http://img153.imageshack.us/img153/6383/printcf.png&key=941322ce0b1d0bd50224230a50c933487a21f7e9ff8b04b4115615c9f8328c0b" alt="printcf.png" />
Sou redirecionado para a página de "Pagamento Processado", clico no botão "Testar retorno automático", sou redirecionado para a url de retorno com a mensagem "OK", mas nada é mostrado no console referente aos dados enviados pelo server de teste para Django.
Estou pesquisando há dias e não consigo documentação atualizada e correta para integrar o pagseguro ao django, muitas vezes porque as informações estão desatualizadas.
Instalei o django-pagseguro e segui as dicas do blog do Gustavo Henrique:
https://github.com/fabiocerqueira/django-pagseguro/
http://blog.gustavohenrique.net/2009/07/integrando-pagseguro-com-django/
Alguém poderia ajudar a obter os dados do retorno automático? É isso que está faltando aqui.
Abraço!
Consegui obter os dados do retorno pelo django-pagseguro, é só trabalhar com os signals dele, não precisa criar view nem mapear na urls.py.
Abraço!