-
Notifications
You must be signed in to change notification settings - Fork 70
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Url de notificação não funciona para Assinaturas #44
Comments
A princípio pensei que o problema estava relacionado a minha url, por que estava direcionando para uma porta do meu computador, mas agora fiz o mesmo teste em um novo servidor, e não funcionou |
@rodfersou vc tem como colocar a url que foi gerada, ou pelo menos uma parte dela so para verificar se tem algo errado na montagem da url |
@rochacbruno lendo a documentação, descobri que o problema estava no método que estou usando para criar a subscrição da assinatura. Corrigi com um monkey patch: # -*- coding: utf-8 -*-
from pagseguro import logger
from pagseguro import PagSeguro
from pagseguro.configs import Config
from pagseguro.configs import ConfigSandbox
from pagseguro.utils import parse_date
class PagSeguroPreApprovalResponse:
def __init__(self, xml, config=None):
self.xml = xml
self.config = config or {}
self.code = None
self.date = None
self.errors = None
self.payment_url = None
self.payment_link = None
self.transaction = None
logger.debug(self.__dict__)
self.parse_xml(xml)
def parse_xml(self, xml):
""" parse returned data """
try:
parsed = xmltodict.parse(xml, encoding='iso-8859-1')
except Exception as e:
logger.debug(
'Cannot parse the returned xml \'{0}\' -> \'{1}\''.format(xml, e))
parsed = {}
if 'errors' in parsed:
self.errors = parsed['errors']['error']
return
checkout = parsed.get('preApprovalRequest', {})
self.code = checkout.get('code')
self.date = parse_date(checkout.get('date'))
self.payment_url = self.config.PRE_APPROVAL_PAYMENT_URL % self.code
# this is used only for transparent checkout process
self.transaction = parsed.get('transaction', {})
self.payment_link = self.transaction.get('paymentLink')
def pre_approval_ask_payment(self, **kwargs):
""" create a pagseguro pre approval subscription """
self.data['currency'] = self.config.CURRENCY
self.build_checkout_params(**kwargs)
response = self.post(url=self.config.PRE_APPROVAL_URL)
return PagSeguroPreApprovalResponse(response.content, config=self.config)
Config.PRE_APPROVAL_SUFFIX = Config.VERSION + 'pre-approvals/request'
Config.PRE_APPROVAL_URL = Config.BASE_URL + Config.PRE_APPROVAL_SUFFIX
Config.PRE_APPROVAL_PAYMENT_URL = Config.PAYMENT_HOST + Config.PRE_APPROVAL_SUFFIX + '.html?code=%s'
ConfigSandbox.PRE_APPROVAL_SUFFIX = ConfigSandbox.VERSION + 'pre-approvals/request'
ConfigSandbox.PRE_APPROVAL_URL = ConfigSandbox.BASE_URL + ConfigSandbox.PRE_APPROVAL_SUFFIX
ConfigSandbox.PRE_APPROVAL_PAYMENT_URL = ConfigSandbox.PAYMENT_HOST + ConfigSandbox.PRE_APPROVAL_SUFFIX + '.html?code=%s'
ConfigSandbox.QUERY_PRE_APPROVAL_URL = ConfigSandbox.BASE_URL + ConfigSandbox.VERSION + 'pre-approvals'
PagSeguro.pre_approval_ask_payment = pre_approval_ask_payment Ao invés de checkout uso o método pre_approval_ask_payment. Lembro que estou usando a versão 0.2.1 ainda.. por algum motivo não consegui atualizar para 0.3.0.. o meu buildout não conseguiu baixar essa versão quando testei.. quando tiver mais tempo abro uma nova issue para reportar isso. Com esse código a redireção começou a funcionar. |
Vou deixar a issue aberta por enquanto, e fechar ela quando prover um pull request com as alterações. |
@rodfersou por acaso o erro que você esta recebendo é um que abri na #45 ? |
@rodfersou @leonardocintra o problema de instalacao foi resolvido, agora voce pode tentar instalar o 0.3.1 e por favor veja se o erro continua. valeu! |
@leonardocintra isso! @rochacbruno obrigado! |
@rodfersou en tu implimentacion monkey patch, ese script donde lo pones? O lo usas para crear el URL, estoy un poco confundido |
@nadermx eu usei esse monkey patch na minha aplicação por que estava aprendendo como resolver meu problema. preciso transformar isso em um pull request com correções |
Utilizando a versão 0.2.1 da biblioteca, nem a url de redirecionamento, nem a url de notificação funciona para assinaturas.
The text was updated successfully, but these errors were encountered: