Pesquisar

Are you looking for test card numbers?

Would you like to contact support?

Point-of-sale icon

Envie Tender options

Use parâmetros para alterar como uma transação é processada.

Using our Standalone solution?

Com nossa solução não integrada, o suporte pode configurar tender options e condições de transação para sua conta.

Tender options são parâmetros que alteram a forma como o tender é processado. Por exemplo, a tender option AskGratuity aciona o terminal de pagamento para solicitar uma gorjeta ao cliente.

Você envias as tender options em suas solicitações de pagamento da API do terminal usando o campo SaleToAcquirerData.

Outras maneiras de alterar o processamento de transações

Além de enviar tender options, há outras maneiras de influenciar o processamento da transação. Você pode:

  • Envie uma condição de transação em sua solicitação de pagamento. Isso força o terminal de pagamento a aceitar um método de entrada de cartão específico para esse pagamento. Isso é usado para pagamentos com venda digitada (MKE).
  • Configure tender options e condições de transação padrão. TO terminal as utilizará para cada pagamento. Peça ajuda à nossa POS Support Team.

Lista de tender options

Estas são as tender options que você pode passar no campo SaleToAcquirerData:

Nome Descriçao
AllowPartialAuthorisation Sinaliza que uma aprovação parcial é permitida e é possível que o valor autorizado seja menor que o valor solicitado.
AskGiving Aciona o terminal para perguntar se o cliente deseja doarpara instituições de caridade.
AskGratuity Ativa o terminal para perguntar se o cliente deseja dar gorjeta.
BypassPin

Ignora a entrada do PIN quando o cliente diz que não sabe o PIN do cartão e você sabe que ele é o titular legítimo do cartão ou deseja oferecer o benefício da dúvida.

Este é o processo:

  1. Os funcionários da sua loja cancelam a transação existente e iniciam uma nova transação através da caixa registradora.
  2. O cliente pressiona a tecla verde (CONFIRMAR) quando solicita um PIN e fornece uma assinatura.
  3. Os funcionários da sua loja verificam e aprovam a assinatura.

Como é de se espera que o portador do cartão conheça o PIN do cartão, recomendamos verificar a assinatura e o nome do titular do cartão com alguma forma de identificação.

ForcedDecline Força a transação a ser recusada, por exemplo, se houver suspeita de fraude.
MOTO

Aciona transações de pedidos por correio ou telefone no terminal de pagamento da caixa registradora. As transações MOTO são transações sem cartão, em que os detalhes do pagamento são apresentados a um comerciante por um cliente por correio, fax, ou telefone.

ReceiptHandler Especifica que a caixa registradora manipula e imprime recibos. Se omitido, é necessário que o terminal de pagamento imprima o recibo. Se não houver uma unidade de impressora, a transação falhará.
SkipAIDPriority Pule a prioridade do identificador de aplicativo (AID) que foi definida na sua área de cliente. Isso permite que um cliente selecione sua aplicação preferida (forma de pagamento).

Especificar tender options

