예제 #1
0
 def pagseguro_form_generate_values(self, values):
     pagseguro_tx_values = dict(values)
     pagseguro_tx_values.update({
         'pagseguro_email': self.pagseguro_email_account,
         'pagseguro_token': self.pagseguro_token,
         'amount': format(values['amount'], '.2f')
     })
     if self.environment == 'prod':
         config = {'sandbox': False}
     else:
         config = {'sandbox': True}
     pg = PagSeguro(email=self.pagseguro_email_account,
                    token=self.pagseguro_token,
                    config=config)
     pg.reference_prefix = None
     pg.reference = pagseguro_tx_values['reference']
     pg.items = [
         {
             "id": "0001",
             "description": pagseguro_tx_values['reference'],
             "amount": pagseguro_tx_values['amount'],
             "quantity": 1
         },
     ]
     base_url = self.env['ir.config_parameter'].sudo().get_param(
         'web.base.url')
     pg.redirect_url = base_url + pagseguro_tx_values['return_url']
     _logger.info("Redirect Url: %s" % (pg.redirect_url))
     pg.notification_url = base_url + "/payment/pagseguro/feedback"
     response = pg.checkout()
     _logger.info("Response Errors: %s" % (response.errors))
     pagseguro_tx_values.update({'payment_url': response.payment_url})
     # _logger.info(values['reference'])
     _logger.info("Transaction Values: %s" % (pagseguro_tx_values))
     return pagseguro_tx_values
예제 #2
0
 def pagseguro(self):
     self.payment_option = 'pagseguro'
     self.save()
     if settings.PAGSEGURO_SANDBOX:
         pg = PagSeguro(
             email=settings.PAGSEGURO_EMAIL, token=settings.PAGSEGURO_TOKEN,
             config={'sandbox': settings.PAGSEGURO_SANDBOX}
         )
     else:
         pg = PagSeguro(
             email=settings.PAGSEGURO_EMAIL, token=settings.PAGSEGURO_TOKEN
         )
     pg.sender = {
         'email': self.user.email
     }
     pg.reference_prefix = None
     pg.shipping = None
     pg.reference = self.pk
     for item in self.items.all():
         pg.items.append(
             {
                 'id': item.product.pk,
                 'description': item.product.name,
                 'quantity': item.quantity,
                 'amount': '%.2f' % item.price
             }
         )
     return pg
예제 #3
0
 def pagseguro(self):
     self.payment_option = 'pagseguro'
     self.save()
     #if settings.PAGSEGURO_SANDBOX: #valida para estar no ambiente de sendbox
     pg = PagSeguro(
         email=settings.PAGSEGURO_EMAIL,
         token=settings.PAGSEGURO_TOKEN,
         config={'sandbox': settings.PAGSEGURO_SANDBOX}
     )  #Cria a instancia do pagseguro, passando o email configurado no settings, e o token tabem.
     #else:
     #    pg = PagSeguro(
     #        email=settings.PAGSEGURO_EMAIL, token=settings.PAGSEGURO_TOKEN
     #    )#config sobrepoe a configuração padrao da API
     pg.sender = {
         'email': self.user.email
     }  #informações de quem ta realizando a compra
     pg.reference_prefix = None  #prfixo adicionado junto com o id pedido
     pg.shipping = None  #dados de entrega
     pg.reference = self.pk  #id do pedido
     for item in self.items.all(
     ):  #para cada item de pedido, ele adicioa carrinho
         pg.items.append({
             'id': item.product.pk,
             'description': item.product.name,
             'quantity': item.quantity,
             'amount':
             '%.2f' % item.price  #ele pede o preço em forma de STR
         })
     return pg
예제 #4
0
 def pagseguro(self):
     self.payment_option = 'pagseguro'
     self.save()
     pg = PagSeguro(email=settings.PAGSEGURO_EMAIL,
                    token=settings.PAGSEGURO_TOKEN,
                    config={'sandbox': settings.PAGSEGURO_SANDBOX})
     pg.sender = {'email': self.order.user.email}
     pg.reference_prefix = ''
     pg.shipping = {
         "type": 1,
         "street": "Av Brig Faria Lima",
         "number": 1234,
         "complement": "5 andar",
         "district": "Jardim Paulistano",
         "postal_code": "06650030",
         "city": "Sao Paulo",
         "state": "SP",
         "country": "BRA",
     }
     pg.reference = self.order.pk
     for item in self.order.items.all():
         pg.items.append({
             'id': item.product.pk,
             'description': item.product.name,
             'quantity': item.quantity,
             'amount': '%.2f' % item.price,
             'weight': '1000'
         })
     return pg
