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
CREATEeVIEW. - 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.