Pular para o conteúdo principal

Checkout de pagamento

No pagamento online, o marceneiro paga um serviço num checkout do sistema da central, e o serviço só fica aprovado quando o seu sistema confirma o pagamento ao Cortecloud.

O seu sistema participa em três momentos:

  1. recebe do Cortecloud o aviso de que o marceneiro escolheu pagar online;
  2. gera o checkout e registra a URL dele no Cortecloud, que redireciona o marceneiro para ela;
  3. informa ao Cortecloud se o pagamento foi confirmado ou cancelado.

Cadastro do endpoint de checkout​

Para receber o aviso do primeiro momento, o seu sistema precisa de um endpoint cadastrado no Cortecloud para a central. O cadastro é feito pelo suporte: envie a URL do endpoint e o código da central para suporte@serrabits.com.br. Sem esse cadastro, a opção de pagamento online não aparece para o marceneiro.

Fluxo​

Fluxo do pagamento online entre o usuário, o Cortecloud e o sistema da central

  1. O marceneiro escolhe pagar online num serviço em orçamento gerado (4; ver status do serviço).

  2. O Cortecloud avisa o seu sistema. O serviço passa para aguardando pagamento online (25) e o Cortecloud faz um POST no endpoint cadastrado com o id do serviço:

    { "serviceId": 123 }

    Se o seu endpoint responder com erro, o serviço volta para orçamento gerado (4) e o marceneiro não é redirecionado. Esse aviso não leva credenciais: qualquer um que conheça a URL do endpoint pode chamá-lo. Por isso, o passo 3 confirma o serviço pela API antes de gerar a cobrança.

  3. O seu sistema consulta o serviço por GET /services/{id}. Confira que status.code é 25 e use os valores do serviço (materiais, mão de obra e frete) para montar a cobrança.

  4. O seu sistema registra a URL do checkout por POST /payment/checkout-url:

    { "serviceId": 123, "url": "https://checkout.example.com/pedido/abc" }

    O Cortecloud redireciona o marceneiro para essa URL.

  5. O marceneiro paga no checkout.

  6. O seu sistema informa o resultado:

    • pagamento confirmado: POST /payment/finish-checkout com o paymentId, o identificador do pagamento no seu sistema. O serviço passa para aprovado (6).

      { "serviceId": 123, "paymentId": "pay_789" }
    • pagamento falhou ou foi abandonado: POST /payment/cancel-checkout. O serviço volta para orçamento gerado (4) e a URL de checkout registrada é apagada; o marceneiro pode tentar de novo.

      { "serviceId": 123 }

Enquanto o seu sistema não informa o resultado, o serviço fica em aguardando pagamento online (25).

Estorno​

Se um pagamento já confirmado precisar ser revertido, chame POST /payment/return-service com o mesmo paymentId enviado na confirmação. O serviço volta de aprovado (6) para orçamento gerado (4), e o pagamento e a URL de checkout registrados são apagados. Guarde o paymentId de cada confirmação para poder fazer isso.

{ "serviceId": 123, "paymentId": "pay_789" }

A rota só atualiza o serviço no Cortecloud. A devolução do valor ao marceneiro é feita no seu sistema de pagamento.

Status exigidos​

Cada rota de pagamento só aceita o serviço num status e responde 409 fora dele:

RotaStatus exigido
POST /payment/checkout-urlAguardando pagamento online (25)
POST /payment/finish-checkoutAguardando pagamento online (25)
POST /payment/cancel-checkoutAguardando pagamento online (25)
POST /payment/return-serviceAprovado (6), com o mesmo paymentId da confirmação