Criação de checkout via API

TLDR: permitir que organizações criem seus próprios checkouts e links de pagamento pela API, sem passar pelo admin.

Contexto

Hoje um checkout só nasce pelo ActiveAdmin. Organizações que querem automatizar a criação de links de pagamento não têm como.

Objetivos

  • Criar uma API de checkouts com endpoints de CREATE e VIEW.
  • Autenticar os endpoints via token.
  • O endpoint é síncrono.
  • Complementar a funcionalidade seguinte — criação de pagamentos via API — permitindo sobrescrever os valores já propostos no checkout.

Fora de escopo

— (não registrado na spec original)

Mudanças

Modelo

Checkout já existe. Adicionar belongs_to :organization.

API

POST /api/v1/checkouts

json { "checkout": { "name": "Consultas de Fulano de tal", "integration": "trg", "description": "Consultas de fulano de TAL", "customer_can_purchase_having_overdue_payments": false, "status": true, "total": 1000, "checkout_payment_types_attributes": [ { "billing_type": "PIX", "total": 1000, "interest_rate": 1, "installments_available": [1] }, { "billing_type": "CREDIT_CARD", "total": 1000, "interest_rate": 1, "installments_available": [1] } ] } }

Erro 400:

json { "errors": { "total": ["Missing field", "Amount is not valid", "Has to be bigger than 0"] } }

Sucesso:

json { "success": "Checkout was successfully created", "checkout": { "pid": "consultas-de-fulano-de-tal-9bc4d4bf-b6c3-4803-8ca8-1361e2e0dc50", "name": "Consultas de Fulano de tal", "total": "1000.0", "interest_rate": 0.0, "description": "Consultas de fulano de TAL", "installment_count": 1, "url_checkout": "https://checkouts.ibft.app/187/consultas-de-fulano-de-tal-9bc4d4bf-b6c3-4803-8ca8-1361e2e0dc50", "installments": [ { "installment": 1, "installment_amount": 1000.0, "total": 1000.0, "description": "1x de R$1000.00" } ], "checkout_payment_types_available": [ { "billing_type": "PIX", "installments": [ { "installment": 1, "installment_amount": 1000.0, "total": 1000.0, "description": "1x de R$1000.00" } ] }, { "billing_type": "CREDIT_CARD", "installments": [ { "installment": 1, "installment_amount": 1000.0, "total": 1000.0, "description": "1x de R$1000.00" } ] } ] } }

ActiveAdmin

Módulo de Checkouts.

Como verificar

— (não registrado na spec original)

Documentação

Implementado como Api::V2::CheckoutsController (resources :checkouts, only: [:show, :create]) — a spec original propunha a v1.