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:
- Você já pode criar perfis de clientes e reconhecer clientes recorrentesem seus canais de vendas.
- 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:
- Verifique se os detalhes de contato correspondem ao
shopperEmail
que você armazenou no banco de dados do cliente.- Se o e-mail corresponder, este será um cliente que retornou. Prossiga para a próxima etapa para obter seus pontos de recompensa de fidelidade.
- Se o e-mail não for seu banco de dados, continue na etapa 3 para continuar o pagamento. Na solicitação de pagamento, convém incluir outros parâmetros para criar um perfil de cliente para eles.
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.
-
Faça uma solicitação POST /payments.
Payments requestExpand viewCopy link to code blockCopy code{ "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" } -
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:
-
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 EUR 10,99.
Pedido de aquisição de cartãoExpand viewCopy link to code blockCopy code{ "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
.
{ "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": {...} } }
-
Verifique se o objeto
AdditionalResponse
contém ashopperReference
.- Se contiver um
shopperReference
, se trata de um cliente que retornou. Se você já armazenou oshopperEmail
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 oshopperReference
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.
- Se contiver um
-
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:
- Se o cliente não for um membro do seu programa de fidelidade, você poderá solicitar que ele se registre e colete o endereço de e-mail, se ainda não o tiver..
- Se o cliente for um membro e for elegível para uma recompensa, você poderá perguntar se deseja resgatar essa recompensa.
- Se o cliente for um membro do programa de fidelidade, mas ainda não estiver qualificado para receber uma recompensa, continue com o pagamento.
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::
-
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 requestExpand viewCopy link to code blockCopy code{ "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 responseExpand viewCopy link to code blockCopy code{ "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": {...} } } -
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 requestExpand viewCopy link to code blockCopy code{ "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 responseExpand viewCopy link to code blockCopy code{ "SaleToPOIResponse": { "InputResponse": { "InputResult": { "Device":"CustomerInput", "InfoQualify":"Input", ... }, "Input": { "TextInput":"john.smith@example.com", "InputCommand":"TextString" } }, "OutputResult": { "Device":"CustomerDisplay", "InfoQualify":"Display", "Response": { "Result":"Success" } } }, "MessageHeader": {...} } } -
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:
-
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 requestExpand viewCopy link to code blockCopy code{ "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 responseExpand viewCopy link to code blockCopy code{ "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": {...} } } -
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:
-
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 EUR 10,99 para um cliente conhecido.
Terminal API requestExpand viewCopy link to code blockCopy code{ "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 responseExpand viewCopy link to code blockCopy code{ "SaleToPOIResponse":{ "MessageHeader":{...}, "PaymentResponse":{ "POIData":{ "POITransactionID":{ "TransactionID": "oLkO0012498220087567.991517998212382C" }, ... }, "Response":{ "Result":"Success", "AdditionalResponse":"...shopperReference=john_smith&shopperEmail=john.smith@example.com..." }, ... }, "PaymentReceipt":{...} } } -
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.