Are you looking for test card numbers?

Would you like to contact support?

Default icon

Programa de fidelidade vinculado ao pagamento

Ofereça um programa de fidelidade sem um cartão ou aplicativo de fidelidade separado.

Você pode usar o reconhecimento do cliente para tornar seu programa de fidelidade existente mais fácil para seus clientes, removendo a necessidade de um aplicativo ou cartão de fidelidade tradicional. Neste tutorial, explicaremos como você pode vincular seu sistema de fidelidade ao perfil do cliente. Quando eles efetuam um pagamento em sua loja física ou on-line, você pode reconhecê-los automaticamente e concedê-los com pontos, descontos ou uma recompensa.

Ao oferecer fidelidade vinculada ao pagamento, você também oferece aos seus clientes um incentivo extra para fornecer os detalhes de contato, que você também pode usar para criar um perfil de cliente.

Antes de você começar

Para usar fidelidade vinculada ao pagamento, verifique se:

  1. Você já pode criar perfis de clientes e reconhecer clientes recorrentesem seus canais de vendas.
  2. Você tem um sistema de fidelidade que monitora o registro do cliente, além de outros dados, como saldo de pontos e elegibilidade das recompensas.

Fidelidade online

Quando seu cliente fizer uma compra na sua loja virtual ou no aplicativo, tente reconhecê-lo e verifique se ele já se inscreveu no seu programa de fidelidade.

A partir daqui, você pode solicitar que eles se registrem no seu programa de fidelidade ou verificar se são elegíveis para uma recompensa de fidelidade antes de continuar com a transação.

Etapa 1: reconhecer o cliente

Antes de fazer uma compra, seu cliente fornecerá os detalhes de contato, como um endereço de e-mail ou número de telefone (por exemplo, ao criar ou fazer login na conta deles ou através do checkout do hóspede).

Para reconhecer se este é um cliente recorrente:

Etapa 2: solicitar entrada do cliente

Depois de determinar se é um cliente recorrente, consulte o banco de dados do sistema de fidelidade usando shopperEmail verifique o status do programa de fidelidade. A seguir, apresente uma mensagem relevante na sua interface do usuário:

  • Se eles não são membros do seu programa de fidelidade, esta mensagem deve solicitar que eles se registrem.
  • Se eles já são membros, você pode informá-los que estão próximos de receber uma recompensa ou, se tiverem pontos suficientes, perguntar se eles querem resgatar sua recompensa.

Etapa 3: continuar com o pagamento

Continue com a compra iniciando um pagamento. Veja como você pode efetuar um pagamento para um cliente shopperEmail john_smith@example.com com um shopperReference john_smith correspondente.

  1. Faça uma solicitação POST /payments.

    Payments request
    {
        "amount": {
        "currency": "EUR",
        "value": 500
        },
        "reference": "YOUR_ORDER_NUMBER",
        "paymentMethod": {
            "type": "scheme",
            "encryptedCardNumber": "test_4111111111111111",
            "encryptedExpiryMonth": "test_03",
            "encryptedExpiryYear": "test_2030",
            "encryptedSecurityCode": "test_737"
        },
        "shopperReference": "john_smith",
        "returnUrl": "https://your-company.com/...",
        "merchantAccount": "YOUR_MERCHANT_ACCOUNT"
    }

    A resposta inclui:

    • pspReference: Nosso identificador exclusivo para este pagamento.
    • resultCode: Authorised

    O exemplo a seguir mostra uma resposta bem-sucedida com uma referência PSP de 881468919096134D.

    {
        "pspReference": "881468919096134D",
        "resultCode": "Authorised"
    }
  2. No banco de dados do seu sistema de fidelidade, atualize os pontos de fidelidade em seu registro para shopperEmail john_smith@example.com.

Depois de configurar um sistema de fidelidade para suas transações on-line, você poderá fazer o mesmo nas transações na loja.

Fidelidade na loja

