Pular para o conteúdo principal
Nesta página

A divisão de pagamentos permite que um cliente distribua um pedido em vários cartões numa experiência DEUNA suportada. Os exemplos públicos atuais do SDK configuram dois cartões com behavior.paymentMethods.creditCard.splitPayments.maxCards.

Veja o Split Payments no checkout#

A demonstração a seguir mostra um cliente dividindo um pedido em dois cartões na experiência de checkout DEUNA:

O Split Payments permite que o cliente distribua o total do pedido entre os cartões compatíveis. Assista à demonstração diretamente no YouTube se o player incorporado não estiver disponível.

Use a demonstração para orientação visual. Seu back-end ainda deve reconciliar todas as tentativas e verificar o estado geral do pedido antes do atendimento.

Fluxo de pagamento#

Diagrama de fluxo
1One merchant order2Card 1 amount andauthorization3Card 2 remainingamount andauthorization4-- Partial or failed5Verify final orderstate6Reconcile attemptsand show recovery
Comerciante ou clienteExceção ou interrupçãoResultado
01 · order
Criar um pedido
Mantenha os totais e a moeda como autoritativos no backend.
02 · widget
Ativar dois cartões
Transmita o comportamento de divisão para o Payment Widget ou Elements.
03 · customer
Alocar e enviar
A experiência valida os valores e processa os cartões configurados.
04 · backend
Reconciliar todos os tentos
Satisfazer apenas quando o pedido atinge o estado final necessário.

Ativar o comportamento#

await DeunaSDK.initPaymentWidget({
  orderToken,
  behavior: {
    paymentMethods: {
      creditCard: {
        splitPayments: {maxCards: 2},
      },
    },
  },
  callbacks,
});

Web e React Native utilizam o objeto de comportamento. iOS e Android aceitam a mesma estrutura JSON pública. Mantenha a grafia e a aninhamento das chaves exatamente como mostrado.

Eventos e callbacks#

SinalUso
onCardBinDetected / onBinDetectedDetectar o BIN da carta ativa sem coletar dados brutos da carta.
onInstallmentSelectedAssocie a opção de plano selecionada ao cartão que está a ser configurado.
paymentMethodSplitPaymentsEvento nativo do Elemento indicando o caminho de divisão de pagamento.
paymentProcessing / onPaymentProcessingBloquear ações duplicadas enquanto a operação combinada estiver em andamento.
purchase, purchaseError, purchaseRejectedApenas no ciclo de vida do cliente; reconcilie sempre o pedido e os seus tentos.

Não reconstrua o resultado financeiro somando eventos do cliente. Utilize os registos atuais do pedido e da transação no backend.

Falhas e recuperação#

Pagamentos divididos podem resultar em um estado operacional parcial: uma tentativa pode atingir um estado diferente de outra. Projete o caminho de recuperação antes de habilitar a funcionalidade.

CenárioComportamento do comerciante
Primeira tentativa falha antes da segunda ter sucessoMantenha o pedido aberto apenas se o estado atual do pedido permitir uma nova tentativa.
Uma tentativa é bem-sucedida e a outra falhaReconcilie ambas as tentativas; não envie um novo pagamento completo sem validação.
Cliente cancela durante o processoRecupere o pedido antes de restaurar as opções de pagamento.
Cliente perde a conexãoTrate o resultado como desconhecido até que o backend responda.
Duplicidade de toque ou tentativaUse seus controles de operação e estratégia de idempotência documentada.

Matriz de testes#

  • Duas cartões com alocação e precisão de moeda compatíveis.
  • Parcelas em um cartão elegível e sem parcelas em um cartão não elegível.
  • Rejeição na primeira e segunda tentativa separadamente.
  • Desligamento do aplicativo, atualização ou perda de rede entre os cartões.
  • Cliente cancela após inserir um cartão.
  • Autorização lenta e múltiplas tentativas de envio.
  • Webhook e estado da API correspondentes à tela de confirmação do cliente.