Code Monkey home page Code Monkey logo

py-pag's Introduction

Py-Pag

O py-pag é uma pequena lib construída para facilitar a integração de assinaturas manuais no PagSeguro.

O Py-Pag depende:

  • arrow
  • BeautifulSoup4
  • requests
  • Unidecode

Todos instalados automaticamente.

Instalando

Use o seguinte comando para instalar:

pip install py_pag

Começando

Abaixo a descrição de algumas classes e suas funções

Transação simples

Iniciando uma compra de produto pontual

from py_pag import PagSeguroTransaction

# Abaixo crie um objecto de transação
transaction = PagSeguroTransaction('sua_token', 'seu_email', reference='Referencia de seu sistema')

# Crie também o item a ser cobrado, um simples dicionário
item = {
    'id': 'id',  # Nome do item no pagseguro
    'description': 'item description',  # Descrição do item
    'quantity': 1,  # Quantidade de itens vendidos
    'amount': 3.14,  # Valor do item
}

# Define qual o item da transação
transaction.set_item(item)

# Url para você redirecionar seu comprador para o PagSeguro
url = transaction.get_checkout_url()

Criando uma assinatura

Para iniciar uma assinatura no pagseguro use:

from py_pag import PagSeguroSignature

# Abaixo crie um objecto de transação
transaction = PagSeguroSignature('sua_token', 'seu_email', 'nome da asisnatura', 'descricao', price=3.14, reference='Referencia de seu sistema')

# Caso sua assinatura não seja mensal passe também o argumento period com uma das opções:
# WEEKLY, BIMONTHLY, TRIMONTHLY, SEMIANNUALLY, YEARLY

# Url para você redirecionar seu comprador para o PagSeguro
url = transaction.get_checkout_url()

Recebendo notificaçoes

Após qualquer uma das ações acima o pagseguro irá processar e lhe enviar(POST) uma notificação. A notificação do pagseguro é um post contendo notificationCode e notificationType.

O notificationType pode ser Transaction ou Preapproval, para vendas simples e assinaturas respectivamente.

Notificação de transição

Caso seja uma Transaction use:

from py_pag import PagSeguroNotificationHandler

# Instancie o handler passando o código recebido pelo pagseguro.
handler = PagSeguroNotificationHandler('sua_token', 'seu_email', 'notificationCode')

# Use o get_notification_response para obter as informações refentes a essa transação
response = handler.get_notification_response()

# Status da transação
response.status  # 'Paga'
Notificação de assinatura

Caso seja uma assinatura use:

from py_pag import PagSeguroNotificationSignatureHandler

# Instancie o handler passando o código recebido pelo pagseguro.
handler = PagSeguroNotificationSignatureHandler('sua_token', 'seu_email', 'notificationCode')

# Use o get_notification_response para obter as informações refentes a essa transação
response = handler.get_notification_response()

if response.status.lower() == 'active':  # 3 estados possíveis: INITIATED, PENDING e ACTIVE
    # Faça a cobrança, veja abaixo usando o response.code
    # Para mais de uma cobrança salve o response.code em seu banco de dados

Efetuando cobranças

Uma vez que sua assinatura já está ativa podemos começar a fazer as cobranças de acordo com a periodicidade acordada:

from py_pag import PagSeguroSignatureCharger

# Itens a serem cobrados
items = [{
    'id': 'nome',  # Nome do item no pagseguro
    'description': 'item description',  # Descrição do item
    'quantity': 1,  # Quantidade de itens vendidos
    'amount': 3.14,  # Valor do item
}]

# Atenção que o valor cobrado DEVE ser exatamento o mesmo da criação da assinatura
charger = PagSeguroSignatureCharger('sua_token', 'seu_email', 'codigo_da_assinatura', items)

# O charge() irá cobrar ou levantar uma exception com a mensagem do pagseguro
# O retorno consiste do códgio da operação e data da mesma.
# Após uma cobrança bem sucedida o pagseguro irá lhe enviar uma nova notificação indicando que algo foi pago
# Esta notificação será uma transação normal.
codigo_da_operacao, data = charger.charge()

Executando os testes

  • Clone o repositório.
  • Entre na pasta raiz e instale as dependências de dev: pip install -r requirements-dev.txt.
  • Para rodar os testes: py.test.
  • Para obter o coverage: py.test --cov

Implementações futuras

  • Alterar PagSeguroTransaction para trabalhar com multiplos produtos.
  • Criar documentação sobre url_redirect e outras opções.

py-pag's People

Contributors

dependabot[bot] avatar mbodock avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

Forkers

gugajung

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.