Existem dois fluxos que você pode usar para executar a lealdade vinculada ao pagamento usando sua integração no ponto de venda.

  • Síncrono: Usando os dados que você recebe da Adyen antes do pagamento ser iniciado.

    Com esse fluxo, você usa os dados que recebe da Adyen para consultar o banco de dados do sistema de fidelidade. Em seguida, você apresenta informações de lealdade, como saldo de pontos ou mensagem personalizada, ao seu cliente enquanto ele faz a compra.

  • Assíncrono: Usando os dados recebidos de uma notificação de webhook após o processamento do pagamento.

    Esse fluxo requer menos trabalho de integração, mas você não poderá apresentar informações de lealdade em tempo real ao seu cliente. Você atualiza seu sistema de fidelidade posteriormente com as informações que recebe dos webhooks de notificação.

Para implementar qualquer um desses fluxos, selecione uma guia abaixo:

Fidelidade síncrona na loja

Ao usar um fluxo de fidelidade síncrono, você poderá apresentar a seus clientes fiéis informações como saldo de pontos e recompensas resgatáveis enquanto eles estão fazendo uma compra.

Explicaremos como você pode usar a tela de toque integrada do seu terminal para interagir com seus clientes. Abordaremos como você pode solicitar que eles se registrem no seu programa de fidelidade, apresente mensagens personalizadas e os informe quando receberem uma recompensa de fidelidade.

Quando seu cliente fizer uma compra na loja, verifique se ele está registrado no seu programa de fidelidade. A partir daqui, você pode solicitar que se registrem ou verificar se são elegíveis para uma recompensa de lealdade antes de continuar com a transação.

Etapa 1: reconhecer o cliente

Para determinar se seu cliente é membro do seu programa de fidelidade, tente reconhecê-lo com uma solicitação de aquisição de cartão.

Quando o cliente faz uma compra na loja:

  1. Faça uma solicitação de aquisição de cartão para reconhecer o cliente.

    O exemplo abaixo mostra como você tentaria reconhecer um cliente que está fazendo uma compra de 10.99 EUR.

    Pedido de aquisição de cartão
    {
    "SaleToPOIRequest": {
        "MessageHeader":{
            "ProtocolVersion":"3.0",
            "MessageClass":"Service",
            "MessageCategory":"Payment",
            "MessageType":"Request",
            "SaleID":"POSSystemID12345",
            "ServiceID":"0207111104",
            "POIID":"V400m-324688179"
        },
        "CardAcquisitionRequest": {
            "SaleData": {
                "SaleTransactionID": {
                    "TransactionID": "15890",
                    "TimeStamp": "2019-12-04T12:02:49.000Z"
                },
                "TokenRequestedType": "Customer"
            },
            "CardAcquisitionTransaction": {
                "TotalAmount": 10.99
            }
        }
    }
    }

Você recebe uma resposta que inclui um objeto AdditionalResponse, com uma cadeia codificada em base64 que precisa decodificar para obter um objeto JSON ou uma cadeia de pares de valores-chave codificados em formulário. Em nossos exemplos, usamos pares de valores-chave codificados em formulário.

A resposta de exemplo abaixo inclui um obejto AdditionalResponse.

