Como gerar pedido

Guia passo a passo para criar pedidos com PIX, Cartão ou Boleto.

Este guia mostra como criar pedidos usando nossa API. Você pode facilmente alternar entre diferentes métodos de pagamento (PIX, Cartão ou Boleto) alterando apenas o campo payment_method.

Pré-requisitos

Antes de começar, certifique-se de ter:

  • ✅ Chave de Cash-In configurada
  • ✅ URL base da API: https://api.exemplo.com/v1
  • ✅ Webhook configurado (opcional, mas recomendado)

Passo a Passo

Chamar o Endpoint de Criação de Pedido

Use a Chave de Cash-In para autenticar a requisição e chame o endpoint POST /orders:

curl -X POST https://api.exemplo.com/v1/orders \
  -H "Authorization: Basic SUA_CHAVE_DE_CASH_IN" \
  -H "Content-Type: application/json" \
  -d '{
    "amount": 10000,
    "payment_method": "pix",
    "customer": {
      "name": "João Silva",
      "email": "joao@exemplo.com",
      "document": "12345678900"
    },
    "description": "Pagamento de serviço"
  }'

Processar a Resposta

A resposta conterá todas as informações necessárias para processar o pagamento:

{
  "id": "ord_123456789",
  "status": "pending",
  "amount": 10000,
  "currency": "BRL",
  "payment_method": "pix",
  "payload": {
    "code": "00020126580014br.gov.bcb.pix0136123e4567-e12b-12d1-a456-426655440000520400005303986540510.005802BR5925NOME DO RECEBEDOR6009SAO PAULO62070503***63041D3D"
  },
  "payment_link": "https://pagamento.exemplo.com/pay/ord_123456789",
  "customer": {
    "name": "João Silva",
    "email": "joao@exemplo.com"
  },
  "created_at": "2024-01-15T10:00:00Z",
  "expires_at": "2024-01-15T11:00:00Z"
}

Você tem duas opções para processar o pagamento:

Opção A: Exibir QR Code PIX

Use o payload.code para gerar um QR Code na tela:

// Exemplo usando qrcode library
import QRCode from 'qrcode';

async function displayPixQRCode(pixCode) {
  try {
    const qrCodeImage = await QRCode.toDataURL(pixCode);
    // Exibir a imagem na tela
    document.getElementById('qrcode').src = qrCodeImage;
  } catch (err) {
    console.error('Erro ao gerar QR Code:', err);
  }
}

// Usar após receber a resposta
displayPixQRCode(response.payload.code);

Redirecione o cliente para o payment_link fornecido:

// Redirecionar para o link de pagamento
window.location.href = response.payment_link;

O payment_link funciona para todos os métodos de pagamento (PIX, Cartão e Boleto), oferecendo uma experiência unificada para o cliente.

Alternando entre Métodos de Pagamento

É muito fácil alternar entre PIX, Cartão e Boleto. Basta alterar o campo payment_method na requisição:

PIX

{
  "amount": 10000,
  "payment_method": "pix",
  "customer": {
    "name": "João Silva",
    "email": "joao@exemplo.com"
  }
}

Cartão de Crédito

{
  "amount": 10000,
  "payment_method": "card",
  "customer": {
    "name": "João Silva",
    "email": "joao@exemplo.com"
  },
  "card": {
    "token": "card_token_abc123",
    "installments": 1
  }
}

Para pagamentos com cartão, você precisa primeiro tokenizar o cartão usando o endpoint de tokenização. Veja mais na Referência de API.

Boleto Bancário

{
  "amount": 10000,
  "payment_method": "boleto",
  "customer": {
    "name": "João Silva",
    "email": "joao@exemplo.com",
    "document": "12345678900"
  },
  "boleto": {
    "due_date": "2024-02-15"
  }
}

A resposta para boleto incluirá o código de barras e o link para visualização:

{
  "id": "ord_123456789",
  "status": "pending",
  "payment_method": "boleto",
  "boleto": {
    "barcode": "34191.09008 01234.567890 12345.678901 2 98760000010000",
    "pdf_url": "https://api.exemplo.com/v1/orders/ord_123456789/boleto.pdf"
  },
  "payment_link": "https://pagamento.exemplo.com/pay/ord_123456789"
}

Monitorando o Status do Pedido

Após criar o pedido, você pode monitorar seu status de duas formas:

Consultar o Pedido

Use o endpoint GET /orders/{id} para verificar o status:

curl -X GET https://api.exemplo.com/v1/orders/ord_123456789 \
  -H "Authorization: Basic SUA_CHAVE_DE_CASH_IN"

Receber Notificação via Webhook

Configure um webhook na plataforma para receber notificações automáticas quando o status do pedido mudar:

{
  "event": "order.paid",
  "order_id": "ord_123456789",
  "status": "paid",
  "amount": 10000,
  "paid_at": "2024-01-15T10:30:00Z"
}

Sempre valide os webhooks recebidos verificando o header Authorization ou X-Signature para garantir a segurança.

Exemplos Completos

JavaScript/TypeScript

async function createOrder(amount: number, paymentMethod: string) {
  const response = await fetch('https://api.exemplo.com/v1/orders', {
    method: 'POST',
    headers: {
      Authorization: `Basic ${process.env.CASH_IN_KEY}`,
      'Content-Type': 'application/json',
    },
    body: JSON.stringify({
      amount,
      payment_method: paymentMethod,
      customer: {
        name: 'João Silva',
        email: 'joao@exemplo.com',
      },
    }),
  });

  const order = await response.json();

  if (paymentMethod === 'pix') {
    // Exibir QR Code
    displayQRCode(order.payload.code);
  } else {
    // Redirecionar para link de pagamento
    window.location.href = order.payment_link;
  }

  return order;
}

Python

import requests

def create_order(amount, payment_method):
    url = "https://api.exemplo.com/v1/orders"
    headers = {
        "Authorization": f"Basic {CASH_IN_KEY}",
        "Content-Type": "application/json"
    }
    data = {
        "amount": amount,
        "payment_method": payment_method,
        "customer": {
            "name": "João Silva",
            "email": "joao@exemplo.com"
        }
    }

    response = requests.post(url, headers=headers, json=data)
    order = response.json()

    return order

Próximos Passos

On this page