예제 #5
0
    def get(self, request, *args, **kwargs):

        try:
            purchase = Purchase.objects.get(pk=self.kwargs.get('pk'))
        except ObjectDoesNotExist:
            return Response('Esse id nao existe.')

        pg = PagSeguro(email=Dsettings.PAGSEGURO_EMAIL,
                       token=Dsettings.PAGSEGURO_TOKEN,
                       config={'sandbox': Dsettings.PAGSEGURO_SANDBOX})
        pg.reference_prefix = None
        pg.shipping = None

        user_id = self.request.user.id
        email = self.request.user.email
        pg.sender = {'email': email}
        pk = self.kwargs.get('pk')
        pg.reference = pk

        cart_id = Purchase.objects.filter(
            id=pk).values('id_cart_id')[0].get('id_cart_id')

        itens = Item.objects.filter(id_cart=cart_id)

        for item in itens:
            obj = Product.objects.filter(id=item.id_product_id).values('price')
            price = obj[0].get('price')
            obj2 = Product.objects.filter(id=item.id_product_id).values('name')
            name = obj2[0].get('name')
            pg.items.append({
                'id': item.id_product_id,
                'description': str(name),
                'quantity': item.quantity,
                'amount': '%.2f' % price
            })
        response = pg.checkout()

        if Purchase.objects.filter(
                id=pk).values('payment_link')[0].get('payment_link') == '-':

            p = Purchase.objects.get(id=pk)
            p.payment_link = response.payment_url
            p.save()
        else:
            return Response(
                Purchase.objects.filter(
                    id=pk).values('payment_link')[0].get('payment_link'))
        return Response(response.payment_url)
예제 #6
0
 def pay_pagseguro(self):
     # import pdb;pdb.set_trace()
     pg = PagSeguro(email="*****@*****.**", token="4194D1DFC27E4E1FAAC0E1B20690B5B5")
     pg.sender = {
         "name": self.user.full_name,
         "email": self.user.email,
     }
     pg.reference_prefix = None
     pg.reference = self.id
     
     for item in self.itens.all():
         pg.add_item(id=item.option.id, description=item.option.title, amount=item.option.new_price, quantity=item.quantity, weight=0)
     # pg.redirect_url = "http://meusite.com/obrigado"
     response = pg.checkout()
     self.code_pagseguro = response.code
     self.save()
     return response.payment_url
예제 #7
0
 def pagseguro(self):
     self.opcao_pagamento = 'pagseguro'
     self.save()
     pg = PagSeguro(email=settings.PAGSEGURO_EMAIL,
                    token=settings.PAGSEGURO_TOKEN,
                    config={'sandbox': settings.PAGSEGURO_SANDBOX})
     pg.sender = {'email': self.user.email}
     pg.reference_prefix = ''
     pg.shipping = None
     pg.reference = self.pk
     for item in self.items.all():
         pg.items.append({
             'id': item.produto.pk,
             'description': item.produto.nome,
             'quantity': item.quantidade,
             'amount': '%.2f' % item.preco
         })
     return pg
예제 #8
0
    def post(self, request, format=None):
        conferencia_pk = request.data.get("conferencia")
        inscricao_pk = request.data.get("inscricao")

        inscricao = Inscricao.objects.get(pk=inscricao_pk,
                                          conferencia_id=conferencia_pk)
        conferencia = inscricao.conferencia

        pg = PagSeguro(
            email=settings.PAGSEGURO_EMAIL,
            token=settings.PAGSEGURO_TOKEN,
        )

        pg.sender = {
            "name": inscricao.nome,
            "area_code": inscricao.ddd,
            "phone": inscricao.cleanned_telefone(),
            "email": inscricao.email,
        }

        pg.shipping = {
            "type": pg.NONE,
            "street": inscricao.endereco,
            "number": inscricao.numero,
            "complement": inscricao.complemento,
            "district": inscricao.bairro,
            "postal_code": inscricao.cep,
            "city": inscricao.cidade,
            "state": inscricao.uf,
            "country": "BRA"
        }

        pg.reference_prefix = "REFID_"
        pg.reference = inscricao.pk

        pg.items = [
            {
                "id": "0001",
                "description": conferencia.titulo,
                "amount": inscricao.valor_total,
                "quantity": 1,
            },
        ]

        url_base = reverse_lazy(
            'home', kwargs={"conferencia": conferencia.titulo_slug})

        redirect_url = "{}{}".format(settings.BASE_URL, url_base)

        pg.redirect_url = redirect_url
        pg.notification_url = settings.NOTIFICATION_URL

        response = pg.checkout()

        inscricao.payment_reference = pg.reference
        inscricao.status = 1
        inscricao.save()

        return Response({
            "code": response.code,
            "transaction": response.transaction,
            "date": response.date,
            "payment_url": response.payment_url,
            "payment_link": response.payment_link,
            "errors": response.errors,
            "pre_ref": pg.reference_prefix,
            "reference": pg.reference,
        })