Resposta de aquisição do cartão
{
    "SaleToPOIResponse": {
        "CardAcquisitionResponse": {
            "POIData": {
                "POITransactionID": {
                    "TimeStamp": "2019-12-04T12:02:49.000Z",
                    "TransactionID": "4rVu001575460969123"
                },
                "POIReconciliationID": "1000"
            },
            "SaleData": {
                "SaleTransactionID": {
                    "TimeStamp": "2019-12-04T12:02:49.000Z",
                    "TransactionID": "15890"
                }
            },
            "PaymentInstrumentData": {...},
            "Response": {
                "Result": "Success",
                "AdditionalResponse":"...shopperReference=john_smith&shopperEmail=john.smith@email.com..."
            }
        },
        "MessageHeader": {...}
    }
}
  1. Verifique se o objeto AdditionalResponse contém a shopperReference.

    • Se contiver um shopperReference, se trata de um cliente que retornou. Se você já armazenou o shopperEmail com a Adyen, isso também é fornecido nesta resposta.
    • Se não contiver a shopperReference, o cartão do cliente não será reconhecido.

      Isso geralmente significa que o cliente é novo e não comprou com você antes. No entanto, eles também podem ser clientes que retornam usando um novo cartão.

    Para confirmar, você pode coletar o endereço de e-mail e verificar se isso corresponde a um shopperEmail armazenado no banco de dados do cliente:

    • Se o e-mail corresponder a um shopperEmail no seu banco de dados, se trata de um cliente recorrente. Pergunte se eles desejam salvar seu novo cartão. Se o fizerem, tokenize o novo cartão usando o shopperReference do seu banco de dados quando você efetuar um pagamento.
    • Se o e-mail não for seu banco de dados, se trata de um novo cliente. Prossiga para a etapa 2 para solicitar que eles os registrem no seu programa de fidelidade.
  2. Se você reconheceu um cliente que retornou, consulte o banco de dados do sistema de fidelidade usando o shopperEmail. Obtenha informações sobre se o cliente já se registrou no seu programa de fidelidade, quantos pontos ele possui e se é elegível para uma recompensa.

Etapa 2: solicitar entrada do cliente

Depois de determinar se é um cliente novo ou de retorno, apresente uma mensagem relevante na tela do terminal:

Registrar membro de fidelidade

Se o seu cliente não for membro do seu programa de fidelidade, você poderá registrá-lo diretamente no seu terminal Adyen.

Quando você registra um novo membro de fidelidade, recomendamos coletar o endereço de e-mail deles. Isso facilita a vinculação da fidelidade on-line e na loja, bem como o envio de atualizações por e-mail. Você também pode usar esse endereço de e-mail para enviar um recibo eletrônico para a transação na loja. Se a coleta de um endereço de e-mail não for possível, você poderá coletar o número de telefone ou outro identificador exclusivo do cliente.

