Ejemplo n.º 1
0
 def ready(self):
     import signals
     from api.payment import pagseguro_load_signal
     post_save.connect(receiver, sender='parking.Rental')
     post_save.connect(receiver, sender='parking.Bicycle')
     post_save.connect(receiver, sender='parking.Payment')
     notificacao_recebida.connect(pagseguro_load_signal)
Ejemplo n.º 2
0
    def test_notificacao_recebida(self):
        from pagseguro.signals import notificacao_recebida

        # load signal function
        def load_signal(sender, transaction, **kwargs):
            self.assertEqual(transaction['status'], '1')

        # mock requests
        responses.add(
            responses.GET,
            NOTIFICATION_URL + '/{0}'.format(self.notificationCode),
            body=notification_response_xml,
            status=200,
        )

        # connect to signal
        notificacao_recebida.connect(load_signal)

        # load notification
        response = self.client.post(self.url, self.post_params)
        self.assertEqual(response.status_code, 200)
Ejemplo n.º 3
0
    def test_notificacao_recebida(self):
        from pagseguro.signals import notificacao_recebida

        # load signal function
        def load_signal(sender, transaction, **kwargs):
            self.assertEqual(
                transaction['status'], '1'
            )

        # mock requests
        httpretty.register_uri(
            httpretty.GET,
            NOTIFICATION_URL + '/{0}'.format(self.notificationCode),
            body=notification_response_xml,
            status=200,
        )

        # connect to signal
        notificacao_recebida.connect(load_signal)

        # load notification
        response = self.client.post(self.url, self.post_params)
        self.assertEqual(response.status_code, 200)
Ejemplo n.º 4
0
        Transaction,
        verbose_name='Transação'
    )

    status = models.CharField(
        'Status',
        max_length=20,
        choices=TRANSACTION_STATUS_CHOICES,
        help_text='Status da transação.'
    )

    date = models.DateTimeField(
        'Data'
    )

    def __str__(self):
        return '{0} - {1} - {2}'.format(
            self.transaction, self.status, self.date
        )

    class Meta:
        ordering = ['date']
        verbose_name = 'Histórico da transação'
        verbose_name_plural = 'Históricos de transações'


# Signals
if PAGSEGURO_LOG_IN_MODEL:
    checkout_realizado.connect(save_checkout)
    notificacao_recebida.connect(update_transaction)
Ejemplo n.º 5
0
        verbose_name = 'Transação'
        verbose_name_plural = 'Transações'


@python_2_unicode_compatible
class TransactionHistory(models.Model):

    transaction = models.ForeignKey(Transaction, verbose_name='Transação')

    status = models.CharField('Status',
                              max_length=20,
                              choices=TRANSACTION_STATUS_CHOICES,
                              help_text='Status da transação.')

    date = models.DateTimeField('Data')

    def __str__(self):
        return '{0} - {1} - {2}'.format(self.transaction, self.status,
                                        self.date)

    class Meta:
        ordering = ['date']
        verbose_name = 'Histórico da transação'
        verbose_name_plural = 'Históricos de transações'


# Signals
if PAGSEGURO_LOG_IN_MODEL:
    checkout_realizado.connect(save_checkout)
    notificacao_recebida.connect(update_transaction)
Ejemplo n.º 6
0

def pagseguro_notificacao_recebida(sender, transaction, **kwargs):
    from nucleo.models import Doacao
    from pagseguro.models import Transaction

    transaction_instance = Transaction.objects.get(
        code=transaction.get('code'))
    doacao = Doacao.objects.get(id=int(transaction_instance.reference))
    doacao.pagamento.status = transaction_instance.status
    doacao.pagamento.save(update_fields=['status'])
    if not doacao.usuario and not doacao.doador:
        email = transaction.get('sender').get('email')
        nome = transaction.get('sender').get('name')

        try:
            doacao.usuario = Usuario.objects.get(email=email)
            doacao.save(update_fields=['usuario'])
        except ObjectDoesNotExist:
            pass

        if not doacao.usuario:
            from nucleo.models import Doador

            doacao.doador, created = Doador.objects.get_or_create(nome=nome,
                                                                  email=email)
            doacao.save(update_fields=['doador'])


