Point-of-sale icon

Cancele um pagamento

Saiba como cancelar uma transação em andamento.

Deseja cancelar um pagamento já autorizado?

Se você estiver usando captura com atraso ou captura manual em vez da captura automática, você poderá cancelar uma autorização

Às vezes, os clientes mudam de idéia no meio da compra ou os funcionários da loja percebem que cometeram um erro enquanto o comprador estava usando o terminal.

Uma solicitação de cancelamento permite que um cliente ou a equipe da loja aborte um pagamento em andamento. Quando o pedido de cancelamento é recebido antes de o pagamento ser aprovado , o pagamento é cancelado.

Aqui explicamos como os pagamentos podem ser cancelados:

Cancele um pagamento de sua caixa registradora

Enquanto a solicitação de pagamento estiver em andamento, você poderá cancelá-la fazendo uma solicitação de cancelamento na sua caixa registradora.

  1. Para cancelar um pagamento, faça uma solicitação POST para o endpoint da API de Terminais, especificando:

    • Obejto MessageHeader. Este segue a estrutura MessageHeader padrão, explicada nos fundamentos da API de terminais:

      • ProtocolVersion: 3.0
      • MessageClass: Service
      • MessageCategory: Abort.
      • MessageType: Request
      • SaleID: Seu ID exclusivo para a caixa registradora que faz o pedido de cancelamento.
      • ServiceID: Seu ID exclusivo para esta tentativa de transação, consistindo em 1 a 10 caracteres alfanuméricos. Esse valor deve ser exclusivo nas últimas 48 horas.
      • POIID: ID exclusivo do terminal. Isso indica para qual terminal o pagamento será roteado.

    • Objeto AbortRequest com:

      • AbortReason: MerchantAbort
      • MessageReference.MessageCategory: Payment
      • MessageReference.SaleID: Seu ID exclusivo da caixa registradora que fez a solicitação de pagamento.
      • MessageReference.ServiceID: A solicitação ServiceID do pagamento está sendo cancelada.

    O exemplo abaixo mostra como você faria uma solicitação para cancelar um pagamento em andamento com um valor ServiceID de 21796.

    {
      "SaleToPOIRequest":{
        "MessageHeader":{
          "ProtocolVersion":"3.0",
          "MessageClass":"Service",
          "MessageCategory":"Abort",
          "MessageType":"Request",
          "SaleID":"POSSystemID12345",
          "ServiceID":"29239",
          "POIID":"V400m-324688179"
        },
        "AbortRequest":{
          "AbortReason":"MerchantAbort",
          "MessageReference":{
            "MessageCategory":"Payment",
            "SaleID":"POSSystemID12345",
            "ServiceID":"21796"
          }
        }
      }
    }

    Para obter uma lista completa dos campos que você pode passar em uma solicitação de cancelamento, consulte a referência AbortRequest API.

    Nenhuma resposta da API é gerada para a solicitação de cancelamento. Você recebe apenas uma HTTP 200 OK.

    Se o cancelamento foi bem-sucedido:

    • O terminal exibe a mensagem Cancelled na tela.
    • A solicitação de pagamento retorna uma resposta contendo:

      • Result: Failure
      • ErrorCondition: Aborted

  2. Para verificar novamente se o pagamento foi realmente cancelado, faça uma TransactionStatusRequest.

    • Siga as instruções em Verificar status da transação, especificando:

      • MessageReference.SaleID: A SaleID da caixa tregistradora que efetuou a transação de pagamento que você tentou cancelar.
      • MessageReference.ServiceID: A ServiceID da transação de pagamento que você tentou cancelar.
      • MessageReference.MessageCategory: Payment

    O exemplo abaixo mostra como você verificaria o status da transação de um pagamento com ServiceID 21796, que você tentou cancelar.

    {
      "SaleToPOIRequest": {
        "MessageHeader": {
          "ProtocolVersion": "3.0",
          "MessageClass": "Service",
          "MessageCategory": "TransactionStatus",
          "MessageType": "Request",
          "SaleID": "POSSystemID12345",
          "ServiceID": "29240",
          "POIID": "V400m-324688179"
        },
        "TransactionStatusRequest": {
          "ReceiptReprintFlag": true,
          "DocumentQualifier": [
            "CashierReceipt",
            "CustomerReceipt"
          ],
          "MessageReference": {
            "SaleID": "POSSystemID12345",
            "ServiceID": "21796",
            "MessageCategory": "Payment"
          }
        }
      }
    }

    Se o pagamento foi cancelado, você deverá receber uma resposta de transação não encontrada. A TransactionStatusResponse.Response tem um ErrorCondition de NotFound.

Cancele um pagamento do terminal

Para cancelar um pagamento em andamento de um terminal:

  1. Pressione o botão no teclado do terminal.
  2. Na tela do terminal, confirme que deseja cancelar a transação.

Se bem-sucedido:

  • O terminal exibe uma mensagem Cancelled na tela.
  • A soilicitação de pagamento retorna uma resposta contendo:
    • Result: Failure
    • ErrorCondition: Cancel

Lidando com falhas na solicitação de cancelamento

Se sua solicitação de cancelamento falhou (e o pagamento foi aprovado), você precisará reembolsar o pagamento. Para obter mais informações sobre o reembolso de um pagamento, consulte Reembolsar um pagamento concluído.

Próximas etapas