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)
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)
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)
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)
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)
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)
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)
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)
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)
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)
# -*- 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)