integrar a google pay api para seus pagamentos móveis · integrar a google pay api para seus...

34
Integrar a Google Pay API para seus pagamentos móveis Versão do documento 1.3

Upload: others

Post on 24-Jul-2020

17 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Integrar a Google Pay API para seus pagamentos móveis · Integrar a Google Pay API para seus pagamentos móveis - Versão do documento 1.3 Todos os direitos reservados - 3 / 34 1

Integrar a Google Pay APIpara seus pagamentos móveis

Versão do documento 1.3

Page 2: Integrar a Google Pay API para seus pagamentos móveis · Integrar a Google Pay API para seus pagamentos móveis - Versão do documento 1.3 Todos os direitos reservados - 3 / 34 1

Conteúdo

1. HISTÓRICO DO DOCUMENTO........................................................................................................3

2. ENTRAR EM CONTATO COM O SUPORTE TÉCNICO............................................................... 4

3. APRESENTAÇÃO.................................................................................................................................5

4. DECLARAR UM CONTRATO GOOGLE PAY™ NO BACK OFFICE

ESTABELECIMENTO..........................................................................................................................6

5. CINEMÁTICA DAS TROCAS.............................................................................................................7

6. GERENCIAR OS PRAZOS DE ESPERA (TIMEOUT)................................................................... 8

7. CONSULTAR OS CÓDIGOS DE EXEMPLOS............................................................................... 10

8. CONFIGURAR SEU PROJETO........................................................................................................118.1. Ativar a API Google Pay

™........................................................................................................................11

8.2. Adicionar as dependências........................................................................................................................ 11

9. REALIZAR O PAGAMENTO NO APLICATIVO MÓVEL........................................................... 129.1. Definir a versão Google Pay

™ usada........................................................................................................ 12

9.2. Definir o gateway de pagamento.............................................................................................................. 129.3. Definir os métodos de pagamentos suportados.........................................................................................129.4. Enviar os métodos de pagamentos suportados......................................................................................... 139.5. Criar uma instância PaymentsClient......................................................................................................... 139.6. Verificar se o pagamento é possível.........................................................................................................149.7. Criar um objeto PaymentDataRequest.................................................................................................149.8. Declarar um gestor de evento usuário...................................................................................................... 169.9. Seleção do meio de pagamento.................................................................................................................179.10. Recuperar os dados de Google Pay

™...................................................................................................... 17

10. ENVIAR OS DADOS PARA A PLATAFORMA DE PAGAMENTO........................................ 20

11. TRATAR O RESULTADO DO PAGAMENTO........................................................................... 24

12. PASSAR EM MODO DE PRODUÇÃO........................................................................................ 26

13. GERENCIAR SUAS TRANSAÇÕES GOOGLE PAY™ NO BACK OFFICE PAYZEN...............27

13.1. Exibir o detalhe da transação Google Pay™

............................................................................................2713.2. Validar uma transação.............................................................................................................................2913.3. Modificar uma transação.........................................................................................................................3013.4. Cancelar uma transação...........................................................................................................................3113.5. Editar a referência do pedido..................................................................................................................3213.6. Reenviar o e-mail de confirmação da transação ao comprador.............................................................. 3213.7. Reenviar o e-mail de confirmação da transação ao estabelecimento comercial..................................... 3213.8. Capturar uma transação...........................................................................................................................3313.9. Conciliação manual................................................................................................................................. 3313.10. Realizar um reembolso..........................................................................................................................34

Page 3: Integrar a Google Pay API para seus pagamentos móveis · Integrar a Google Pay API para seus pagamentos móveis - Versão do documento 1.3 Todos os direitos reservados - 3 / 34 1

Integrar a Google Pay API para seus pagamentos móveis - Versão do documento 1.3

Todos os direitos reservados - 3 / 34

1. HISTÓRICO DO DOCUMENTO

Versão Autor Data Comentário

1.3 Lyra Network 25/04/2019 Aposição da menção Trade Mark.

1.2 Lyra Network 14/01/2019 • Atualização dos pré-requisitos

• Adição do procedimento de criação de um contrato

1.1 Lyra Network 19/10/2018 • Atualização para a última versão da API Google Pay™.

• Atualização dos exemplos de códigos

1.0 Lyra Network 10/07/2018 Versão inicial.

Este documento e o seu conteúdo são estritamente confidenciais. Ele não é contratual. Qualquerreprodução e/ou distribuição deste documento ou de uma parte dele para um terceiro é estritamente

proibida ou sujeita a uma autorização prévia de Lyra Network. Todos os direitos reservados.

Page 4: Integrar a Google Pay API para seus pagamentos móveis · Integrar a Google Pay API para seus pagamentos móveis - Versão do documento 1.3 Todos os direitos reservados - 3 / 34 1

Integrar a Google Pay API para seus pagamentos móveis - Versão do documento 1.3

Todos os direitos reservados - 4 / 34

2. ENTRAR EM CONTATO COM O SUPORTE TÉCNICO

Procurando por ajuda? Confira nossa FAQ em nosso site

https://payzen.io/pt-BR/faq/sitemap.html

Para perguntas técnicas ou solicitação de assistência, nossos serviços estão disponíveis de segunda a sexta,de 8h às 17h

por telefone no:+55 (11) 3336-9217 ou +55 (11) 3336-9209 desde oBrasil

por e-mail: [email protected]és do seu Back OfficeEstabelecimento:

menu Ajuda > Entrar em contato com o suporte

Para facilitar o atendimento das suas solicitações, você deverá informar seu Shop ID (número com 8dígitos) .

Esta informação aparece no e-mail de cadastro da sua loja, ou no Back Office Estabelecimento (menuConfiguração > Loja > Configuração).

Page 5: Integrar a Google Pay API para seus pagamentos móveis · Integrar a Google Pay API para seus pagamentos móveis - Versão do documento 1.3 Todos os direitos reservados - 3 / 34 1

Integrar a Google Pay API para seus pagamentos móveis - Versão do documento 1.3

Todos os direitos reservados - 5 / 34

3. APRESENTAÇÃO

Google Pay™ é um meio de pagamento que permite ao comprador realizar suascompras facilmente usando seu cartão de pagamento registrado na sua conta Google.É um meio simples, rápido e seguro de comprar online ou via um aplicativo móvel.

Existe dois tipos de integração:

• integração em uma aplicativo móvel

• integração em um site de e-commerce (o pagamento é realizado no navegador do comprador).

O presente documento apresenta a integração em um aplicativo móvel usando o payload retornadopela API Google Pay™. No entanto, pode-se adaptar as instruções que seguem usando um payloadproveniente do cliente para a API Java Script Google Pay™.

Checkout rápido Google Pay™:

Quando um comprador fizer um pagamento, ele deve informar seu endereço de faturamento e de entregano aplicativo móvel.

Para facilitar os pagamentos do comprador em diferentes sites ou aplicativos, pode-se gerenciar osendereços de faturamento e de entrega no wallet Google.

O comprador seleciona seu meio de pagamento e seus endereços uma vez só, e o site de e-commerceusará os dados contidos na resposta (payload).

(As informações são enviadas automaticamente à plataforma de pagamento e são exibidos no Back OfficePayZen).

Pontos importantes:

• A implementação atual não permite realizar uma autenticação 3D Secure durante um pagamentoGoogle Pay™. Não há portanto transferência de responsabilidade (Liability shift).

• A implementação atual não permite criar pagamentos recorrentes (pagamentos por assinatura) como meio de pagamento Google Pay™.

Page 6: Integrar a Google Pay API para seus pagamentos móveis · Integrar a Google Pay API para seus pagamentos móveis - Versão do documento 1.3 Todos os direitos reservados - 3 / 34 1

Integrar a Google Pay API para seus pagamentos móveis - Versão do documento 1.3

Todos os direitos reservados - 6 / 34

4. DECLARAR UM CONTRATO GOOGLE PAY™ NO BACK OFFICEESTABELECIMENTO

No menu Configuração > Empresa > Afiliações:

1. Clique em Criar uma afiliação.A caixa de diálogo “Escolha do tipo de contrato” abre.

2. Selecione Google Pay.O assistente de criação de contrato abre.

