<commit_before># Py-Pagseguro

O py-pagseguro é uma pequena lib construída para facilitar a integraçaõ de assinaturas manuais no [PagSeguro](pagseguro.uol.com.br).

O Py-Pagseguro depende:
* arrow
* BeautifulSoup4
* requests
* Unidecode

## Instalando

Use o seguinte comando para instalar:

`pip install py-pagseguro`

## Começando

Iniciando uma compra de produto pontual

```python
from py-pagseguro 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()
```

Para iniciar uma assinatura no pagseguro use:


```python
from py-pagseguro 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()
```

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.

Caso seja uma Transaction use:

```python
from py-pagseguro 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'
```


Caso seja uma assinatura use:


```python
from py-pagseguro 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
```

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


```python
from py-pagseguro import PagSeguroSignatureCharger
<commit_msg>Changes py_pagseguro to py_pag in readme<commit_after># Py-Pag

O py-pag é uma pequena lib construída para facilitar a integraçaõ de assinaturas manuais no [PagSeguro](pagseguro.uol.com.br).

O Py-Pag depende:
* arrow
* BeautifulSoup4
* requests
* Unidecode

## Instalando

Use o seguinte comando para instalar:

`pip install py_pag`

## Começando

Iniciando uma compra de produto pontual

```python
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()
```

Para iniciar uma assinatura no pagseguro use:


```python
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()
```

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.

Caso seja uma Transaction use:

```python
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'
```


Caso seja uma assinatura use:


```python
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
```

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


```python
from py_pag import PagSeguroSignatureCharger

{'fraction_non_alphanumeric': 0.07062652563059398, 'fraction_numerical': 0.0029292107404393815, 'mean_word_length': 5.349173553719008, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1387291', 'n_tokens_mistral': 2061, 'n_tokens_neox': 1960, 'n_words': 697}