notificacao_recebida.connect(pagseguro_notificacao_recebida)
Ejemplo n.º 7
0
def sandbox(request):
    print("sandbox")
    c = request.GET.get('pk', None)
    qnt = request.GET.get('qnt_passagens', None)
    carrinho = get_object_or_404(Carrinho, pk=c)
    car = carrinho.total
    car = '{:.2f}'.format(car)
    pagseguro_api = PagSeguroApiTransparent()
    data = pagseguro_api.get_session_id()
    session_id = data['session_id']

    if request.method == 'POST':
        print("post")
        bandeira = request.POST.get('brand')
        nome = request.POST.get('username')
        token = request.POST.get('token')
        hashPagseguro = request.POST.get('hash')
        api = PagSeguroApiTransparent()
        descricao = carrinho.viagem.destino

        item1 = PagSeguroItem(id=c,
                              description=descricao,
                              amount=car,
                              quantity=1)
        api.add_item(item1)

        sender = {
            'name': 'Jose Comprador',
            'area_code': 92,
            'phone': 56273440,
            'email': '*****@*****.**',
            'cpf': '22111944785',
        }
        api.set_sender(**sender)

        shipping = {
            'street': "Av. Brigadeiro Faria Lima",
            'number': 1384,
            'complement': '5o andar',
            'district': 'Jardim Paulistano',
            'postal_code': '01452002',
            'city': 'Sao Paulo',
            'state': 'SP',
            'country': 'BRA',
        }
        api.set_shipping(**shipping)

        api.set_payment_method('creditcard')
        data = {
            'quantity': 1,
            'value': car,
            'name': 'Jose Comprador',
            'birth_date': '27/10/1987',
            'cpf': '22111944785',
            'area_code': 11,
            'phone': 56273440,
            'no_interest_quantity': 5
        }
        api.set_creditcard_data(**data)
        billing_address = {
            'street': 'Av. Brig. Faria Lima',
            'number': 1384,
            'district': 'Jardim Paulistano',
            'postal_code': '01452002',
            'city': 'Sao Paulo',
            'state': 'SP',
            'country': 'BRA',
        }
        api.set_creditcard_billing_address(**billing_address)
        api.set_creditcard_token(token)

        api.set_sender_hash(hashPagseguro)

        data = api.checkout()

        print("data", data)

        if data['success'] is False:
            raise CheckoutException(data['message'])

        print(notificacao_recebida.connect(load_signal))

        return HttpResponse(notificacao_recebida.connect(load_signal))

    context = {
        'session': session_id,
        'cart': carrinho,
        'qnt': qnt,
    }
    return render(request, 'dev_radioanori/sandbox-pagamento.html', context)
Ejemplo n.º 8
0
        if hacker.exists() and trans.exists():
            hacker = hacker.first()
            trans = trans.first()
            hacker.transactions.add(trans)
            if transaction['status'] not in ['3', '4']:
                hacker.checked_in = False
                hacker.confirmed = False
                hacker.save()
                cls.cycle_waitlist()
            hacker.profile.trigger_update()

    def __str__(self):
        return f'Hacker {self.profile}'


def update_hacker(sender, **kwargs):
    # Updates profile
    kwargs['instance'].profile.trigger_update()


def delete_hacker(sender, **kwargs):
    profile = kwargs['instance'].profile
    profile.hacker = None
    profile.trigger_update()
    profile.hacker = kwargs['instance']


post_save.connect(update_hacker, sender=Hacker)
pre_delete.connect(delete_hacker, sender=Hacker)
notificacao_recebida.connect(Hacker.handle_payment_notification)
Ejemplo n.º 9
0
                             verbose_name='usuário',
                             related_name='purchases')
    cart = models.ForeignKey('Cart',
                             on_delete=models.CASCADE,
                             verbose_name='carrinho',
                             related_name='purchases')
    price = models.DecimalField('preço', max_digits=10, decimal_places=2)
    status = models.CharField('status da compra',
                              max_length=16,
                              default='pending',
                              choices=PURCHASE_STATUS_CHOICES)
    pagseguro_redirect_url = models.URLField('url do pagseguro',
                                             max_length=255,
                                             blank=True)
    objects = PurchaseManager()

    def __str__(self):
        return str(self.id)

    class Meta:
        ordering = ['-created_at']
        verbose_name = 'compra'
        verbose_name_plural = 'compras'


def update_purchase_status(sender, transaction, **kwargs):
    Purchase.objects.update_purchase_status(transaction)


notificacao_recebida.connect(update_purchase_status)
Ejemplo n.º 10
0
    from keepconfig.models import Cliente
    cliente = Cliente.objects.get(pk=codigo_cliente)

    requests.post("%s/atualiza-credito/" % cliente.url,
                  data={
                      'recarga_id': recarga_id,
                      'token': '92817488F00646D0$sso09asada'
                  })


def load_signal(sender, transaction, **kwargs):

    status = transaction['status']
    reference = transaction['reference'].split('-')

    codigo_cliente = reference[0]
    recarga_id = reference[1]

    recarga = Recarga.objects.get(pk=recarga_id)
    recarga.code = transaction['code']

    if status == '3' or status == '4':

        enviar_credito(codigo_cliente, recarga_id)
        recarga.status_id = 2

    recarga.save()


notificacao_recebida.connect(load_signal)
Ejemplo n.º 11
0
# -*- coding: utf-8 -*-

from django.shortcuts import get_object_or_404
from pagseguro.signals import notificacao_recebida
from .usernotification import mail_confirmed_inscription
from .models import CompetitorsResponsible


def update_status(sender, transaction, **kwargs):
    reference = int(transaction['reference'])
    payment_status = str(transaction['status'])
    obj = get_object_or_404(CompetitorsResponsible, pk=reference)
    obj.status = payment_status
    if payment_status == '3' or payment_status == '4':
        obj.paid = True
        mail_confirmed_inscription(obj.name, obj.email, 'paid')
    else:
        obj.paid = False
    obj.save()


notificacao_recebida.connect(update_status)