Aceitar um pagamento OXXO
Veja como aceitar OXXO, uma forma de pagamento comum no México.
Cuidado
Recomendamos seguir o guia Aceitar um pagamento, a menos que precise usar confirmação manual no lado do servidor ou que sua integração exija apresentação separada de formas de pagamento. Se você já fez a integração com o Elements, consulte o guia de migração do Payment Element.
Para receber OXXO em seu aplicativo, é preciso exibir uma visualização web da guia OXXO. O cliente recebe uma guia com um número específico e paga em dinheiro em uma loja de conveniência OXXO. Você recebe um aviso da Stripe quando o pagamento é recebido.
Configurar a StripeLado do servidorLado do cliente
Primeiro, você precisa de uma conta Stripe. Inscreva-se aqui.
Lado do servidor
Esta integração exige que os endpoints do seu servidor se comuniquem com a API Stripe. Use as bibliotecas oficiais para acessar a API Stripe do seu servidor:
Lado do cliente
O SDK da Stripe para Android é de código aberto e totalmente documentado.
Para instalar o SDK, adicione stripe-android ao bloco dependencies do arquivo app/build.gradle:
Observação
Veja mais informações sobre o último lançamento de SDK e as versões anteriores na página Lançamentos no GitHub. Para receber notificações quando um novo lançamento for publicado, assista aos lançamentos do repositório.
Configure o SDK com sua chave publicável da Stripe, de modo que seja possível fazer solicitações à API Stripe, como em sua subcategoria Application:
Observação
Use suas chaves de teste enquanto testa e desenvolve, e suas chaves de modo de produção quando publicar seu aplicativo.
Nossas amostras de código também usam OkHttp e GSON para fazer solicitações HTTP a um servidor.
Crie um PaymentIntentLado do servidorDo lado do cliente
Um PaymentIntent é um objeto que representa sua intenção de coletar o pagamento de um cliente, acompanhando todas as etapas do ciclo de vida do processo de pagamento.
Lado do servidor
Crie um PaymentIntent no seu servidor com um valor e a moeda mxn (OXXO não aceita outras moedas). Se você já tiver uma integração usando a API Payment Intents, adicione oxxo à lista de tipos de forma de pagamento para o seu PaymentIntent.
Outras opções da forma de pagamento
Você pode especificar um parâmetro opcional expires_ nas opções da forma de pagamento para o PaymentIntent, definindo os dias corridos até o vencimento de uma guia OXXO. Por exemplo, se você criar uma guia OXXO na segunda-feira e a configuração de expires_ for 2, a guia vencerá na quarta-feira, às 23h59, horário da América/Mexico_City (UTC-6). O parâmetro expires_ pode ser de 1 a 7 dias. O padrão é 3 dias.
Lado do cliente
No cliente, solicite um PaymentIntent a partir de seu servidor e armazene o segredo de cliente.
Coletar dados da forma de pagamentoDo lado do cliente
No seu aplicativo, colete os seguintes dados de cobrança obrigatórios do cliente. Crie um PaymentMethodCreateParams com esses dados.
| Campo | Valor |
|---|---|
name | Nome completo (nome e sobrenome) do cliente. O nome e o sobrenome precisam ter pelo menos dois caracteres cada um. |
email | Endereço de e-mail completo do cliente. |
Enviar o pagamento para a StripeDo lado do cliente
Obtenha o segredo do cliente no PaymentIntent criado na etapa 2 e chame PaymentLauncher confirm. Será apresentada uma visualização web da guia OXXO. Em seguida, onPaymentResult é chamado com o resultado do pagamento.
Opcional: envie e-mail ao cliente com um link para a guia de pagamento
A Stripe envia um evento payment_intent.requires_action quando uma guia OXXO é criada. Se precisar enviar um e-mail ao cliente com o link para a guia, acesse o PaymentIntent para obter o link, após receber o evento. O campo hosted_ em payment_intent.next_action.oxxo_display_details contém o link para a guia.
Opcional: personalizar a guia
A Stripe permite personalizar as IUs exibidas para seus clientes na página Configurações da marca.
Estas configurações de marca podem ser aplicadas à guia:
- Ícone: a imagem de sua marca e nome fantasia da empresa
- Cor de destaque: usada no botão Copiar número
- Cor da marca: usada como cor de fundo
Gerenciar eventos pós-pagamentoLado do servidor
A OXXO é uma forma de pagamento com notificação posterior: os fundos não ficam disponíveis imediatamente. Os clientes podem não pagar a guia OXXO em uma loja de conveniência OXXO imediatamente após o checkout.
A Stripe envia um evento payment_intent.succeeded no dia útil seguinte (de segunda a sexta, exceto feriados do calendário mexicano) para todas as guias OXXO pagas. Use o Dashboard ou crie um gerenciador de webhooks para receber esses eventos e executar ações (por exemplo, enviar um e-mail de confirmação de pedido ao cliente, registrar a venda em um banco de dados ou iniciar um fluxo de entrega).
Após a data de validade, o status do PaymentIntent muda para processing e o cliente não pode mais pagar a guia OXXO vencida. Se a guia não for paga até 23:59 (horário da Mexico_City/UTC-6) da data de validade, a Stripe envia um evento payment_intent.payment_failed até 10 dias corridos após a data de validade (na maioria dos casos, o evento é enviado dentro de 7 dias corridos). Por exemplo, se a guia OXXO vencer em 1º de setembro, o evento será enviado no máximo até 10 de setembro.
| Evento | Descrição | Próximas etapas |
|---|---|---|
payment_ | A guia OXXO é criada. | Espere que o cliente pague a guia OXXO. |
payment_ | O cliente não pode mais pagar a guia OXXO. | Aguarde a confirmação ou falha do pagamento. |
payment_ | O cliente pagou a guia OXXO antes do vencimento. | Execute o pedido de mercadorias ou serviços do cliente. |
payment_ | O cliente não pagou a guia OXXO antes do vencimento. | Entre em contato com o cliente por e-mail ou notificação push e solicite outra forma de pagamento. |
Receber eventos e tomar providências comerciais
Manualmente
Use o Stripe Dashboard para ver todos os pagamentos da Stripe, enviar recibos por e-mail, lidar com repasses ou tentar novamente pagamentos com falha.
Código personalizado
Crie um gerenciador de webhooks para ouvir eventos e criar fluxos personalizados de pagamentos assíncronos. Teste e depure a integração do webhook localmente usando a CLI da Stripe.
Testar a integração
Em uma área restrita, defina PaymentMethod.BillingDetails#email de acordo com os valores a seguir ao chamar Stripe# confirmPayment() para testar diferentes cenários.
| Descrição | |
|---|---|
| Simula uma guia OXXO paga pelo cliente depois de 3 minutos, com o webhook Exemplo: fulano@test.com |
| Simula uma guia OXXO paga imediatamente pelo cliente, com o webhook Exemplo: succeed_immediately@test.com |
| Simula uma guia OXXO que vence sem ser paga pelo cliente, com o webhook O campo Exemplo: expire_immediately@test.com |
| Simula uma guia OXXO que vence sem ser paga pelo cliente, com o webhook O campo Exemplo: expire_with_delay@test.com |
| Simula uma guia OXXO que expira sem ser paga pelo cliente, com o webhook Exemplo: fill_never@test.com |
Validade e cancelamento
As guias do OXXO expiram após o carimbo de data e hora do UNIX expires_ e o cliente não pode pagá-lo após a expiração. As guias do OXXO não podem ser canceladas antes de expirar.
Depois do vencimento da guia OXXO, o status do PaymentIntent muda para requires_. Neste ponto, você pode confirmar o PaymentIntent com outra forma de pagamento ou cancelar.