Source code for pagseguro
# -*- coding: utf-8 -*-
from pagseguro.api.v2.payment import Payment as PaymentV2
[docs]class Payment(object):
'''
Esta é a classe principal do PagSeguro-Python. Todo o processo de pagamento é
realizado através dela.
O mínimo necessário para fazer uma solicitação de pagamento é:
- Criar uma instância de Payment passando o seu email e token.
- Adicionar um ou mais itens.
- Chamar o método request()
- Ler o atributo payment_url para obter a URL para a qual o comprador deve
ser redirecionado
Mas é possível também definir outros atributos:
.. autofunction:: pagseguro.api.v2.payment.Payment
Exemplos:
>>> payment = Payment(email=local_settings.PAGSEGURO_ACCOUNT_EMAIL, token=local_settings.PAGSEGURO_TOKEN)
>>> payment.add_item(item_id=u'id-do-item-1', description=u'Desc. do produto', amount=7, quantity=2)
>>> payment.add_item(item_id=u'id-do-item-2', description=u'Um outro produto', amount=24.1, quantity=2)
>>> payment.set_client(name=u'Adam Yauch', phone_area_code=11, phone_number=12341234, cpf='93537621701')
>>> payment.set_shipping(cost=1.2)
>>> payment.request()
>>> url = payment.payment_url
'''
@staticmethod
def _payment_factory(version=2, **kwargs):
if version == 2:
return PaymentV2(**kwargs)
else:
raise NotImplementedError()
def __init__(self, **kwargs):
self._payment = self._payment_factory(**kwargs)
def add_item(self, *args, **kwargs):
'''
Método proxy para a classe que implementa o método add_item na
versão da API escolhida
'''
return self._payment.add_item(*args, **kwargs)
def set_client(self, *args, **kwargs):
'''
Método proxy para a classe que implementa o método set_client na
versão da API escolhida
Exemplo:
>>> payment = Payment(email=local_settings.PAGSEGURO_ACCOUNT_EMAIL, token=local_settings.PAGSEGURO_TOKEN)
>>> payment.set_client(name=u'Adam Yauch', phone_area_code=11)
'''
return self._payment.set_client(*args, **kwargs)
def set_shipping(self, *args, **kwargs):
'''
Método proxy para a classe que implementa o método set_shipping na
versão da API escolhida
'''
return self._payment.set_shipping(*args, **kwargs)
def request(self):
''' Método proxy para a classe que implementa o método request na
versão da API escolhida
:returns: PaymentResponse object
'''
return self._payment.request()
@property
def response(self):
''' Objeto com resposta à requisição '''
return self._payment.response
@property
def payment_url(self):
''' URL para redirecionar o usuário para completar o pagamento '''
return self._payment.payment_url()