Pesquisar

Are you looking for test card numbers?

Would you like to contact support?

Point-of-sale icon

Desfazer uma transação realizada para um cartão vale presente

Inverta uma transação que carregou fundos para em cartão vale presente

Com uma solicitação de cancelamento, você pode reverter uma transação que carregou fundos para um cartão. A quantia que a solicitação de carregamento adicionou ao cartão vale presente é retirada do cartão. No entanto, você pode desfazer apenas as transações de carregamento mais recentes, que foram realizadas últimas 24 horas.

Você identifica a transação que deseja desfazer pelo seu identificador de transação. Desfazer transações é uma operação síncrona.

Você não pode usar estas solicitações para cancelar um pagamento com cartão vale presente ou fazer um reembolso para um cartão vale presente.
Consulte Cancelar um pagamento e Reembolsar um cartão vale presente.

Antes de começar

Antes de realizar transações com cartão vale presente, certifique-se de:

Etapa 1: Desfazendo uma transação

Para desfazer as transações de carregamento mais recentes, realizadas nas últimas 24 horas, em um cartão vale presente:

  • Faça uma solicitação POST para o endpoint da API de terminais , especificando:

    • MessageHeader: Segue a estrutura da MessageHeader padrão, explicada nos fundamentos da API de terminais, que incluem:

      • ProtocolVersion: 3.0
      • MessageClass: Service
      • MessageCategory: StoredValue
      • MessageType: Request
      • SaleID: Seu ID exclusivo para a caixa registradora.
      • ServiceID: Seu ID exclusivo para esta tentativa de transação. Este precisa ser único nas últimas 48 horas
      • POIID: ID exclusivo do terminal. Isso indica para qual terminal a transação será roteada.

    • StoredValueRequest: O corpo da solicitação para a solicitação de reversão deve incluir:

      • SaleData.SaleTransactionID.TransactionID: Sua referência exclusiva para esta solicitação.
      • SaleData.SaleTransactionID.TimeStamp: Data e hora da solicitação, no formato UTC.
      • StoredValueData.StoredValueTransactionType: Reverse
      • StoredValueData.OriginalPOITransaction: Os detalhes da transação que você deseja desfazer:

        • POITransactionID.TransactionID: Identificador da transação original, em um dos seguintes formatos:

          Formato Exemple
          tenderReference.pspReference A7sM001574852436000.8815748524464271

          Formato recomendado

          .pspReference .8815748524464271

          Este funciona a partir da versão do software do terminal 1.44. Não esqueça o ponto inicial (.).

          tenderReference A7sM001574852436000

          Somente ao usar o mesmo terminal da transação original.

        • POITransactionID.TimeStamp: Data e hora da transação original.

    !!Para obter mais informações sobre a estrutura de solicitação da API de terminais, consulte os fundamentos da API de terminais.

    {
      "SaleToPOIRequest":{
        "MessageHeader":{
          "MessageType":"Request",
          "MessageClass":"Service",
          "MessageCategory":"StoredValue",
          "SaleID":"POSSystemID12345",
          "POIID":"V400m-324688179",
          "ProtocolVersion":"3.0",
          "ServiceID":"9265"
          },
        "StoredValueRequest":{
          "SaleData":{
            "SaleTransactionID":{
              "TransactionID":"44739",
              "TimeStamp":"2019-12-22T10:10:34+00:00"
              }
          },
          "StoredValueData": [
            {
              "StoredValueTransactionType": "Reverse",
              "OriginalPOITransaction": {
                "POITransactionID": {
                  "TransactionID": "A7sM001574852436000.8815748524464271",
                  "TimeStamp": "2019-12-22T09:01:15+00:00"
                }
              }
            }
          ]
        }
      }
    }
    String serviceID = "YOUR_UNIQUE_ATTEMPT_ID";
    String saleID = "YOUR_CASH_REGISTER_ID";
    String POIID = "YOUR_TERMINAL_ID";
    
    SaleToPOIRequest saleToPOIRequest = new SaleToPOIRequest();
    MessageHeader messageHeader = new MessageHeader();
    messageHeader.setProtocolVersion("3.0");
    messageHeader.setMessageClass( MessageClassType.SERVICE );
    messageHeader.setMessageCategory( MessageCategoryType.STORED_VALUE );
    messageHeader.setMessageType( MessageType.REQUEST );
    messageHeader.setServiceID(serviceID);
    messageHeader.setSaleID(saleID);
    messageHeader.setPOIID(POIID);
    saleToPOIRequest.setMessageHeader(messageHeader);
    
    StoredValueRequest storedValueRequest = new StoredValueRequest();
    SaleData saleData = new SaleData();
    TransactionIdentification saleTransactionID = new TransactionIdentification();
    saleTransactionID.setTransactionID(transactionID);
    saleTransactionID.setTimeStamp(DatatypeFactory.newInstance().newXMLGregorianCalendar(new GregorianCalendar()));
    saleData.setSaleTransactionID(saleTransactionID);
    storedValueRequest.setSaleData(saleData);
    
    StoredValueData storedValueData = new StoredValueData();
    storedValueData.setStoredValueTransactionType( StoredValueTransactionType.REVERSE );
    OriginalPOITransaction originalPOITransaction = new OriginalPOITransaction();
    TransactionIdentification pOITransactionID = new TransactionIdentification();
    pOITransactionID.setTransactionID(transactionID);
    pOITransactionID.setTimeStamp(DatatypeFactory.newInstance().newXMLGregorianCalendar(new GregorianCalendar()));
    originalPOITransaction.setPOITransactionID(pOITransactionID);
    storedValueData.setOriginalPOITransaction(originalPOITransaction);
    storedValueRequest.setStoredValueData(storedValueData);
    saleToPOIRequest.setStoredValueRequest(storedValueRequest);
    terminalAPIRequest.setSaleToPOIRequest(saleToPOIRequest);