Para registrar um cliente em seu plano de fidelidade::

  1. Faça uma input request GetConfirmation da sua caixa registradora, perguntando se o cliente deseja se registrar no seu programa de fidelidade.

    O exemplo abaixo mostra como você apresentaria Would you like to join our loyalty program? no visor do terminal, bem como as opções Yes e No.

    GetConfirmation input request
    {
       "SaleToPOIRequest":{
          "MessageHeader":{
             "ProtocolVersion":"3.0",
             "MessageClass":"Service",
             "MessageCategory":"Payment",
             "MessageType":"Request",
             "ServiceID":"0207112310",
             "SaleID":"POSSystemID12345",
             "POIID":"V400m-324688179"
          },
          "InputRequest":{
             "DisplayOutput":{
                "Device":"CustomerDisplay",
                "InfoQualify":"Display",
                "OutputContent":{
                   "OutputFormat":"Text",
                   "PredefinedContent":{
                      "ReferenceID":"GetConfirmation"
                   },
                   "OutputText":[
                      {"Text":"Welcome stranger!"},
                      {"Text":"Would you like to join our loyalty program?"},
                      {"Text":"No"},
                      {"Text":"Yes"}
                   ]
                }
             },
             "InputData":{
                "Device":"CustomerInput",
                "InfoQualify":"Input",
                "InputCommand":"GetConfirmation",
                "MaxInputTime":30
             }
          }
       }
    }

    Sua mensagem é mostrada no visor do terminal. O cliente indica se eles gostariam de se registrar.

    Quando eles terminam de selecionar sua opção, você recebe a resposta de entrada que contém um Input.ConfirmedFlag. Se isso for true, prossiga para a próxima etapa para registrar seu cliente no seu programa de fidelidade. Caso contrário, você pode continuar processando a transação.

    GetConfirmation input response
    {
      "SaleToPOIResponse": {
        "InputResponse": {
          "InputResult": {
            "Device": "CustomerInput",
            "InfoQualify": "Input",
            "Response": {
              "Result": "Success",
              "AdditionalResponse": "..."
            },
            "Input": {
              "ConfirmedFlag": true,
              "InputCommand": "GetConfirmation"
            }
          },
          "OutputResult": {
            "Device": "CustomerDisplay",
            "InfoQualify": "Display",
            "Response": {
              "Result": "Success"
            }
          }
        },
        "MessageHeader": {...}
      }
    }
  2. Se o cliente indicou que gostaria de se registrar e você ainda não possui o endereço de e-mail, faça uma input request GetText na sua caixa registradora. Isso deve solicitar ao cliente que insira seu endereço de e-mail.

    O exemplo de solicitação GetText abaixo apresentaria a mensagem Enter your email address no visor do terminal. Um teclado na tela também aparece no terminal.

    GetText input request
    {
      "SaleToPOIRequest": {
        "MessageHeader": {
            "ProtocolVersion":"3.0",
            "MessageClass":"Service",
            "MessageCategory":"Payment",
            "MessageType":"Request",
            "SaleID":"POSSystemID12345",
            "ServiceID":"0207112311",
            "POIID":"V400m-324688179"
        },
        "InputRequest": {
          "DisplayOutput": {
            "Device": "CustomerDisplay",
            "InfoQualify": "Display",
            "OutputContent": {
              "OutputFormat": "Text",
              "PredefinedContent": {
                "ReferenceID": "GetText"
              },
              "OutputText": [
                {"Text": "Enter your email address"}
              ]
            }
          },
          "InputData": {
            "Device": "CustomerInput",
            "InfoQualify": "Input",
            "InputCommand": "TextString",
            "MaxInputTime": 120,
            "DefaultInputString": "name@domain.com"
          }
        }
      }
    }

    O cliente digita o endereço de e-mail no terminal. Quando eles terminam de digitar o endereço de e-mail, você recebe uma resposta de entrada, com o endereço de e-mail do cliente fornecido em Input.TextInput.

    O exemplo abaixo mostra como seria essa resposta se o cliente digitasse o endereço de e-mail john.smith@example.com.

    GetText input response
    {
      "SaleToPOIResponse": {
        "InputResponse": {
          "InputResult": {
            "Device":"CustomerInput",
            "InfoQualify":"Input",
            ...
            },
            "Input": {
              "TextInput":"john.smith@example.com",
              "InputCommand":"TextString"
            }
          },
          "OutputResult": {
            "Device":"CustomerDisplay",
            "InfoQualify":"Display",
            "Response": {
              "Result":"Success"
            }
          }
        },
        "MessageHeader": {...}
      }
    }
  3. Obtenha o endereço de e-mail e inclua-o quando continuar com o pagamento.

    Como cortesia, convém enviar um e-mail ao seu cliente, confirmando o registro no programa de fidelidade e explicando como ele funciona..

Resgatar recompensa de fidelidade

Se seu cliente ganhou uma recompensa de fidelidade, você pode usar o terminal da Adyen para informá-lo e dar a opção de resgatar sua recompensa. Se o cliente concordar em resgatar sua recompensa, você poderá ajustar o valor da transação antes de efetuar um pagamento.