Os campos Gateway e Gateway Merchant ID são preenchidos. Estas duas informações são úteis paraa integração de Google Pay™ em um aplicativo móvel.

Entre em contato com PayZen se você desejar digitar o CVV na integração móvel.

3. Leia e aceite os CGS de Google Pay™ assinalando a caixa específica para este item.Esta ação é obrigatória para finalizar a criação do contrato.

4. Clique em Encerrar.

Uma vez que o contrato foi criado, clique no botão "Associar à uma loja" e vincule o contrato à loja dasua escolha.

Page 7: Integrar a Google Pay API para seus pagamentos móveis · Integrar a Google Pay API para seus pagamentos móveis - Versão do documento 1.3 Todos os direitos reservados - 3 / 34 1

Integrar a Google Pay API para seus pagamentos móveis - Versão do documento 1.3

Todos os direitos reservados - 7 / 34

5. CINEMÁTICA DAS TROCAS

1. O aplicativo móvel apresenta uma solicitação paymentDataRequest à API Google Pay™ para coletar osdados do cartão do comprador.

2. A API Google Pay™ retorna um objeto PaymentData contendo os dados numéricos (também chamado"payload").

3. O aplicativo móvel envia o payload ao servidor do estabelecimento comercial.

4. O servidor do estabelecimento comercial elabora e apresenta uma solicitação createPayment usando opayload para valorisar a propriedade walletPayload do objeto cardRequest. A propriedade scheme tomao valor de GOOGLEPAY.

As outras propriedades do objetocardRequest não devem ser valorizadas.

5. A plataforma de pagamento analisa a solicitação, decifra os dados do cartão e realiza a solicitação deautorização. Envia depois o resultado do pagamento ao servidor do estabelecimento comercial.

6. O servidor do estabelecimento comercial recebe uma resposta createPaymentResponse e analisa oresultado do pagamento. Envia a informação ao aplicativo que realizará seu tratamento.

Page 8: Integrar a Google Pay API para seus pagamentos móveis · Integrar a Google Pay API para seus pagamentos móveis - Versão do documento 1.3 Todos os direitos reservados - 3 / 34 1

Integrar a Google Pay API para seus pagamentos móveis - Versão do documento 1.3

Todos os direitos reservados - 8 / 34

6. GERENCIAR OS PRAZOS DE ESPERA (TIMEOUT)

O tratamento de uma solicitação serviço web articula-se em torno de uma serie de eventos assíncronostais como:

• o envio da solicitação via a rede do site do vendedor,

• o transporte das informações na rede internet,

• o tratamento do pagamento pela plataforma,

• a interrogação dos servidores bancários, etc

Um incidente pode ocorrer a qualquer etapa e aumentar o tempo de tratamento (e portanto o tempo deespera para o comprador).

A resposta a uma solicitação pode atrasar por múltiplas razões:

• Um tempo longo de resposta por parte do emissor do cartão do portador (no caso de cartõesprovenientes de fora do país, no caso de período correspondentes à alta atividade tal como o dia dasmães, natal, ...).

• Um tempo longo de resposta por parte do comprador durante a transmissão e a recepção da solicitaçãode autorização.

• Um tempo longo de resposta no seu aplicativo devido a uma carga importante.

• Um tempo longo de resposta da plataforma de pagamento

• Um problema de peering na Internet podendo ocasionar perdas de mensagens, etc...

Em função dos prazos configurados, você não pode receber resposta enquanto o tratamento assíncronocontinua em execução na plataforma de pagamento.

Um tempo longo de tratamento não deve ser considerado como um pagamento recusado.

Portanto, você deve configurar seu código para gerenciar os problemas potenciais que podem resultar daconexão à API SOAP.

Recomendações

O tempo médio de tratamento de uma solicitação de pagamento pela plataforma é inferior a 5 segundos.

Você deve definir um prazo de espera de 20 até 30 segundos entre:

• o servidor do estabelecimento comercial e a plataforma de pagamento,

• o aplicativo móvel e o servidor do estabelecimento comercial.

Enquanto o comprador espera, uma mensagem indicando claramente que o pagamento está emandamento deve ser exibida.

Uma vez que o prazo de espera venceu, você deve notificar ao comprador que seu pagamento foi recusado.

Para gerenciar corretamente estes casos de timeout, recomendamos 2 soluções:

• Criar suas transações em validação manual

O servidor do estabelecimento comercial deve enviar uma solicitação para validar toda transaçãorealizada com sucesso.

As transações em timeout não serão validadas e vencerão (após 7 dias para um pagamento realizadona rede CB).

Uma vez vencidas, não poderão ser capturadas no banco.

Page 9: Integrar a Google Pay API para seus pagamentos móveis · Integrar a Google Pay API para seus pagamentos móveis - Versão do documento 1.3 Todos os direitos reservados - 3 / 34 1

Integrar a Google Pay API para seus pagamentos móveis - Versão do documento 1.3

Todos os direitos reservados - 9 / 34

Nenhum comprador será debitado indevidamente.

• Criar suas transações em validação automática

O servidor do estabelecimento comercial deve solicitar a plataforma de pagamento para cancelar oureembolsar o comprador, para toda solicitação em timeout.

O servidor do estabelecimento comercial deverá então obrigatoriamente enviar um código de pedidoúnico nas solicitações de pagamento.

Em seguida, para cada transação em timeout, o servidor do estabelecimento comercial deve:

• solicitar a plataforma de pagamento para recuperar a UUID e o status da transação correspondente(métodofindPayments)

Se a UUID não existe, indica que um erro técnico impediu a criação da transação.

Se a transação tiver um status REFUSED, nenhuma ação será necessária.

• cancelar ou reembolsar a transação (usando os métodos cancelPayment ourefundPayment) se asolicitação de autorização foi aceita durante o timeout.

Page 10: Integrar a Google Pay API para seus pagamentos móveis · Integrar a Google Pay API para seus pagamentos móveis - Versão do documento 1.3 Todos os direitos reservados - 3 / 34 1

Integrar a Google Pay API para seus pagamentos móveis - Versão do documento 1.3

Todos os direitos reservados - 10 / 34

7. CONSULTAR OS CÓDIGOS DE EXEMPLOS

Para auxiliá-lo em função do seu aplicativo, disponibilizamos exemplos complementares deimplementação. Favor consultar estes links abaixo:

Servidor estabelecimento comercial

• https://github.com/lyra/googlepay-payment-sparkjava-integration-sample

Android

• https://github.com/lyra/googlepay-payment-android-integration-sample

Page 11: Integrar a Google Pay API para seus pagamentos móveis · Integrar a Google Pay API para seus pagamentos móveis - Versão do documento 1.3 Todos os direitos reservados - 3 / 34 1

Integrar a Google Pay API para seus pagamentos móveis - Versão do documento 1.3

Todos os direitos reservados - 11 / 34

8. CONFIGURAR SEU PROJETO

Se você desejar maiores informações sobre a API de pagamento Google Pay™, consulte a documentaçãooficial: https://developers.google.com/pay/api/android/

Siga as recomendações da Google para as considerações gráficas (logomarcas e textos):

https://developers.google.com/pay/api/android/guides/brand-guidelines

Se você encontrar problemas com as chamadas à API Google Pay™, consulte a página seguinte:

https://developers.google.com/pay/api/android/support/troubleshooting

8.1. Ativar a API Google Pay™

Para ativar a API Google Pay™ e usá-la no seu projeto, você tem que adicionar o que está a seguir no tag<application> do arquivo AndroidManifest.xml:

<application> ... <!-- Enables the Google Pay API --> <meta-data android:name="com.google.android.gms.wallet.api.enabled" android:value="true" /></application>

8.2. Adicionar as dependências

Adicione a dependência Google Play Services 16.0.x (versão mais antiga aceita) ao seu arquivo build.gradle:

dependencies { compile 'com.google.android.gms:play-services-wallet:16.0.0' compile 'com.android.support:appcompat-v7:24.1.1'}

Page 12: Integrar a Google Pay API para seus pagamentos móveis · Integrar a Google Pay API para seus pagamentos móveis - Versão do documento 1.3 Todos os direitos reservados - 3 / 34 1

Integrar a Google Pay API para seus pagamentos móveis - Versão do documento 1.3

Todos os direitos reservados - 12 / 34