A solicitação de reversão é enviada à plataforma de pagamentos da Adyen para processamento.

Etapa 2: recebendo o resultado

Depois de processada, sua integração recebe o resultado, indicando o estado atual ou o saldo do cartão vale presente. Este é fornecido em uma resposta de API síncrona, a menos que sua integração use comunicações em nuvem assíncronas.

Se sua integração usar comunicações em nuvem assíncronas, você receberá o resultado em uma notificação de exibição TENDER_FINAL

Se a reversão for bem-sucedida:

  • Você recebe uma resposta com um objeto StoredValueResponse que inclui:

    • POIData.POITransactionID.TransactionID: Identificador de transação para a solicitação de reversão.
    • StoredValueResult:

      • StoredValueTransactionType: Reverse
      • StoredValueAccountStatus: O CurrentBalance restante no cartão após desfazer uma solicitação de carregamento.

    • Response.Result: Success
    • Response.AdditionalResponse: Uma sequência base64. Quando decodificado, este é um objeto JSON com dados de transação adicionais.

    Para obter mais informações sobre a estrutura de solicitação da API de terminais, consulte os fundamentos da API de terminais.

    {
      "SaleToPOIResponse":{
        "StoredValueResponse":{
          "POIData":{
            "POITransactionID":{
              "TimeStamp":"2019-03-26T09:31:29.000Z",
              "TransactionID":"pZjO001522056689002.851577784437432H"
            }
          ...
          "StoredValueResult":[
            {
              "StoredValueTransactionType":"Reverse",
              "StoredValueAccountStatus": {
                "CurrentBalance":265.79
              }
            }
          ],
          "Response":{
            "Result":"Success",
            "AdditionalResponse":"tid=46742566&transactionType=REFUND&backendGiftcardIndicator=false&posAmountGratuityValue=0&giftcardIndicator=true&pspReference=851577784437432H&storedValueApi=true&currentBalanceCurrency=USD&txtime=10%3a27%3a20&iso8601TxDate=2019-12-31T09%3a27%3a20.0000000%2b0000&posOriginalAmountValue=0&txdate=31-12-2019&merchantReference=17322&transactionReferenceNumber=851577784437432H&posadditionalamounts.originalAmountCurrency=EUR&posAuthAmountCurrency=EUR&posAmountCashbackValue=0&posAuthAmountValue=0&currentBalanceValue=26579"
          }
        },
        "MessageHeader":{
          "ProtocolVersion":"3.0",
          "SaleID":"POSSystemID12345",
          "MessageClass":"Service",
          "MessageCategory":"StoredValue",
          "ServiceID":"9264",
          "POIID":"V400m-324688179",
          "MessageType":"Response"
        }
      }
    }

Veja também