Para perguntar se um cliente deseja resgatar seus pontos de fidelidade:

  1. Faça uma input request GetConfirmation, para perguntar ao seu cliente se ele deseja resgatar seus pontos de fidelidade com esta transação.

    O exemplo abaixo mostra como você apresentaria um prompt para um café gratuito no visor do terminal, perguntando ao cliente se ele gostaria de trocá-lo agora.

    GetConfirmation input request
    {
       "SaleToPOIRequest":{
          "MessageHeader":{
             "ProtocolVersion":"3.0",
             "MessageClass":"Service",
             "MessageCategory":"Payment",
             "MessageType":"Request",
             "ServiceID":"0207112311",
             "SaleID":"POSSystemID12345",
             "POIID":"V400m-324688179"
          },
          "InputRequest":{
             "DisplayOutput":{
                "Device":"CustomerDisplay",
                "InfoQualify":"Display",
                "OutputContent":{
                   "OutputFormat":"Text",
                   "PredefinedContent":{
                      "ReferenceID":"GetConfirmation"
                   },
                   "OutputText":[
                      {"Text":"You've earned a free coffee!"},
                      {"Text":"Would you like to have it now?"},
                      {"Text":"No"},
                      {"Text":"Yes"}
                   ]
                }
             },
             "InputData":{
                "Device":"CustomerInput",
                "InfoQualify":"Input",
                "InputCommand":"GetConfirmation",
                "MaxInputTime":30
             }
          }
       }
    }

    Sua mensagem é mostrada no visor do terminal. O cliente indica se deseja resgatar seus pontos de fidelidade por uma recompensa.

    Quando eles terminam de selecionar sua opção, você recebe a resposta de entrada que contém um Input.ConfirmedFlag. Se isso for true, continue na próxima etapa para dar a recompensa ao seu cliente. Caso contrário, continue processando a transação.

    GetConfirmation input response
    {
      "SaleToPOIResponse": {
        "InputResponse": {
          "InputResult": {
            "Device": "CustomerInput",
            "InfoQualify": "Input",
            "Response": {
              "Result": "Success",
              "AdditionalResponse": "..."
            },
            "Input": {
              "ConfirmedFlag": true,
              "InputCommand": "GetConfirmation"
            }
          },
          "OutputResult": {
            "Device": "CustomerDisplay",
            "InfoQualify": "Display",
            "Response": {
              "Result": "Success"
            }
          }
        },
        "MessageHeader": {...}
      }
    }
  2. Quando um cliente indica que deseja resgatar seus pontos, sua caixa registradora deve calcular o resgate como um desconto ou pagamento parcial. Continue na próxima etapa para continuar com o pagamento do saldo pendente.

Etapa 3: continuar com o pagamento

Continue com a compra fazendo uma solicitação de pagamento:

  1. Faça uma solicitação POST da sua caixa registradora para iniciar o pagamento. Se você estiver registrando um novo cliente para seu programa de fidelidade, inclua também os parâmetros descritos na documentação Criar perfis de clientes.

    Aqui está como você pode fazer um pagamento de 10.99 EUR para um cliente conhecido.

    Terminal API request
    {
        "SaleToPOIRequest":{
            "MessageHeader":{
                "ProtocolVersion":"3.0",
                "MessageClass":"Service",
                "MessageCategory":"Payment",
                "MessageType":"Request",
                "SaleID":"POSSystemID12345",
                "ServiceID":"0207111105",
                "POIID":"V400m-324688179"
            },
            "PaymentRequest":{
                "SaleData":{
                    "SaleTransactionID":{
                        "TransactionID":"15887",
                        "TimeStamp":"2019-12-04T12:02:49.000Z"
                    }
                },
                "PaymentTransaction":{
                    "AmountsReq":{
                        "Currency":"EUR",
                        "RequestedAmount":10.99
                    }
                },
                "PaymentData":{
                    "CardAcquisitionReference":{
                        "TransactionID":"oLkO001528797935000",
                        "TimeStamp":"2019-12-04T12:02:49.000Z"
                    }
                }
            }
        }
    }

    Você recebe uma resposta que inclui um objeto AdditionalResponse, com uma cadeia codificada em base64 que precisa decodificar para obter um objeto JSON ou uma cadeia de pares de valores-chave codificados em formulário. Em nossos exemplos, usamos pares de valores-chave codificados em formulário.

    Payment response
    {
      "SaleToPOIResponse":{
        "MessageHeader":{...},
        "PaymentResponse":{
          "POIData":{
            "POITransactionID":{
              "TransactionID": "oLkO0012498220087567.991517998212382C"
            },
            ...
          },
          "Response":{
            "Result":"Success",
            "AdditionalResponse":"...shopperReference=john_smith&shopperEmail=john.smith@example.com..."
          },
          ...
        },
        "PaymentReceipt":{...}
      }
    }
  2. Se a transação for bem-sucedida, atualize o saldo de lealdade do cliente em seu banco de dados para refletir sua compra.

Você também pode usar a DisplayRequest para apresentar uma mensagem na tela do terminal, dando-lhes as boas-vindas ao seu programa de fidelidade, informando-os do saldo de pontos ou parabenizando-os pela recompensa de fidelidade.

Próximas etapas