Skip to content
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

Open
rodfersou opened this issue Sep 20, 2016 · 9 comments
Open

Url de notificação não funciona para Assinaturas #44

rodfersou opened this issue Sep 20, 2016 · 9 comments

Comments

@rodfersou
Copy link

Utilizando a versão 0.2.1 da biblioteca, nem a url de redirecionamento, nem a url de notificação funciona para assinaturas.

@rodfersou
Copy link
Author

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

@rochacbruno
Copy link
Collaborator

@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

@rodfersou
Copy link
Author

rodfersou commented Sep 22, 2016

@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.

@rodfersou rodfersou reopened this Sep 22, 2016
@rodfersou
Copy link
Author

Vou deixar a issue aberta por enquanto, e fechar ela quando prover um pull request com as alterações.

@leonardocintra
Copy link

@rodfersou por acaso o erro que você esta recebendo é um que abri na #45 ?

@rochacbruno
Copy link
Collaborator

@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!

@rodfersou
Copy link
Author

@leonardocintra isso!

@rochacbruno obrigado!

@nadermx
Copy link

nadermx commented Feb 7, 2017

@rodfersou en tu implimentacion monkey patch, ese script donde lo pones? O lo usas para crear el URL, estoy un poco confundido

@rodfersou
Copy link
Author

@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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

4 participants