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.
- Se o e-mail corresponder, se trata de um cliente que retornou.
- Se o e-mail não estiver em seu banco de dados, você poderá criar um perfil de cliente para eles.
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:
-
Usando o endereço de e-mail do cliente, busque o
shopperReference
erecurringDetailReference
deles no banco de dados do cliente. -
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 pagamentoExpand viewCopy link to code blockCopy code{ "merchantAccount": "YOUR_MERCHANT_ACCOUNT", "shopperReferenceThis is the unique customer reference in your db": "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 orecurringDetailReference
que você armazenou para este cliente em seu banco de dados.Resposta dos métodos de pagamentoExpand viewCopy link to code blockCopy code{ "paymentMethods":[...], "storedPaymentMethods":[ { "brand":"visa", "expiryMonth":"03", "expiryYear":"2030", "holderName":"John Smith", "id This is the recurringDetailReference":"7219687191761347", "lastFour":"1111", "name":"VISA", "supportedShopperInteractions":[ "Ecommerce", "ContAuth" ], "type":"scheme" } ] } -
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.
-
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
: OshopperReference
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
oucvc
: 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 umarecurringDetailReference
de 7219687191761347.Pedido de pagamento onlineExpand viewCopy link to code blockCopy code{ "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 onlineExpand viewCopy link to code blockCopy code{ "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:
-
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 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 oshopperReference
.- Se contiver um
shopperReference
, se trata de um cliente que retornou. Se você já armazenou oshopperEmail
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 oshopperReference
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.
- Se contiver um
-
Continue com a transação, fazendo uma solicitação POST na sua caixa registradora.
Solicitação da API de terminaisExpand 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" } } } } } 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 pagamentoExpand viewCopy link to code blockCopy code{ "SaleToPOIResponse":{ "MessageHeader":{...}, "PaymentResponse":{ "POIData":{ "POITransactionID":{ "TransactionID": "oLkO0012498220087000.981517998282382C" }, ... }, "Response":{ "Result":"Success" }, ... }, "PaymentReceipt":{...} } }