Pular para conteúdo

Transações

Resultado das transações

Os possíveis resultados de uma transação são definidos pelas seguintes regras:

  • success (Sucesso)

    • Todas as credenciais (dados da conta e cartão) são válidas.

    • O valor total da compra é menor ou igual ao saldo disponível (balance).

  • failure (Falha)

    • Pelo menos uma credencial é inválida (ex.: CPF incorreto, CVV errado).

    • O valor da compra é maior que o saldo (balance).

  • pending (Pendente)

    • A bandeira do cartão (card_flag) é definida como OTHER.

Como realizar uma transação

Para realizar uma transação utilizando o SDK de pagamento, siga os passos abaixo:

Paso 1. Preparação dos Dados

  1. Escolha uma seed (ou crie um conta e cartão) de acordo com o tipo de transação desejada.

  2. Colete as informações do cartão necessárias para a transação:

    • cpf: CPF do titular do cartão (obrigatório se cnpj não for informado).

    • cnpj: CNPJ do titular do cartão (obrigatório se cpf não for informado).

    • card_number: Número do cartão (máximo de 16 dígitos).

    • validity: Data de validade no formato MM/AA (ex: 12/24).

    • cvv: Código de segurança do cartão (3 dígitos).

    • card_holder_name: Nome do titular do cartão, conforme registrado.

Passo 2: Preparação dos Produtos

Antes de chamar o método payment(), é necessário criar uma lista contendo um ou mais dicionários com os dados dos produtos. Cada dicionário deve conter as seguintes chaves obrigatórias:

  • quantity: Quantidade do produto (valor inteiro).

  • unit_price: Preço unitário do produto (valor float).

Além disso, você pode adicionar outras chaves personalizadas para incluir informações adicionais sobre os produtos (ex: product_id, description, ou category).

Passo 3: Realização da Transação

Utilize o método payment() da classe PaymentSDK para processar a transação. O método recebe as credenciais do cartão e retorna uma resposta (str) no formato JSON contendo o resultado da transação e os dados relacionados aos produtos.

Se a transação for bem-sucedida (transaction: success), o valor total será debitado do saldo (balance) da conta (Account) vinculada ao cartão.

Veja um exemplo de como realizar uma transação.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
from payment_emulation.payment.paymentSDK import PaymentSDK


items = [
    {'id': 2, 'title': 'shoe', 'quantity': 1, 'unit_price': 149.99},
    {'id': 3, 'title': 'sweater', 'quantity': 2, 'unit_price': 80},
]

redirect_urls = {
    'success': 'http://my_site/transation/success',
    'failure': 'http://my_site/transation/failure',
    'pending': 'http://my_site/transation/pending',
}

address = {
    'number': '456', 'street': 'Oak Street', 'city': 'Greenfield', 
    'state': 'CA', 'zip_code': '90210', 'country': 'USA'
}

payer = {
    'full_name': 'John Doe', 
    'email': 'johndoe@example.com', 
    'phone': '+1 (555) 123-4567'
}

sdk = PaymentSDK(items, redirect_urls, address, payer)

response = sdk.payment(
    cpf='47388464263', 
    card_number='4232303567390851', 
    validity='1/30', 
    cvv='394', 
    holder='PROBATUS'
)

print(response)
output:
{
    "transaction": "success", 
    "items": [
        {"id": 2, "title": "shoe", "quantity": 1, "unit_price": 149.99}, 
        {"id": 3, "title": "sweater", "quantity": 2, "unit_price": 80}
    ], 
    "redirect_urls": {
        "success": "http://my_site/transation/success", 
        "failure": "http://my_site/transation/failure", 
        "pending": "http://my_site/transation/pending"
    }, 
    "address": {
        "number": "456", 
        "street": "Oak Street", 
        "city": "Greenfield", 
        "state": "CA", 
        "zip_code": "90210", 
        "country": "USA"
    }, 
    "payer": {
        "full_name": "John Doe", 
        "email": "johndoe@example.com", 
        "phone": "+1 (555) 123-4567"
    }, 
    "amount": 309.99, 
    "created_at": "2025-01-12T15:07:10.312132-03:00"
}