Parcelas
Configure campanhas MSI e MCI, obtenha as opções aplicáveis a um pedido e envie a seleção exata do cliente junto com o pagamento.
Nesta página
Campanhas de parcelamento transformam as regras do comerciante em opções de pagamento que a DEUNA pode exibir para um pedido específico e cartão. Uma campanha não cobra o cliente diretamente. Ela define os termos elegíveis; o checkout recupera esses termos e o pedido envia a opção exata selecionada pelo cliente.
O que é uma campanha de parcelamento?#
Uma campanha é um conjunto de regras de elegibilidade e preços, definido pelo comerciante. No DEUNA Admin, você escolhe o tipo de campanha, a moeda, o período de validade, os provedores de pagamento, os termos de parcelamento e as regras de marca de cartão. Cada regra de marca de cartão pode definir um valor mínimo e máximo por parcela e a taxa ou custo do comerciante aplicável.
No checkout, a DEUNA combina a campanha com o contexto de pagamento em tempo real. Uma opção é retornada somente quando as condições relevantes forem atendidas.
| Contexto da campanha ou pagamento | Como isso afeta o resultado |
|---|---|
| Comerciante, loja, status e datas | A campanha deve pertencer ao comerciante, aplicar-se à loja do pedido, estar ativa e estar dentro do seu período de validade. Uma campanha sem sobreposição de loja aplica-se a all. |
| Moeda | A moeda da opção da campanha deve corresponder à moeda do pedido. |
| Marca do cartão | A DEUNA determina a marca a partir do BIN fornecido ou armazenado e aplica a regra de marca correspondente. |
| Faixa de valores por parcela | O valor calculado de cada parcela deve atender ao mínimo e, opcionalmente, ao máximo configurados para esse período e marca. |
| Provedor de pagamento | Pelo menos um processador configurado na campanha deve ser elegível para o pagamento. |
| Restrições de roteamento | O roteamento inteligente ou dinâmico pode remover processadores ou termos de parcelamento que não são válidos para a rota selecionada. |
De campanha para pagamento#
Para DEUNA Widgets, a experiência de checkout suportada recupera e apresenta as opções aplicáveis. Para uma integração direta via API, seu checkout recupera, exibe os valores retornados e envia a seleção com o Purchase V2.
1. Configure uma campanha#
Abra Configuração de parcelas no DEUNA AdminUm usuário precisa ter permissão para visualizar campanhas de parcelamento; criar, editar, ativar ou desativar requer a permissão correspondente de edição.
- Escolha
MSIouMCINomeie a campanha e confirme sua moeda. - Defina uma data de início e fim opcional, ou deixe a campanha sem um período de validade fixo.
- Selecione um ou mais provedores de pagamento compatíveis.
- Adicione os termos de parcelamento à oferta.
- Para cada termo, habilite as marcas de cartão e configure o intervalo e a taxa ou o custo por parcela.
- Salve e ative a campanha.
O suporte do provedor, os acordos comerciais e a configuração da conta determinam quais processadores aparecem. Confirme os requisitos não suportados ou específicos do mercado com seu Gerente de Contas Técnico da DEUNA (TAM).
2. Obtenha as opções aplicáveis#
Use o token de pedido e um BIN de cartão para obter as opções para um novo cartão. Um fluxo de cartão armazenado pode usar seu identificador de cartão suportado. Como a elegibilidade depende do pedido, uma jornada API direta que exibe parcelamentos antes do pagamento precisa de um token de pedido.
curl --request GET \
--url 'https://api.sandbox.deuna.io/merchants/transactions/orders/ORDER_TOKEN/installments?bin=411111' \
--header 'X-Api-Key: YOUR_PRIVATE_API_KEY' \
--header 'X-Merchant-ID: YOUR_MERCHANT_ID'const response = await fetch("https://api.sandbox.deuna.io/merchants/transactions/orders/ORDER_TOKEN/installments?bin=411111", {
method: "GET",
headers: {
"X-Api-Key": "YOUR_PRIVATE_API_KEY",
"X-Merchant-ID": "YOUR_MERCHANT_ID"
}
});
if (!response.ok) throw new Error(`Request failed: ${response.status}`);
const data = await response.json();import requests
response = requests.request(
"GET",
"https://api.sandbox.deuna.io/merchants/transactions/orders/ORDER_TOKEN/installments?bin=411111",
headers={
"X-Api-Key": "YOUR_PRIVATE_API_KEY",
"X-Merchant-ID": "YOUR_MERCHANT_ID"
},
)
response.raise_for_status()
data = response.json()<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.sandbox.deuna.io/merchants/transactions/orders/ORDER_TOKEN/installments?bin=411111",
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => [
"X-Api-Key: YOUR_PRIVATE_API_KEY",
"X-Merchant-ID: YOUR_MERCHANT_ID"
]
]);
$response = curl_exec($curl);
curl_close($curl);import java.net.URI;
import java.net.http.HttpClient;
import java.net.http.HttpRequest;
import java.net.http.HttpResponse;
public class Example {
public static void main(String[] args) throws Exception {
HttpRequest request = HttpRequest.newBuilder()
.uri(URI.create("https://api.sandbox.deuna.io/merchants/transactions/orders/ORDER_TOKEN/installments?bin=411111"))
.header("X-Api-Key", "YOUR_PRIVATE_API_KEY")
.header("X-Merchant-ID", "YOUR_MERCHANT_ID")
.method("GET", HttpRequest.BodyPublishers.noBody())
.build();
HttpResponse<String> response = HttpClient.newHttpClient().send(
request, HttpResponse.BodyHandlers.ofString()
);
System.out.println(response.body());
}
}package main
import (
"fmt"
"io"
"net/http"
)
func main() {
request, err := http.NewRequest("GET", "https://api.sandbox.deuna.io/merchants/transactions/orders/ORDER_TOKEN/installments?bin=411111", nil)
if err != nil { panic(err) }
request.Header.Set("X-Api-Key", "YOUR_PRIVATE_API_KEY")
request.Header.Set("X-Merchant-ID", "YOUR_MERCHANT_ID")
response, err := http.DefaultClient.Do(request)
if err != nil { panic(err) }
defer response.Body.Close()
body, _ := io.ReadAll(response.Body)
fmt.Println(string(body))
}Veja Listar opções de parcelamento para o contrato completo.
A opção retornada contém os valores que o checkout deve exibir e preservar:
{
"installments": [
{
"installments": 6,
"installments_amount": 16667,
"display_installments_amount": "MXN 166.67",
"installment_rate": 0,
"display_installment_label": "6 payments of MXN 166.67 without interest",
"plan_option_id": "a4756a5f-7f9b-414d-8712-e3a9da2be337",
"installment_total_amount": 100000,
"display_installment_total_amount": "MXN 1,000.00"
}
]
}Os valores são expressos na menor unidade da moeda. Use os campos de exibição para a comunicação com o cliente quando forem retornados, e mantenha os campos numéricos para cálculos e reconciliação.
3. Envie a opção selecionada#
Enviar tanto valores do mesmo item de resposta:
payment_source.card_info.installments: o número de parcelas selecionado.payment_source.card_info.installment.plan_option_id: o ID exato dessa opção selecionada.
{
"order_token": "ORDER_TOKEN",
"payer_info": {
"email": "customer@example.com"
},
"payment_source": {
"method_type": "credit_card",
"card_info": {
"card_id": "CARD_ID",
"installments": 6,
"installment": {
"plan_option_id": "a4756a5f-7f9b-414d-8712-e3a9da2be337"
}
}
}
}O número e o ID devem descrever a mesma opção. A DEUNA usa o ID da opção para recuperar o plano resolvido e os processadores elegíveis, e usa a contagem de parcelas no pedido enviado através da conexão selecionada.
Continuar com Criar pagamento para o contrato completo de Compra V2.
Lista de verificação de implementação#
- Mostre apenas as opções retornadas para o contexto de pedido e cartão atual.
- Preserve
plan_option_idcom seu valor correspondenteinstallmentsvalue. - Para MCI, mostre o total financiado e o valor da parcela antes da confirmação.
- Recupere as opções novamente quando o valor do pedido, a moeda, o cartão ou o contexto de pagamento relevante mudarem.
- Trate uma lista de opções vazia como "nenhuma opção de campanha elegível", e não como uma falha de pagamento.
- Teste com cartões e provedores de pagamento aprovados para a campanha configurada.