Para especificar as tender options que você deseja usar (consulte a lista):

  • Faça um PaymentRequest que contenha um campo SaletoAcquirerData com um ou mais valores separados por vírgula especificados em um dos seguintes formatos:

    • Opção 1: Um objeto JSON {"tenderOption": "option"} convertido em uma sequência codificada Base64.
      Por exemplo, você codifica {"tenderOption": "AskGratuity,ReceiptHandler"} para Base64 e passa o resultado:
      "SaleToAcquirerData": "eyJ0ZW5kZXJPcHRpb24iOiAiQXNrR3JhdHVpdHksUmVjZWlwdEhhbmRsZXIifQ=="

    • Opção 2: tenderOption=option.
      Por exemplo: "SaleToAcquirerData": "tenderOption=AskGratuity,ReceiptHandler"

    O formato que você usa aqui também será o formato AdditionalResponse que você receberá.

    O exemplo a seguir mostra como você envia as Tender options AskGratuity e ReceiptHandler para o terminal. A resposta mostra que o cliente adicionou uma gorjeta.

    {
        "SaleToPOIRequest":{
            "PaymentRequest":{
                "SaleData":{
                    "SaleTransactionID":{
                        "TransactionID":"5748",
                        "TimeStamp":"2018-01-10T11:30:15+00:00"
                    },
                    "SaleToAcquirerData":"tenderOption=AskGratuity,ReceiptHandler"
                },
                "PaymentTransaction":{
                    "AmountsReq":{
                        "Currency":"EUR",
                        "RequestedAmount":155.75
                    }
                }
            },
            "MessageHeader":{
                "ProtocolVersion":"3.0",
                "MessageClass":"Service",
                "MessageCategory":"Payment",
                "MessageType":"Request",
                "ServiceID":"0110123015",
                "SaleID":"POSSystemID12345",
                "POIID":"M400-260193322"
            }
        }
    }
    String serviceID = "YOUR_UNIQUE_ATTEMPT_ID";
    String saleID = "YOUR_CASH_REGISTER_ID";
    String POIID = "YOUR_TERMINAL_ID";
    String transactionID = "YOUR_UNIQUE_TRANSACTION_ID";
    
    SaleToPOIRequest saleToPOIRequest = new SaleToPOIRequest();
    MessageHeader messageHeader = new MessageHeader();
    messageHeader.setProtocolVersion("3.0");
    messageHeader.setMessageClass( MessageClassType.SERVICE );
    messageHeader.setMessageCategory( MessageCategoryType.PAYMENT );
    messageHeader.setMessageType( MessageType.REQUEST );
    messageHeader.setServiceID(serviceID);
    messageHeader.setSaleID(saleID);
    messageHeader.setPOIID(POIID);
    saleToPOIRequest.setMessageHeader(messageHeader);
    
    PaymentRequest paymentRequest = new PaymentRequest();
    SaleData saleData = new SaleData();
    TransactionIdentification saleTransactionID = new TransactionIdentification();
    saleTransactionID.setTransactionID(transactionID);
    saleTransactionID.setTimeStamp(DatatypeFactory.newInstance().newXMLGregorianCalendar(new GregorianCalendar()));
    saleData.setSaleTransactionID(saleTransactionID);
    saleData.setSaleToAcquirerData("tenderOption=AskGratuity,ReceiptHandler");
    paymentRequest.setSaleData(saleData);
    
    PaymentTransaction paymentTransaction = new PaymentTransaction();
    AmountsReq amountsReq = new AmountsReq();
    amountsReq.setCurrency("EUR");
    amountsReq.setRequestedAmount( BigDecimal.valueOf(155.75) );
    paymentTransaction.setAmountsReq(amountsReq);
    paymentRequest.setPaymentTransaction(paymentTransaction);
    saleToPOIRequest.setPaymentRequest(paymentRequest);
    terminalAPIRequest.setSaleToPOIRequest(saleToPOIRequest);

Combinando tender options e outros parâmetros

Além das tender options, existem outros parâmetros que também são passados no campo SaleToAcquirerData. FPor exemplo, você pode usar parâmetros para o reconhecimento do comprador ou transmissão de informações da aplicação.

Para combinar tender options e outros parâmetros, use um dos seguintes métodos:

  • Opção 1: Crie um objeto JSON, codifique-o para Base64 e especifique a sequência resultante.

    Este é um objeto JSON de amostra:

    {
        "tenderOption": "AskGratuity",
        "shopperEmail": "s.hopper@mail.com",
        "shopperReference": "YOUR_UNIQUE_SHOPPER_ID",
        "recurringContract": "RECURRING,ONECLICK"
    }

    Após converter o objeto JSON em uma cadeia codificada em Base64, é assim que você o transmite:

    "SaleToAcquirerData": "ewogICJ0ZW5kZXJPcHRpb24iOiAiQXNrR3JhdHVpdHkiLAogICJzaG9wcGVyRW1haWwiOiAicy5ob3BwZXJAbWFpbC5jb20iLAogICJzaG9wcGVyUmVmZXJlbmNlIjogIllPVVJfVU5JUVVFX1NIT1BQRVJfSUQiLAogICJyZWN1cnJpbmdDb250cmFjdCI6ICJSRUNVUlJJTkcsT05FQ0xJQ0siCn0="
  • Opção 2: especifique todos os valores em pares de valores-chave codificados em formulário (usando & como separador). Por exemplo:

    "SaleToAcquirerData": "tenderOption=AskGratuity&shopperEmail=s.hopper@gmai&shopperReference=YOUR_UNIQUE_SHOPPER_ID&recurringContract=ONECLICK,RECURRING"

Veja também