Pagamentos

Nosso sistema de vendas online terá uma integração com a FictionalPay (FP), onde o usuário irá fazer o pagamento usando o sistema de pagamentos da FP. Após o pagamento ser confirmado, a FP dispara um webhook com os dados de pagamento, conforme exemplo:

{
    "transaction_id": "c9a6001f-b900-4b3a-989b-576aea4c87a2",
    "value": 5000,
    "currency": "BRL",
    "status": "paid"
}

Os seguintes endpoints devem ser adicionados à API:

POST /products/{product_id}/transaction

Usado para iniciar uma nova compra de um produto. Exemplo de resposta:

{
    "id": 12345,
    "product_id": 12345,
    "status": "waiting",
    "total_price": 5000,
    "payment_url": "https://fictional.pay/payments/c9a6001f-b900
-4b3a-989b-576aea4c87a2"
}

DELETE /transactions/{transaction_id}

Cancela uma transação anteriormente iniciada.

POST /transactions/{transaction_id}/update-fictional-pay-status

Endpoint interno usado pelo webhook da FictionalPay para atualizar o estado de pagamento de uma transação. O endpoint deve fazer a seguinte validação:

  1. Se status for paid: Atualiza o estado da transação para pago.
  2. Se não: Ignora a requisição e não faz nada.

GET /transactions/{transaction_id}

Retorna os dados da transação. Exemplo de resposta:

{
    "id": 12345,
    "product_id": 12345,
    "status": "waiting",
    "total_price": 5000,
    "payment_url": "https://fictional.pay/payments/c9a6001f-b900
-4b3a-989b-576aea4c87a2",
    "product": {
        "id": 12345,
        "name": "Product X",
        "image_url": "https://s.com/object/abc-123/image.jpeg",
        "price": 5000
    }
}