Versements
Configurez les campagnes MSI et MCI, récupérez les options applicables à une commande et envoyez la sélection exacte du client avec le paiement.
Sur cette page
Les campagnes d'échéances transforment les règles du commerçant en options de paiement que DEUNA peut afficher pour une commande et une carte spécifiques. Une campagne ne facture pas directement le client. Elle définit les conditions d'éligibilité ; le processus de paiement récupère ces conditions et l'achat envoie l'option exacte sélectionnée par le client.
Qu'est-ce qu'une campagne d'échéances ?#
Une campagne est un ensemble de règles d'éligibilité et de tarification défini par le commerçant. Dans DEUNA Admin, vous choisissez le type de campagne, la devise, la période de validité, les fournisseurs de paiement, les conditions d'échéance et les règles des marques de cartes. Chaque règle de marque de carte peut définir un montant minimum et maximum par échéance et le taux ou le coût du commerçant applicable.
Au moment du paiement, DEUNA combine la campagne avec le contexte de paiement en direct. Une option est renvoyée uniquement lorsque les conditions sont remplies.
| Campagne ou contexte de paiement | Impact sur le résultat |
|---|---|
| Commercial, magasin, statut et dates | La campagne doit appartenir au commercial, s'appliquer au magasin de la commande, être active et être dans sa période de validité. Une campagne sans surcharge de magasin s'applique à all. |
| Devise | La devise de l'option de la campagne doit correspondre à la devise de la commande. |
| Marque de la carte | DEUNA détermine la marque à partir du BIN fourni ou stocké et applique la règle de correspondance appropriée. |
| Fourchette de montant par échéance | Le montant calculé de chaque échéance doit répondre au minimum et, éventuellement, au maximum configurés pour ce terme et cette marque. |
| Fournisseur de paiement | Au moins un processeur configuré sur la campagne doit être éligible au paiement. |
| Contraintes de routage | Un routage intelligent ou dynamique peut supprimer les processeurs ou les termes d'échéance qui ne sont pas valides pour le routage sélectionné. |
De la campagne au paiement#
Pour DEUNA Widgets, l'expérience de paiement prise en charge récupère et présente les options applicables. Pour une intégration API directe, votre processus de paiement récupère les valeurs, les affiche et envoie le choix via Purchase V2.
1. Configurer une campagne#
Ouvrez Configuration des échéances dans DEUNA AdminUn utilisateur doit avoir les autorisations nécessaires pour visualiser les campagnes d'échéance ; la création, la modification, l'activation ou la désactivation nécessitent les autorisations correspondantes.
- Choisissez
MSIouMCINommer la campagne et confirmer sa devise. - Définir une date de début et de fin facultative, ou laisser la campagne sans période de validité fixe.
- Sélectionner un ou plusieurs fournisseurs de paiement compatibles.
- Ajouter les modalités de paiement en plusieurs tranches.
- Pour chaque tranche, activer les marques de cartes et configurer leur fourchette et taux de coût par tranche.
- Enregistrer et activer la campagne.
Le support des fournisseurs, les accords commerciaux et la configuration du compte déterminent quels processeurs s'affichent. Confirmez les exigences non prises en charge ou spécifiques au marché avec votre responsable technique DEUNA (TAM).
2. Récupérer les options applicables#
Utiliser le jeton de commande et un numéro BIN de carte pour récupérer les options pour une nouvelle carte. Un flux de paiement avec carte enregistrée peut utiliser son identifiant de carte pris en charge à la place. Étant donné que l'éligibilité dépend du commande, un parcours Direct API qui affiche les options de paiement avant la confirmation nécessite un jeton de commande avant cette requête.
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))
}Voir Listez les options d'échéances pour le contrat complet de l'endpoint.
Une option retournée contient les valeurs que votre point de vente doit afficher et conserver :
{
"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"
}
]
}Les montants sont exprimés dans l'unité monétaire la plus petite. Utilisez les champs d'affichage pour le texte destiné au client lorsque ces valeurs sont retournées, et conservez les champs numériques pour les calculs et la réconciliation.
3. Envoyer l'option sélectionnée#
Envoyer les deux valeurs provenant du même élément de réponse :
payment_source.card_info.installments: le nombre de tranches sélectionné.payment_source.card_info.installment.plan_option_id: l'identifiant exact de cette option sélectionnée.
{
"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"
}
}
}
}Le nombre et l'identifiant doivent correspondre à la même option. DEUNA utilise l'identifiant de l'option pour récupérer le plan résolu et les processeurs éligibles, et il utilise le nombre de tranches dans la requête de paiement envoyée via la connexion sélectionnée.
Continuez avec Créer un paiement pour le contrat complet de Purchase V2.
Liste de contrôle de mise en œuvre#
- Afficher uniquement les options retournées pour la commande et le contexte de carte actuels.
- Conserver
plan_option_idainsi que sa valeur correspondanteinstallmentsvalue. - Pour MCI, afficher le montant total financé et le montant de la tranche avant la confirmation.
- Récupérer les options à nouveau lorsque le montant de la commande, la devise, la carte ou le contexte de paiement change.
- Considérer une liste d'options vide comme "aucune option de campagne applicable", et non comme une erreur de paiement.
- Tester avec les cartes et les prestataires de paiement approuvés pour la campagne configurée.