Divisão de pagamentos em cartões nos SDKs
Configure e utilize a divisão de dois cartões através do DEUNA Payment Widget ou Elements nos SDKs suportados.
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:
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#
Ativar o comportamento#
await DeunaSDK.initPaymentWidget({
orderToken,
behavior: {
paymentMethods: {
creditCard: {
splitPayments: {maxCards: 2},
},
},
},
callbacks,
});await deunaSDK.initPaymentWidget({
orderToken,
mode: 'modal',
behavior: {
paymentMethods: {
creditCard: {
splitPayments: {maxCards: 2},
},
},
},
callbacks,
});let behavior: Json = [
"paymentMethods": [
"creditCard": [
"splitPayments": ["maxCards": 2]
]
]
]
deunaSDK.initPaymentWidget(
orderToken: orderToken,
callbacks: callbacks,
behavior: behavior
)val behavior: Json = mapOf(
"paymentMethods" to mapOf(
"creditCard" to mapOf(
"splitPayments" to mapOf("maxCards" to 2)
)
)
)
deunaSDK.initPaymentWidget(
context = this,
orderToken = orderToken,
callbacks = callbacks,
behavior = behavior
)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#
| Sinal | Uso |
|---|---|
onCardBinDetected / onBinDetected | Detectar o BIN da carta ativa sem coletar dados brutos da carta. |
onInstallmentSelected | Associe a opção de plano selecionada ao cartão que está a ser configurado. |
paymentMethodSplitPayments | Evento nativo do Elemento indicando o caminho de divisão de pagamento. |
paymentProcessing / onPaymentProcessing | Bloquear ações duplicadas enquanto a operação combinada estiver em andamento. |
purchase, purchaseError, purchaseRejected | Apenas 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ário | Comportamento do comerciante |
|---|---|
| Primeira tentativa falha antes da segunda ter sucesso | Mantenha o pedido aberto apenas se o estado atual do pedido permitir uma nova tentativa. |
| Uma tentativa é bem-sucedida e a outra falha | Reconcilie ambas as tentativas; não envie um novo pagamento completo sem validação. |
| Cliente cancela durante o processo | Recupere o pedido antes de restaurar as opções de pagamento. |
| Cliente perde a conexão | Trate o resultado como desconhecido até que o backend responda. |
| Duplicidade de toque ou tentativa | Use 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.