9. REALIZAR O PAGAMENTO NO APLICATIVO MÓVEL

As etapas seguintes apresentam como integrar a API Google Pay™ em um aplicativo móvel.

9.1. Definir a versão Google Pay™ usada

Criar um objeto BaseRequest contendo as propriedades abaixo que serão usadas em todas suassolicitações:

Trecho do exemplo de código:

private fun getBaseRequest(): JSONObject { return JSONObject() .put("apiVersion", 2) .put("apiVersionMinor", 0)}

9.2. Definir o gateway de pagamento

Implementar o método getTokenizationSpecification como segue para notificar que você usará aplataforma de pagamento "lyra".

Trecho do exemplo de código:

private const val GATEWAY_TOKENIZATION_NAME = "lyra"private const val GATEWAY_MERCHANT_ID = "<REPLACE_ME>"

private fun getTokenizationSpecification(gatewayMerchantId: String): JSONObject { val params = JSONObject().put("gateway", GATEWAY_TOKENIZATION_NAME) params.put("gatewayMerchantId", gatewayMerchantId)

return JSONObject().put("type", "PAYMENT_GATEWAY").put("parameters", params)}

Substitue <REPLACE_ME> pelo número de contrato Google Pay™ exibido no (Menu Configuração > Empresa >Afiliações).Se você estiver usando o código de exemplo, informe seu número de contrato Google Pay™ no arquivo MainActivity.kt(variável GATEWAY_MERCHANT_ID).

9.3. Definir os métodos de pagamentos suportados

Implemente o método getAllowedCardNetworks como segue para especificar os tipos de cartõesautorizados para o pagamento.

Trecho do exemplo de código:

private const val SUPPORTED_NETWORKS = "AMEX, VISA, MASTERCARD, DISCOVER, JCB" this.supportedNetworks = supportedNetworks.split(Regex(",[ ]*")).toTypedArray()

private fun getAllowedCardNetworks(): JSONArray { val allowedCardNetworks = JSONArray() for (network in supportedNetworks) { allowedCardNetworks.put(network) } return allowedCardNetworks}

Page 13: Integrar a Google Pay API para seus pagamentos móveis · Integrar a Google Pay API para seus pagamentos móveis - Versão do documento 1.3 Todos os direitos reservados - 3 / 34 1

Integrar a Google Pay API para seus pagamentos móveis - Versão do documento 1.3

Todos os direitos reservados - 13 / 34

Implemente o método getAllowedCardAuthMethods e dê-lhe o valor PAN_ONLY.

Trecho do exemplo de código:

private val SUPPORTED_METHODS = Arrays.asList("PAN_ONLY")!!

private fun getAllowedCardAuthMethods(): JSONArray { val allowedCardAuthMethods = JSONArray() for (method in SUPPORTED_METHODS) { allowedCardAuthMethods.put(method) } return allowedCardAuthMethods}

Para maiores detalhes, consulte a documentação sobre o objeto CardParameters.

9.4. Enviar os métodos de pagamentos suportados

Implemente a função getCardPaymentMethod.

Criar um objeto cardPaymentMethod para enviar os métodos de pagamentos suportados pelo meio depagamento CARD bem como as informações sobre o gateway de pagamento.

Trecho do exemplo de código:

