Are you looking for test card numbers?

Would you like to contact support?

Default icon

Reconhecendo clientes

Identifique seus clientes que retornam quando compram em suas lojas físicas e online.

Depois de ter criado um perfil para um cliente, você poderá usar os dados em seu perfil para reconhecê-los na próxima vez que comprarem em qualquer um dos seus canais de vendas.

Neste guia, mostraremos como você pode usar shopperEmail e shopperReference para identificar identify um cliente que está retornando online ou na loja.

Reconhecer clientes que retornam on-line

Antes de fazer a compra on-line, seu cliente fornecerá um endereço de e-mail (por exemplo, ao criar uma conta para sua loja on-line ou ao fazer o checkout como convidado).

Para reconhecer se é um cliente recorrente, verifique se os detalhes de contato correspondem ao shopperEmail tque você armazenou no banco de dados do cliente.

Depois que você conseguir reconhecer os clientes que retornam no checkout on-line ou no aplicativo, poderá aprender como fazer o mesmo na loja.

Mostrando um cartão salvo em sua compra on-line

Se o cliente criou uma conta da loja online e você salvou e tokenizou os detalhes do cartão em um pagamento anterior na loja, você pode oferecer a eles uma experiência de compra on-line com menos atrito, mostrando os detalhes do cartão salvos.

Para apresentar o cartão salvo de um cliente em sua compra on-line:

  1. Usando o endereço de e-mail do cliente, busque o shopperReference e recurringDetailReference deles no banco de dados do cliente.

  2. Se você estiver usando o Drop-in ou Componentes, também poderá confirmar se o cliente salvou os detalhes do cartão ao fazer uma chamada POST /paymentMethods. Nesta solicitação, inclua adicionalmente o shopperReference.

    O exemplo abaixo mostra como você faria isso para um cliente com shopperReference john_smith:

    Solicitação de métodos de pagamento
    {
      "merchantAccount": "YOUR_MERCHANT_ACCOUNT",
      "{hint:This is the unique customer reference in your db}shopperReference{/hint}": "john_smith",
      "amount": {
        "currency": "EUR",
        "value": 1099
      }
    }

    Você recebe uma resposta contendo uma lista dos métodos de pagamento disponíveis, incluindo os detalhes de pagamento armazenados do cliente. Você pode encontrar o cartão armazenado do cliente na matriz storedPaymentMethods.

    O exemplo abaixo mostra como seria essa resposta se esse cliente tivesse um cartão Visa armazenado. O storedPaymentMethods.id deve corresponder o recurringDetailReference que você armazenou para este cliente em seu banco de dados.

    Resposta dos métodos de pagamento
    {
      "paymentMethods":[...],
      "storedPaymentMethods":[
        {
          "brand":"visa",
          "expiryMonth":"10",
          "expiryYear":"2020",
          "holderName":"John Smith",
          "{hint: This is the recurringDetailReference}id{/hint}":"7219687191761347",
          "lastFour":"1111",
          "name":"VISA",
          "supportedShopperInteractions":[
            "Ecommerce",
            "ContAuth"
          ],
          "type":"scheme"
        }
      ]
    }
  3. Apresente os detalhes do cartão salvo do cliente e mostre um campo CVC / CVV para coletar o código de segurança do cartão.
    • Se você estiver usando Drop-in, essa integração suporta a exibição de detalhes do cartão salvos por padrão. Para Componentes, você pode usar o componente do cartão armazenado para Web, iOS, ou Android. A integração de Drop-in e Componentes apresenta os detalhes do cartão salvo e coleta e criptografa o código de segurança do cartão do cliente.
    • Se você estiver usando uma integração apenas de API, precisará criar sua própria interface do usuário para mostrar os detalhes do cartão armazenado e coletar o código de segurança do cartão do cliente. Você pode fazer uma integração de cartão personalizado ou enviar dados do cartão, se você for totalmente compatível com PCI.

  4. Se o cliente optar por pagar com o cartão salvo, continue com o pagamento efetuando uma solicitação POST /payments. Nesta solicitação, inclua adicionalmente:

    • shopperReference: O shopperReference do cliente, de seu banco de dados.
    • shopperInteraction: Defina como ContAuth para indicar que o cliente é um cliente recorrente.
    • recurringProcessingModel: Defina como CardOnFile para especificar um pagamento único.
    • paymentMethod: Objeto que contém os detalhes do cartão do cliente:
      • recurringDetailReference: Os detalhes do cartão tokenizado do cliente.
      • encryptedSecurityCode ou cvc: o código de segurança do cartão do cliente enviado como dados criptografados (retornados do Drop-in, Componentes ou integração de cartões personalizados) ou como dados brutos (se você é totalmente compatível com PCI).

    O exemplo abaixo mostra como você faria um pagamento para um cliente com um shopperReference john_smith, e uma recurringDetailReference de 7219687191761347.

    Pedido de pagamento online
    {
       "amount":{
          "value":2000,
          "currency":"USD"
       },
       "paymentMethod":{
          "type": "scheme",
          "recurringDetailReference":"7219687191761347",
          "encryptedSecurityCode": "adyen_737x19daxH..."
       },
       "reference":"YOUR_ORDER_NUMBER",
       "merchantAccount":"YOUR_MERCHANT_ACCOUNT",
       "returnUrl":"https://your-company.com/...",
       "shopperReference":"john_smith",
       "shopperInteraction":"ContAuth",
       "recurringProcessingModel": "CardOnFile"
    }

    Se o pagamento for bem-sucedido, você receberá um resultCode de Authorised.

    Resposta de pagamento online
    {
       "pspReference": "881532984281546H",
       "resultCode": "Authorised"
    }

Reconhecer clientes que retornam na loja

Quando um cliente faz uma compra na loja, você pode tentar reconhecer se é um cliente antigo, fazendo uma solicitação de card acquisition. Essa solicitação verifica se você armazenou uma shopperReference (referência exclusiva para este cliente) em uma transação anterior. Se você tiver, Adyen retorna o shopperReference na resposta.

Para reconhecer um cliente quando ele faz uma compra na loja:

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

    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 o shopperReference.

    • Se contiver um shopperReference, se trata de um cliente que retornou. Se você já armazenou o shopperEmail Adyen anteriormente, isso também é fornecido nesta resposta.
    • Se não contiver o 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, eles serão 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.
    • o Se o e-mail não estiver no seu banco de dados, eles serão um novo cliente. Continue com a transação e crie um perfil para este cliente.
  2. Continue com a transação, fazendo uma solicitação POST na sua caixa registradora.

    Solicitação da API de terminais
    {
        "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"
                    }
                }
            }
        }
    }

    Se a solicitação foi bem-sucedida, você recebe uma resposta contendo:

    • POIData.POITransactionID.TransactionID: Identificador de transação para o pagamento.
    • PaymentResponse.Response.Result: Success

    O resultado do exemplo abaixo indica que o pagamento foi bem-sucedido. O identificador da transação para este pagamento é oLkO0012498220087000.981517998282382C.

    Resposta de pagamento
    {
      "SaleToPOIResponse":{
        "MessageHeader":{...},
        "PaymentResponse":{
          "POIData":{
            "POITransactionID":{
              "TransactionID": "oLkO0012498220087000.981517998282382C"
            },
            ...
          },
          "Response":{
            "Result":"Success"
          },
          ...
        },
        "PaymentReceipt":{...}
      }
    }

Próximos passos

Agora que seus dois canais de vendas são capazes de criar e reconhecer clientes, você pode oferecer a esses clientes melhores experiências de compra.