private fun getCardPaymentMethod(additionalParams: JSONObject?, tokenizationSpecification: JSONObject?): JSONObject { val params = JSONObject() .put("allowedAuthMethods", getAllowedCardAuthMethods()) .put("allowedCardNetworks", getAllowedCardNetworks())

// Additional parameters provided? if (additionalParams != null && additionalParams.length() > 0) { val keys = additionalParams.keys() while (keys.hasNext()) { val key = keys.next() params.put(key, additionalParams.get(key)) } } val cardPaymentMethod = JSONObject() cardPaymentMethod.put("type", "CARD") cardPaymentMethod.put( "parameters", params) if (tokenizationSpecification != null) { cardPaymentMethod.put( "tokenizationSpecification", tokenizationSpecification) } return }

Para maiores detalhes, consulte a documentação sobre o objeto CardParameters.

9.5. Criar uma instância PaymentsClient

Criar uma instância de PaymentsClient no método onCreate do seu Activity para estabelecer a interaçãocom a API PaymentsClient.

private fun initPaymentsClient(activity: Activity, mode: String): PaymentsClient { val builder = Wallet.WalletOptions.Builder() if (mode == "TEST") { builder.setEnvironment(WalletConstants.ENVIRONMENT_TEST) } else { builder.setEnvironment(WalletConstants.ENVIRONMENT_PRODUCTION) } return Wallet.getPaymentsClient(activity, builder.build())}

Page 14: Integrar a Google Pay API para seus pagamentos móveis · Integrar a Google Pay API para seus pagamentos móveis - Versão do documento 1.3 Todos os direitos reservados - 3 / 34 1

Integrar a Google Pay API para seus pagamentos móveis - Versão do documento 1.3

Todos os direitos reservados - 14 / 34

Durante a fase de integração, se você usar o código de exemplo, a variável PAYMENT_MODE deverá ter o valor TEST noarquivo MainActivity.kt.

9.6. Verificar se o pagamento é possível

Implemente o método isReadyToPayRequest para verificar se as versões Android e Google Play instaladasno dispositivo móvel são suportadas pela API PaymentsClient.

Conforme a resposta, poderá por exemplo esconder/ocultar o botão de pagamento.

Trecho do exemplo de código:

private fun prepareIsReadyToPayRequest(): IsReadyToPayRequest { val isReadyToPayRequest = getBaseRequest() isReadyToPayRequest.put( "allowedPaymentMethods", JSONArray() .put(getCardPaymentMethod(null, null))) return IsReadyToPayRequest.fromJson(isReadyToPayRequest.toString())} PayZenPayment.isPaymentPossible(paymentsClient).addOnCompleteListener { task -> try { val result = task.getResult(ApiException::class.java) if (result) { // show Google Pay as a payment option payBtn.visibility = View.VISIBLE } else { payBtn.visibility = View.VISIBLE Toast.makeText(this, "isPaymentPossible return false", Toast.LENGTH_LONG).show() } } catch (e: ApiException) { Toast.makeText(this, "isPaymentPossible exception catched", Toast.LENGTH_LONG).show() }}

9.7. Criar um objeto PaymentDataRequest

Quando o comprador estiver pronto para pagar, crie um objeto PaymentDataRequest e vincule a ele seuobjeto BaseRequest.

Este objeto deverá conter os dados necessários ao pagamento:

• informações do gateway de pagamento,

• métodos de pagamento suportados pelo seu aplicativo,

• informações adicionais que você deseja ter na resposta,

Define os métodos de pagamento suportados valorizando a propriedade allowedPaymentMethods com oresultado da função getCardPaymentMethod (ver capítulo Enviar os métodos de pagamentos suportados àla page 13).

Define o detalhe da transação no objeto TransactionInfo:

propriedadetotalPriceStatusvalor "FINAL"

Parâmetro obrigatório para uma chamada createPaymentDataRequest().Seu valor não será levado em conta para o pagamento.

propriedadetotalPricevalor "10.00"

Parâmetro obrigatório para uma chamada createPaymentDataRequest().No entanto, somente o valor enviado na chamada ao método createPayment de API Webservices SOAP v5 serálevado em conta no pagamento.

Page 15: Integrar a Google Pay API para seus pagamentos móveis · Integrar a Google Pay API para seus pagamentos móveis - Versão do documento 1.3 Todos os direitos reservados - 3 / 34 1

Integrar a Google Pay API para seus pagamentos móveis - Versão do documento 1.3

Todos os direitos reservados - 15 / 34

propriedadecurrencyCodevalor "EUR"

Parâmetro obrigatório para uma chamada createPaymentDataRequest().No entanto, somente o valor enviado na chamada ao método createPayment de API Webservices SOAP v5 serálevado em conta no pagamento.

Para maiores detalhes, consulte a documentação sobre o objeto TransactionInfo.

Digite as informações adicionais que você deseja ter na resposta:

propriedade billingAddressRequiredvalor true

Torna obrigatório digitar o endereço de faturamento. O endereço selecionado será retornado nopayload.Útil se você desejar disponibilizar um checkout rápido ao comprador.

propriedade emailRequiredvalor true

Permite enviar o e-mail vinculado à conta Google selecionada.

propriedade shippingAddressRequiredvalor true

Torna obrigatório digitar o endereço de entrega. O endereço selecionado pelo comprador seráretornado no payload.Útil se você desejar disponibilizar um checkout rápido ao comprador.

propriedade phoneNumberRequiredvalor true

Torna obrigatório digitar o número de telefone no endereço de entrega e de faturamento.Se shippingAddressRequired ou billingAddressRequired tiver o valor true, o númerode telefone será enviado no payload.Útil se você desejar disponibilizar um checkout rápido ao comprador.

Para maiores detalhes, consulte a documentação sobre o objeto PaymentDataRequest.

Trecho do código de exemplo:

private fun preparePaymentDataRequest(price: String, currency: String, gatewayMerchantId: String): PaymentDataRequest { val paymentDataRequestJson = getBaseRequest() val additionalParams = JSONObject() val transactionJson = JSONObject() transactionJson .put("totalPriceStatus", "FINAL") .put("totalPrice", price) .put("currencyCode", currency) additionalParams.put("billingAddressRequired", true) additionalParams .put("billingAddressParameters", JSONObject() .put("format", "FULL").put("phoneNumberRequired", false)) paymentDataRequestJson .put("allowedPaymentMethods", JSONArray() .put(getCardPaymentMethod(additionalParams, getTokenizationSpecification(gatewayMerchantId))))

paymentDataRequestJson.put("shippingAddressRequired", true) paymentDataRequestJson.put("emailRequired", true) paymentDataRequestJson.put("transactionInfo", transactionJson) return PaymentDataRequest.fromJson(paymentDataRequestJson.toString())}

Page 16: Integrar a Google Pay API para seus pagamentos móveis · Integrar a Google Pay API para seus pagamentos móveis - Versão do documento 1.3 Todos os direitos reservados - 3 / 34 1

Integrar a Google Pay API para seus pagamentos móveis - Versão do documento 1.3

Todos os direitos reservados - 16 / 34

9.8. Declarar um gestor de evento usuário

Define um OnClickListener no seu botão "Pagar" para iniciar a criação do objeto PaymentDataRequest. Useo método resolveTask do AutoResolveHelper com o PaymentDataRequest para exibir o Bottom Sheet GooglePay.

O resultado será então enviado para seu método onActivityResult().

Trecho do exemplo de código:

fun onPayClick(view: View) { progressBar.visibility = View.VISIBLE

val paymentDataRequest = preparePaymentDataRequest() AutoResolveHelper.resolveTask( paymentsClient.loadPaymentData(paymentDataRequest), this, GooglePayManagement.GOOGLE_PAYMENT_CODE_RESULT )}

Page 17: Integrar a Google Pay API para seus pagamentos móveis · Integrar a Google Pay API para seus pagamentos móveis - Versão do documento 1.3 Todos os direitos reservados - 3 / 34 1

Integrar a Google Pay API para seus pagamentos móveis - Versão do documento 1.3

Todos os direitos reservados - 17 / 34

9.9. Seleção do meio de pagamento

Para poder pagar com Google Pay™, o comprador deve ter salvo um meio de pagamento dentro do prazode validade no seu Google Pay™.

Para realizar a fase de integração no ambiente de teste, o integrador deverá:

• ter uma conta Google,

• vincular um meio de pagamento válido a sua conta Google Pay™.

Quando o bottom sheet for exibido Google Pay™, selecioneseu cartão e clique no botão Continuar.

No ambiente de teste, os dados retornados no objeto PaymentData não são reais e não correspondemaos dados do cartão salvo na sua conta Google.

Portanto, seu cartão nunca será debitado enquanto seu aplicativo estiver configurado no ambiente deTESTE.

No ambiente de teste, a mensagem seguinte será exibida no bottom sheet Google Pay:"Aplicativo desconhecido. Favor continuar somente se você confiar em este aplicativo."

9.10. Recuperar os dados de Google Pay™

Os dados do comprador são retornados para o aplicativo móvel em um objeto PaymentData (tambémchamado "payload").

Para tratar os dados do payload, sobrescreva o método onActivityResult() do seu activity como segue:

Trecho do exemplo de código:

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { super.onActivityResult(requestCode, resultCode, data) // Manage Google Pay result if (requestCode == GooglePayManagement.GOOGLE_PAYMENT_CODE_RESULT) { when (resultCode) { Activity.RESULT_OK -> { if (data != null) { val paymentData = PaymentData.getFromIntent(data) val googlePayData = paymentData!!.toJson() // Execute payment PayZenPayment.executeTransaction(googlePayData, this) } else { PayZenPayment.returnsResult(false, PayZenPaymentErrorCode.UNKNOWN_ERROR, "Unknown error", this) }

Page 18: Integrar a Google Pay API para seus pagamentos móveis · Integrar a Google Pay API para seus pagamentos móveis - Versão do documento 1.3 Todos os direitos reservados - 3 / 34 1

Integrar a Google Pay API para seus pagamentos móveis - Versão do documento 1.3

Todos os direitos reservados - 18 / 34

} Activity.RESULT_CANCELED -> { PayZenPayment.returnsResult(false, PayZenPaymentErrorCode.PAYMENT_CANCELLED_ERROR, "Payment cancelled by user", this) } AutoResolveHelper.RESULT_ERROR -> { PayZenPayment.returnsResult(false, PayZenPaymentErrorCode.UNKNOWN_ERROR, "Unknown error", this) } } }}

Se você escolheu o checkout rápido, você deve transformar o payload em objeto JSON, analisá-lo paradepois salvar os dados necessários (dados do comprador, endereço de entrega etc..).

Exemplo de recuperação do endereço de faturamento:

when (resultCode) { Activity.RESULT_OK -> { if (data != null) { val paymentData = PaymentData.getFromIntent(data) val googlePayData = paymentData!!.toJson() val billingAddress = JSONObject( JSONObject( JSONObject( googlePayload!!.toJson() ).getString("paymentMethodData") ).getString("info") ).getString("billingAddress")

Exemplo de objeto PaymentData:

JSON result Example :{ "apiVersionMinor":0, "apiVersion":2, "paymentMethodData":{ "description":"Visa •••• 3513", "tokenizationData":{ "type":"PAYMENT_GATEWAY", "token":"{\"signature\":\"MEUCIC1+XSqhtgCWQa\/3k7OFIesJX0SYBtCeOKjD+O2JBWO9AiEAg03FhXVVwD0NRhiPnjGWdfTqTXm39fnzr+XvHdbecY4\\u003d\",\"protocolVersion\":\"ECv1\",\"signedMessage\":\"{\\\"encryptedMessage\\\":\\\"qjXoUw7ptqWE\/G+PSOb8QoR+hqzM7h1S7iQ3jH\/mxmjJi\/\/MY5Kem6WmuQxMQbz0pXeX5mxjmUxvbIQzGhtLLELoTWxuAF\/mLSuoIznPbvJNxQ9xGOVMQYuo0jTKqUUv6QrjMBTSCcQx2ktkDS3EjHOWBPTw22mI\/kXz0wn5x6jlMLEUTFkNlPZYjeoFRvUXpw0XoECNdouiiJwub52zmyebY7pz1JlG5DQOMWRvrCnj5Kgs9sxzXp1VJJ+rIqewoBOgl\/BgKsf87fOxVJFYqOmq+LR\/wk8PDKE9VE1XakQBG8kxhSflMQaqC+ObObJfoUC9ruIDK7iFkT8EFV3FVWHu8ZVYmoek3HWabZ36NdRPUyGtDCjOR+CmT8tneRHyqRzy8S4Yk5LyCObTZ+rbI0toveNchZdakUhMLyFFLqkgnc\/g3WJnLpujRy3jgOe6\/+ymb1gaiOnQQA\\\\u003d\\\\u003d\\\",\\\"ephemeralPublicKey\\\":\\\"BKB3qFuCrmNI0bOxVg\/kVCcCtswHrwabcrm18JtPTB+w5L\/d39dnrgaGajdYvdLrFRQc5RyQ52Ug3e151yDNE6E\\\\u003d\\\",\\\"tag\\\":\\\"rJ5SapWOGc\/f4eqzif+P9D\/wSg\/yvfOJ63yVbRc1lGY\\\\u003d\\\"}\"}" }, "type":"CARD", "info":{ "cardNetwork":"VISA", "cardDetails":"3513", "billingAddress":{ "address3":"", "sortingCode":"", "address2":"", "countryCode":"FR", "address1":"109 Rue de l'Innovation", "postalCode":"31670", "name":"My Network", "locality":"Labège", "administrativeArea":"" } } }, "shippingAddress":{ "address3":"", "sortingCode":"", "address2":"", "countryCode":"FR", "address1":"109 Rue de l'Innovation", "postalCode":"31670",

Page 19: Integrar a Google Pay API para seus pagamentos móveis · Integrar a Google Pay API para seus pagamentos móveis - Versão do documento 1.3 Todos os direitos reservados - 3 / 34 1

Integrar a Google Pay API para seus pagamentos móveis - Versão do documento 1.3

Todos os direitos reservados - 19 / 34

"name":"My Network", "locality":"Labège", "administrativeArea":"" }, "email":"[email protected]"}

Page 20: Integrar a Google Pay API para seus pagamentos móveis · Integrar a Google Pay API para seus pagamentos móveis - Versão do documento 1.3 Todos os direitos reservados - 3 / 34 1

Integrar a Google Pay API para seus pagamentos móveis - Versão do documento 1.3

Todos os direitos reservados - 20 / 34

10. ENVIAR OS DADOS PARA A PLATAFORMA DE PAGAMENTO

Agora que o aplicativo móvel recuperou os dados do pagamento, você deve enviá-los ao seu servidor.

Uma vez que os dados forma recebidos pelo servidor, você deve chamar o serviço web de criação depagamento (createPayment) da API Webservices SOAP v5

Sua solicitação conterá os elementos seguintes:

Os cabeçalhos SOAP Obrigatório Permite identificar o estabelecimento comercial e garantir a segurançadas trocas com a plataforma de pagamento.

Um objeto commonRequest Facultativo Permite forçar o número de contrato que será usado para realizar opagamento.

Um objeto cardRequest Obrigatório Permite enviar o payload para a plataforma de pagamento. Uma vezdecifrada, os dados serão usados para realizar o pagamento.

Um objeto paymentRequest Obrigatório Permite enviar as informações do pagamento (valor, moeda etc..)Um objeto customerRequest Facultativo Permite enviar os dados do comprador.Um subobjeto billingRequest Facultativo Permite enviar o endereço de faturamento do comprador.Um subobjeto shippingRequest Facultativo Permite enviar o endereço de entrega do comprador.Um objeto shoppingCartRequest Facultativo Permite enviar informações sobre o conteúdo do carrinho

Observação:

A implementação atual de Google Pay™ não é compatível com o 3D Secure. É portanto inútil enviar o objetothreeDSRequest na sua solicitação.

Etapa 1: Gere SOAP-HEADER como definido na documentação.

Exemplo de header:

<?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Enveloppe xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://v5.ws.vads.lyra.com/" xmlns:ns2="http://v5.ws.vads.lyra.com/Header/"> <SOAP-ENV:Header> <ns2:shopId>12345678</ns2:shopId> <ns2:requestId>70c08d51-214b-4a9b-9e74-eadcdde6710c</ns2:requestId> <ns2:timestamp>2018-07-06T13:51:32Z</ns2:timestamp> <ns2:mode>TEST</ns2:mode> <ns2:authToken>o53KmUXgjqhiyTooIfRjh6wF+NJwVQg790mpbrjTg18=</ns2:authToken> </SOAP-ENV:Header>...

Etapa 2: Crie um objeto commonRequest como definido na documentação se você desejar forçar onúmero de contrato a ser usado para realizar o pagamento.

Etapa 3: Crie um objeto cardRequest:

Atributos do objetocardRequest

Valor

scheme GOOGLEPAY

walletPayload Objeto PaymentData em formato json tal como recebido pelo servidor do estabelecimento comercial.

Os atributos number, expiryYear e expiryMonth tornam-se facultativos quando o atributo scheme tivero valor GOOGLEPAY.

Etapa 4: Crie um objeto paymentRequest :

Atributos do objetocardRequest

Descrição

amount Valor a ser pago. Pode ser diferente do valor enviado no objeto PaymentDataRequest.

Page 21: Integrar a Google Pay API para seus pagamentos móveis · Integrar a Google Pay API para seus pagamentos móveis - Versão do documento 1.3 Todos os direitos reservados - 3 / 34 1

Integrar a Google Pay API para seus pagamentos móveis - Versão do documento 1.3

Todos os direitos reservados - 21 / 34

Atributos do objetocardRequest

Descrição

currency Código numérico da moeda a ser usada para o pagamento.Ex: Ex: 986 para o real do Brasil (BRL)

Etapa 5: Crie um objeto orderRequest:

Atributo do objetoorderRequest

Descrição

orderId Referência do pedido.Recomendamos usar referências de pedido único. Em caso de timeout, esta referência será usadapara encontrar a transação correspondente.

Etapa 6: Gerenciamento dos endereços de entrega e de faturamento.

Se você escolheu um checkout rápido, os dados são automaticamente enviados à plataforma depagamento. Você pode passar para a etapa 7.

Se você gerencia a seleção de endereços com seu aplicativo móvel, você pode enviar estas informaçõesà plataforma de pagamento para que elas estejam exibidas no Back Office. Para isso, crie um objetocustomerRequest.

Etapa 6.1: Crie um objeto billingRequest:

Atributos do objetobillingRequest

Descrição

email Endereço e-mail do comprador.Se você deixar este campo vazio, a plataforma de pagamento recuperará automaticamente o valorda propriedade "email" do payload.

address Primeira linha do endereço de faturamento.Se você deixar este campo vazio, a plataforma de pagamento recuperará automaticamente o valorda propriedade "paymentMethodData.Info.billingAddress.address1" do payload.

zipCode CEP do endereço de faturamento.Se você deixar este campo vazio, a plataforma de pagamento recuperará automaticamente o valor dapropriedade "paymentMethodData.Info.billingAddress.postalCode" do payload.

city Cidade do endereço de faturamento.Se você deixar este campo vazio, a plataforma de pagamento recuperará automaticamente o valor dapropriedade "paymentMethodData.Info.billingAddress.locality" do payload.

country País do endereço de faturamento.Se você deixar este campo vazio, a plataforma de pagamento recuperará automaticamente o valor dapropriedade "paymentMethodData.Info.billingAddress.countryCode" do payload.

firstName Nome do endereço de faturamento.Se você deixar este campo vazio, a plataforma de pagamento recuperará automaticamente o valor dapropriedade "paymentMethodData.Info.billingAddress.name" do payload.

cellPhoneNumber Número de telefone celular.Se você deixar este campo vazio, a plataforma de pagamento recuperará automaticamente o valor dapropriedade "paymentMethodData.Info.billingAddress.phoneNumber" do payload.

Page 22: Integrar a Google Pay API para seus pagamentos móveis · Integrar a Google Pay API para seus pagamentos móveis - Versão do documento 1.3 Todos os direitos reservados - 3 / 34 1

Integrar a Google Pay API para seus pagamentos móveis - Versão do documento 1.3

Todos os direitos reservados - 22 / 34

Etapa 6.2: Crie um objeto shippingRequest:

Atributos do objetoshippingRequest

Descrição

email Endereço e-mail do comprador.Se você deixar este campo vazio, a plataforma de pagamento recuperará automaticamente o valorda propriedade "email" do payload.

address Primeira linha do endereço de faturamento.Se você deixar este campo vazio, a plataforma de pagamento recuperará automaticamente o valorda propriedade "shippingAddress.address1" do payload.

zipCode CEP do endereço de faturamento.Se você deixar este campo vazio, a plataforma de pagamento recuperará automaticamente o valor dapropriedade "shippingAddress.postalCode" do payload.

city Cidade do endereço de faturamento.Se você deixar este campo vazio, a plataforma de pagamento recuperará automaticamente o valor dapropriedade "shippingAddress.locality" do payload.

country País do endereço de faturamento.Se você deixar este campo vazio, a plataforma de pagamento recuperará automaticamente o valor dapropriedade "shippingAddress.countryCode" do payload.

firstName Nome do endereço de faturamento.Se você deixar este campo vazio, a plataforma de pagamento recuperará automaticamente o valor dapropriedade "shippingAddress.name" do payload.

cellPhoneNumber Número de telefone celular.Se você deixar este campo vazio, a plataforma de pagamento recuperará automaticamente o valor dapropriedade "shippingAddress.phoneNumber" do payload.

Etapa 7: Crie um objeto shoppingCartRequest se você desejar enviar informações sobre o conteúdo docarrinho.

Consulte o Guia de implementação - API Webservices SOAP v5 para maiores detalhes sobre a integraçãodo método createPayment().

Page 23: Integrar a Google Pay API para seus pagamentos móveis · Integrar a Google Pay API para seus pagamentos móveis - Versão do documento 1.3 Todos os direitos reservados - 3 / 34 1

Integrar a Google Pay API para seus pagamentos móveis - Versão do documento 1.3

Todos os direitos reservados - 23 / 34

Exemplo de mensagem XML gerada na chamada do método createPayment():

<?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://v5.ws.vads.lyra.com/" xmlns:ns2="http://v5.ws.vads.lyra.com/Header/"> <SOAP-ENV:Header> <ns2:shopId>12345678</ns2:shopId> <ns2:requestId>88c53eb7-6015-4ec6-8045-206e5caa2e2c</ns2:requestId> <ns2:timestamp>2018-07-09T10:15:54Z</ns2:timestamp> <ns2:mode>TEST</ns2:mode> <ns2:authToken>ALxESNJ+mE5htqWccF5OTkYC2noxnDr570DrnI2+5SE=</ns2:authToken> </SOAP-ENV:Header> <SOAP-ENV:Body> <ns1:createPayment> <commonRequest> <paymentSource>EC</paymentSource> </commonRequest> <paymentRequest> <amount>2990</amount> <currency>986</currency> </paymentRequest> <orderRequest> <orderId>myOder</orderId> </orderRequest> <cardRequest> <scheme>GOOGLEPAY</scheme> <walletPayload>{"apiVersionMinor":0,"apiVersion":2,"paymentMethodData":{"description": "Visa •••• 3513","tokenizationData":{"type":"PAYMENT_GATEWAY","token":"{\"signature\": \"MEUCIC1+XSqhtgCWQa\/3k7OFIesJX0SYBtCeOKjD+O2JBWO9AiEAg03FhXVVwD0 NRhiPnjGWdfTqTXm39fnzr+XvHdbecY4\\u003d\",\"protocolVersion\":\"ECv1\",\"signedMessage\":\" {\\\"encryptedMessage\\\":\\\"qjXoUw7ptqWE\/G+PSOb8QoR+hqzM7h1S7iQ3jH\/mxmjJi\/\/M Y5Kem6WmuQxMQbz0pXeX5mxjmUxvbIQzGhtLLELoTWxuAF\/mLSuoIznPbvJNxQ9xGOVM QYuo0jTKqUUv6QrjMBTSCcQx2ktkDS3EjHOWBPTw22mI\/kXz0wn5x6jlMLEUTFkNlPZYjeoFR vUXpw0XoECNdouiiJwub52zmyebY7pz1JlG5DQOMWRvrCnj5Kgs9sxzXp1VJJ+rIqewoBOgl\/B gKsf87fOxVJFYqOmq+LR\/wk8PDKE9VE1XakQBG8kxhSflMQaqC+ObObJfoUC9ruIDK7iFkT8 EFV3FVWHu8ZVYmoek3HWabZ36NdRPUyGtDCjOR+CmT8tneRHyqRzy8S4Yk5LyCObTZ+rb I0toveNchZdakUhMLyFFLqkgnc\/g3WJnLpujRy3jgOe6\/+ymb1gaiOnQQA\\\\u003d\\\\u003d\\\",\\\"e phemeralPublicKey\\\":\\\"BKB3qFuCrmNI0bOxVg\/kVCcCtswHrwabcrm18JtPTB+w5L\/d39dnrga GajdYvdLrFRQc5RyQ52Ug3e151yDNE6E\\\\u003d\\\",\\\"tag\\\":\\\"rJ5SapWOGc\/f4eqzif+P9D\/wS g\/yvfOJ63yVbRc1lGY\\\\u003d\\\"}\"}"},"type":"CARD","info":{"cardNetwork":"VISA","cardDetails": "3513","billingAddress":{"address3":"","sortingCode":"","address2":"","countryCode":"FR","address1" :"109Ruedel'Innovation","postalCode":"31670","name":"Lyranetwork","locality":"Labège", "administrativeArea":""}}},"shippingAddress":{"address3":"","sortingCode":"","address2":"", "countryCode":"FR","address1":"109Ruedel'Innovation","postalCode":"31670","name":"MyNetwork", "locality":"Labège","administrativeArea":""},"email":"[email protected]"}</walletPayload> </cardRequest> <customerRequest> <billingDetails> <email>[email protected]</email> </billingDetails> </customerRequest> <techRequest/> </ns1:createPayment> </SOAP-ENV:Body></SOAP-ENV:Envelope>

Page 24: Integrar a Google Pay API para seus pagamentos móveis · Integrar a Google Pay API para seus pagamentos móveis - Versão do documento 1.3 Todos os direitos reservados - 3 / 34 1

Integrar a Google Pay API para seus pagamentos móveis - Versão do documento 1.3

Todos os direitos reservados - 24 / 34

11. TRATAR O RESULTADO DO PAGAMENTO

Diversos controles são realizados pela plataforma de pagamento quando recebe sua solicitaçãocreatePayment.

Estes controles podem resultar em:

• exceções (SOAP Fault Exception)

• erros aplicativos

Em caso de exceção, a resposta terá um objeto Fault apresentando em detalhe o erro encontrado (errode formato etc..).

Exemplo de resposta quando a loja não tiver as opções obrigatórias para o pagamento Google Pay :

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/"> <SOAP-ENV:Header xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"/> <soap:Body> <soap:Fault> <faultcode xmlns:ns1="http://www.w3.org/2003/05/soap-envelope">ns1:Sender</faultcode> <faultstring> bad.shopId: The shop with shopId 12345678 is not allowed to call the Web Service </faultstring> <detail> <requestId>f269ff49-3b8a-4314-b999-24b39ce03287</requestId> </detail> </soap:Fault> </soap:Body></soap:Envelope>

Se a solicitação for válida, então a resposta terá o objeto commonReponse.

O campo commonReponse.responseCode fornece informações sobre o tratamento da solicitação.

Quando responseCode tiver o valor 0 na resposta, a transação foi criada.

Qualquer outro valor de responseCode informa que a solicitação foi recusada antes do pagamento.

O campo responseCodeDetail detalha o erro encontrado.

Para verificar o status do pagamento, você deve analisar o valor do campocommonResponse.transactionStatusLabel

Os únicos status que podem garantir que um pagamento foi aceito são os seguintes:

• CAPTURED

• AUTHORIZED

• AUTHORIZED_TO_VALIDATE

Quando transactionStatusLabel tiver o valor REFUSED, você deve verificar que o campo paymentError estejapresente no objeto paymentResponse.

Este campo fornece informações sobre as razões da recusa.

Se paymentError não estiver valorizado, analise o campo result do objeto authorizationResponse paraconhecer a razão da recusa do pagamento.

Consulte o Guia de implementação - API Webservices SOAP v5 para ter a lista completa dos erros possíveis.

Page 25: Integrar a Google Pay API para seus pagamentos móveis · Integrar a Google Pay API para seus pagamentos móveis - Versão do documento 1.3 Todos os direitos reservados - 3 / 34 1

Integrar a Google Pay API para seus pagamentos móveis - Versão do documento 1.3

Todos os direitos reservados - 25 / 34

Exemplo de resposta retornada em caso de pagamento aceito

<soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/ xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://v5.ws.vads.lyra.com/" xmlns:ns2="http://v5.ws.vads.lyra.com/Header/" "><SOAP-ENV:Header> <shopId>12345678</shopId> <requestId>8bb621fa-8512-45cc-b695-a30fe104cb06</requestId> <timestamp>2018-07-11T09:51:00Z</timestamp> <mode>TEST</mode> <authToken>Le5sPmTnoE8xh3qtU7F1SxhaieO3rh9uLxQpy/4bEu4=</authToken></SOAP-ENV:Header><soap:Body> <ns2:createPaymentResponse> <createPaymentResult> <requestId>8bb621fa-8512-45cc-b695-a30fe104cb06</requestId> <commonResponse> <responseCode>0</responseCode> <responseCodeDetail>Action successfully completed</responseCodeDetail> <transactionStatusLabel>AUTHORISED</transactionStatusLabel> <shopId>91335531</shopId> <paymentSource>EC</paymentSource> <submissionDate>2018-07-11T11:51:00.749+02:00</submissionDate> <contractNumber>5555555</contractNumber> </commonResponse> <paymentResponse> <transactionId>927452</transactionId> <amount>2990</amount> <currency>986</currency> <expectedCaptureDate>2018-07-11T11:51:00.791+02:00</expectedCaptureDate> <operationType>0</operationType> <creationDate>2018-07-11T11:51:00.791+02:00</creationDate> <liabilityShift>NO</liabilityShift> <transactionUuid>3257eebe44ab4b409315022735c45c2a</transactionUuid> <sequenceNumber>1</sequenceNumber> <paymentType>SINGLE</paymentType> </paymentResponse> <orderResponse> <orderId>myOder</orderId> </orderResponse> <cardResponse> <number>411111XXXXXX1111</number> <scheme>VISA</scheme> <brand>VISA</brand> <country>GB</country> <bankCode>0169</bankCode> <expiryMonth>12</expiryMonth> <expiryYear>2023</expiryYear> </cardResponse> <authorizationResponse> <mode>FULL</mode> <amount>2990</amount> <currency>9868</currency> <date>2018-07-11T11:51:00.791+02:00</date> <number>3fe3c2</number> <result>0</result> </authorizationResponse> <captureResponse/> <customerResponse> <billingDetails> <language>fr_FR</language> </billingDetails> <shippingDetails/> <extraDetails/> </customerResponse> <markResponse/> <threeDSResponse> <authenticationResultData> <transactionCondition>COND_SSL</transactionCondition> </authenticationResultData> </threeDSResponse> <extraResponse/> <fraudManagementResponse> <riskControl> <name>CARD_FRAUD</name> <result>OK</result> </riskControl> </fraudManagementResponse> </createPaymentResult> </ns2:createPaymentResponse></soap:Body></soap:Envelope>

Page 26: Integrar a Google Pay API para seus pagamentos móveis · Integrar a Google Pay API para seus pagamentos móveis - Versão do documento 1.3 Todos os direitos reservados - 3 / 34 1

Integrar a Google Pay API para seus pagamentos móveis - Versão do documento 1.3

Todos os direitos reservados - 26 / 34

12. PASSAR EM MODO DE PRODUÇÃO

Se sua integração for correta, você conseguiu criar uma transação Google Pay no ambiente de teste.

Você deve agora pedir a validação do seu processo para Google.

1. Google disponibiliza a lista dos pontos a serem verificados:

https://developers.google.com/pay/api/android/guides/test-and-deploy/integration-checklist

2. Uma vez que todos os pontos forem aprovados, você deve preencher o formulário seguinte parasolicitar a passagem em produção:

https://services.google.com/fb/forms/googlepayAPIenable/

3. Quando Google lhe pedirá seu aplicativo de produção, modifique o método onCreate do seu Activitycomo segue:

... builder.setEnvironment(WalletConstants.ENVIRONMENT_PRODUCTION)...

Se você usar o código de exemplo, modifique o valor da variável PAYMENT_MODE em PRODUCTION no arquivoMainActivity.kt.

4. Modifique então a chamada createPayment realizada pelo seu servidor vendedor para usar a chave deprodução quando gerar o SOAP HEADER.

5. Modifique o valor do cabeçalho mode no seu método createPayment como segue:

<?xml version="1.0" encoding="UTF-8"?> <SOAP-ENV:Enveloppe xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns1="http://v5.ws.vads.lyra.com/" xmlns:ns2="http://v5.ws.vads.lyra.com/Header/"> <SOAP-ENV:Header> <ns2:shopId>70258842</ns2:shopId> <ns2:requestId>b2e0beab-371e-4751-9aa7-20d69daac1ac</ns2:requestId> <ns2:timestamp>2018-07-09T12:37:51Z</ns2:timestamp> <ns2:mode>PRODUCTION</ns2:mode> <ns2:authToken>x7JqR7QLDRc4bsM57nOyf5xzKqlalEqPmeai1EAOZDM=</ns2:authToken> </SOAP-ENV:Header>

6. Envie seu aplicativo configurado em modo produção para Google para realizar os últimos testes.

O aplicativo deverá ser assinado com a chave de release. A chave de debug não funcionará em ambientede produção.

7. Quando Google autorizar, ative os pagamentos Google Pay no Google Pay Developer Profile para esteaplicativo, e instale o aplicativo no Google Play Store.

Para maiores detalhes, você pode consultar as instruções de instalação de um aplicativo:

https://developers.google.com/pay/api/android/guides/test-and-deploy/deploy-your-application?authuser=1

Após a passagem em produção, se você realizar uma chamada com WalletConstants.ENVIRONMENT_TEST, aparecerá amenção abaixo quando exibir o bottom sheet Google Pay:"Aplicativo desconhecido. Favor continuar somente se você confiar em este aplicativo."

Page 27: Integrar a Google Pay API para seus pagamentos móveis · Integrar a Google Pay API para seus pagamentos móveis - Versão do documento 1.3 Todos os direitos reservados - 3 / 34 1

Integrar a Google Pay API para seus pagamentos móveis - Versão do documento 1.3

Todos os direitos reservados - 27 / 34

13. GERENCIAR SUAS TRANSAÇÕES GOOGLE PAY™ NO BACKOFFICE PAYZEN

O Back Office permite realizar diferentes ações nas transações Google Pay™ em função dos status delas:

Ações disponíveis na aba Transações em andamento:

• Exibir o detalhe da transação

• Validar

• Modificar

• Cancelar

• Capturar manualmente (Somente para as transações realizadas no ambiente de teste)

• Editar a referência do pedido

• Reenviar o e-mail de confirmação da transação ao comprador

• Reenviar o e-mail de confirmação da transação ao estabelecimento comercial.

Ações disponíveis na aba Transações capturadas:

• Reembolsar

• Duplicar

• Editar a referência do pedido

• Reenviar o e-mail de confirmação da transação ao comprador

• Reenviar o e-mail de confirmação da transação ao estabelecimento comercial

• Conciliação manual.

Você pode ter acesso a estas ações de três maneiras diferentes:

• pela barra de menus.

• fazendo um clique direito.

• embaixo da janela do Detalhe da transação.

13.1. Exibir o detalhe da transação Google Pay™

As transações estão disponíveis no Back Office Estabelecimento no menu Gerenciamento > Transações.

No menu Gerenciamento, o estabelecimento comercial pode acessar às transações reais e às transaçõesde TESTE.

Observação:

Segundo os diretos de acesso, as transações de TESTE (por exemplo: perfil desenvolvedor) e/ou astransações reais (por exemplo: perfil contador) podem ser exibidas.

Page 28: Integrar a Google Pay API para seus pagamentos móveis · Integrar a Google Pay API para seus pagamentos móveis - Versão do documento 1.3 Todos os direitos reservados - 3 / 34 1

Integrar a Google Pay API para seus pagamentos móveis - Versão do documento 1.3

Todos os direitos reservados - 28 / 34

Por padrão, a interface exibe o conteúdo da aba Transações em andamento. Apresenta todas astransações do dia.

Particularidades de um pagamento realizado com Google Pay™ :

Os pagamentos realizados com sucesso estão disponíveis no Back Office Estabelecimento, na abaTransações em andamento.

Os pagamentos em falha estão disponíveis no Back Office Estabelecimento, na aba Transações emandamento.

Para exibir o detalhe de uma transação:

1. Selecione uma transação.

2. Clique direito e selecione Exibir o detalhe da transação ou clique duas vezes na transação desejada.

A janela Detalhe de uma transação em andamento aparece.

Dentre as informações apresentadas, você encontrará por exemplo :

• o meio de pagamento usado

• a referência do pedido

• o valor da transação

• a data de criação da transação

• o status da transação

• O tipo de carteira eletrônica usado: Google Pay™

3. Clique na aba Auth.Google Pay para visualizar as informações sobre a autenticação Google Pay™.

Page 29: Integrar a Google Pay API para seus pagamentos móveis · Integrar a Google Pay API para seus pagamentos móveis - Versão do documento 1.3 Todos os direitos reservados - 3 / 34 1

Integrar a Google Pay API para seus pagamentos móveis - Versão do documento 1.3

Todos os direitos reservados - 29 / 34

13.2. Validar uma transação

A ação Validar está disponível quando a transação tiver um dos status seguintes :

• Para validar

• Para validar e autorizar

Este ação permite validar a captura no banco da transação. Uma transação que não foi validada antes dadata de vencimento da solicitação de autorização se tornará vencida. Não poderá mais ser capturada nobanco.

Para validar uma transação:

1. Selecione a aba Transações em andamento

2. Selecione a transação

3. Clique em Validar

Uma vez a transação aprovada, o status torna-se:

• "Aguardando captura" para as transações cujo status era "Para validar",

• "Aguardando autorização" para as transações cujo status era "Para validar e autorizar",

Page 30: Integrar a Google Pay API para seus pagamentos móveis · Integrar a Google Pay API para seus pagamentos móveis - Versão do documento 1.3 Todos os direitos reservados - 3 / 34 1

Integrar a Google Pay API para seus pagamentos móveis - Versão do documento 1.3

Todos os direitos reservados - 30 / 34

13.3. Modificar uma transação

A ação Modificar está disponível quando a transação tiver um dos status seguintes :

• Para validar

• Para validar e autorizar

• Aguardando autorização

• Aguardando captura

Esta ação permite modificar o valor e a data de captura no banco conforme as regras seguintes:

• O valor modificado não pode ser superior ao valor inicial.

• Quando a transação ainda não foi autorizada, a data de captura pode ser qualquer data entre a dataatual e a data de captura especificada pelo estabelecimento comercial durante o pagamento.Uma solicitação de autorização será automaticamente enviada se a data de captura escolhidaencontrar-se entre a data atual e data de fim de validade de uma solicitação de autorização.

• Quando a transação já foi autorizada, a data de captura no banco não pode ultrapassar a data devalidade da autorização.

Para alterar uma transação:

1. Selecione a aba Transações em andamento

2. Selecione a transação.

3. Clique em Modificar.

A caixa de diálogo Alteração de uma transação abre.

4. Se você desejar modificar o valor da transação, informe um novo valor.

Lembre-se que o novo valor deve ser inferior ao valor inicial.

5. Se você desejar modificar a data de captura no banco, informe a data de captura.

O calendário apresentará as datas autorizadas para a captura no banco. As datas são calculadasconforme o prazo de validade da autorização. Este prazo depende do meio de pagamento e de qualrede foi usada para realizar a solicitação de autorização.

Você poderá validar as transações com o status Para validar ou Para validar e autorizar, assinalandoa caixa Validar a transação.

6. Clique em Validar.

Se você quiser, pode exibir o detalhe da transação para consultar estas modificações (clique direito natransação modificada > Exibir o detalhe da transação).

Page 31: Integrar a Google Pay API para seus pagamentos móveis · Integrar a Google Pay API para seus pagamentos móveis - Versão do documento 1.3 Todos os direitos reservados - 3 / 34 1

Integrar a Google Pay API para seus pagamentos móveis - Versão do documento 1.3

Todos os direitos reservados - 31 / 34

13.4. Cancelar uma transação

A opção Cancelar está disponível somente para as transações que não foram capturadas.

1. Clique direito em uma transação.

2. Selecione Cancelar.

3. Confirme que você quer cancelar definitivamente a transação selecionada.

O status da transação se tornará Cancelado.

Observação

É possível cancelar mais de uma transação ao mesmo tempo.

Basta selecionar a totalidade das transações a serem canceladas. Você pode usar a tecla Ctrl e o cliquepara fazer uma seleção múltipla.

Após a seleção, você pode clicar em Cancelar com o clique direito ou na barra de menu, e confirmar suaescolha.

Os status das transações se tornarão Cancelado.

Page 32: Integrar a Google Pay API para seus pagamentos móveis · Integrar a Google Pay API para seus pagamentos móveis - Versão do documento 1.3 Todos os direitos reservados - 3 / 34 1

Integrar a Google Pay API para seus pagamentos móveis - Versão do documento 1.3

Todos os direitos reservados - 32 / 34

13.5. Editar a referência do pedido

Esta operação permite ao vendedor mudar a referência de pedido.

Para editar a referência pedido de uma transação:

1. Clique direito na transação.

2. Selecione Editar a referência do pedido.

3. Digite a nova referência do pedido

4. Clique em OK.

13.6. Reenviar o e-mail de confirmação da transação ao comprador

Para enviar de novo o e-mail de confirmação da transação para o comprador, se o e-mail não foirecebido ou se precisar corrigir o endereço e-mail.

1. Procure a transação.

2. Clique direito na transação.

3. Clique direito na transação e clique em Reenviar o e-mail de confirmação da transação aocomprador.

A janela para digitar o endereço e-mail do comprador abre.

4. Digitar o endereço e-mail.

5. Clique em OK.

13.7. Reenviar o e-mail de confirmação da transação ao estabelecimentocomercial

Para enviar de novo o e-mail de confirmação da transação para o vendedor.

1. Procure a transação.

2. Clique direito na transação e clique em Reenviar o e-mail de confirmação da transação aoestabelecimento comercial.

Uma mensagem de confirmação de envio é exibida.

3. Clique em OK.

Page 33: Integrar a Google Pay API para seus pagamentos móveis · Integrar a Google Pay API para seus pagamentos móveis - Versão do documento 1.3 Todos os direitos reservados - 3 / 34 1

Integrar a Google Pay API para seus pagamentos móveis - Versão do documento 1.3

Todos os direitos reservados - 33 / 34

13.8. Capturar uma transação

A opção Capturar está disponível somente para as transações que não foram capturadas.

Para capturar manualmente uma transação:

1. Selecione a aba Transações em andamento.

2. Clique direito em uma transação.

3. Selecione Capturar manualmente.

4. Confirme que você quer capturar selecionada.

13.9. Conciliação manual

Esta operação permite realizar a conciliação manual dos pagamentos de um vendedor a partir de umextrato bancário.

1. Na aba Transações capturadas, procure a transação desejada.

2. Clique direito na transação.

3. Selecione Conciliação manual.

4. Clique em Sim para confirmar a conciliação manual da transação selecionada.

A janela Comentário abre.

5. Digite um comentário para esta conciliação.

6. Clique em OK.

O status de conciliação da transação se tornará Conciliado.

Page 34: Integrar a Google Pay API para seus pagamentos móveis · Integrar a Google Pay API para seus pagamentos móveis - Versão do documento 1.3 Todos os direitos reservados - 3 / 34 1

Integrar a Google Pay API para seus pagamentos móveis - Versão do documento 1.3

Todos os direitos reservados - 34 / 34

13.10. Realizar um reembolso

A ação Realizar um reembolso se encontra disponível quando a transação tiver o status apresentado.

Esta transação permite creditar de volta a conta de um comprador.

A conta de um comprador é creditada com o valor reembolsado, e o mesmo valor é debitado da contado estabelecimento comercial.

Em função do adquirente, pode-se reembolsar parte ou a totalidade do valor da transação.

O prazo de reembolso efetivo nas contas depende também do adquirente.

Para realizar um reembolso:

1. Selecione a aba Transações capturadas.

2. Selecione a transação.

3. Clique em Reembolsar.

A caixa de diálogo Reembolso da transação abre.

Exemplo de reembolso total Exemplo de reembolso parcial

4. Digite o valor que deseja reembolsar.

A caixa de texto abre se o reembolso parcial for possível.

5. Clique em Realizar o reembolso.

O detalhe da transação de reembolso aparece.