Paramètres
La donnée attendue consiste en un objet Payment
sauf que seul l'attribut purchase_amount
est requis, le reste des attributs est optionnel.
curl -X POST https://api.getalma.eu/v1/payments/eligibility \
-H "Authorization: Alma-Auth sk_live_<API key>" \
-H "Content-Type: application/json" \
-d '{ "payment": { "purchase_amount": 20000 } }'
Éligibilité pour plusieurs échéanciers
Il est possible de demander l'éligibilité de plusieurs échéanciers en même temps.
Pour cela, il vous suffit de passer la liste des nombres d'échéances dont vous souhaitez vérifier l'éligibilité dans le paramètre installments_count
:
curl -X POST https://api.getalma.eu/v1/payments/eligibility \
-H "Authorization: Alma-Auth sk_live_<API key>" \
-H "Content-Type: application/json" \
-d '{ "payment": { "purchase_amount": 20000, "installments_count": [3, 4] } }'
Réponse
Si jamais le compte marchand rattaché à la clef d'API utilisée n'est pas encore activé, cet appel renverra une erreur 400.
Sinon, le code HTTP renvoyé est 200 et la réponse dépend du résultat d'éligibilité.
Achat éligible
Si l'achat est éligible au paiement en plusieurs fois, la réponse contient l'échéancier qui serait appliqué au client (dates d'échéances, montants et frais appliqués au client) :
Champ | Type | Description |
---|---|---|
eligible | boolean | true |
deferred_days | integer | Nombre de jours de décalage pour du paiement différé. |
deferred_months | integer | Nombre de mois de décalage pour du paiement différé. |
installments_count | integer | Nombre d'échéances dans l'échéancier (3 par défaut). |
customer_total_cost_amount | integer | Montant total des frais et intérêts payés par le client en centimes. Les intérêts sont calculés à partir d'un échéancier commençant à la date de l'appel à eligibility. |
customer_total_cost_bps | integer | Pourcentage en bps de la part de frais et intérêts payés par le client. Les intérêts sont calculés à partir d'un échéancier commençant à la date de l'appel à eligibility. Dans le cas du p3x et p4x cela correspond le plus souvent au customer_fee_variable. Pour du crédit (plus de 4 fois) cette valeur change en fonction du calcul des intérêts et donc de la date de début de l'échéancier. Elle a alors une valeur pédagogique mais n'est pas contractuelle. Il n'est donc pas recommandé de l'afficher dans le parcours de paiement. |
payment_plan | Array of Objects | Liste des échéances pour cet achat : |
payment_plan.purchase_amount | integer | Montant de la part de capital remboursé par l'échéance, en centimes. |
payment_plan.customer_fee | integer | Éventuels frais de paiement appliqués au client sur cette échéance, en centimes. |
payment_plan.customer_interest | integer | Éventuels intérêts appliqués au client sur cette échéance, en centimes. Les intérêts sont calculés à partir d'un échéancier commençant à la date de l'appel à eligibility. |
payment_plan.due_date | timestamp | Date à laquelle le paiement de cette échéance est dû. |
payment_plan.total_amount | integer | Montant de l'échéance total en centimes. Cela inclus le capital remboursé, les frais et les intérêts de l'échéance. |
Exemple de réponse pour un achat éligible :
[
{
"customer_total_cost_amount": 310,
"customer_total_cost_bps": 155,
"deferred_days": 0,
"deferred_months": 0,
"eligible": true,
"installments_count": 3,
"payment_plan": [
{
"customer_fee": 310,
"customer_interest": 0,
"due_date": 1636386621,
"purchase_amount": 6668,
"total_amount": 6978
},
{
"customer_fee": 0,
"customer_interest": 0,
"due_date": 1638978621,
"purchase_amount": 6666,
"total_amount": 6666
},
{
"customer_fee": 0,
"customer_interest": 0,
"due_date": 1641657021,
"purchase_amount": 6666,
"total_amount": 6666
}
]
},
{
"customer_total_cost_amount": 360,
"customer_total_cost_bps": 180,
"deferred_days": 0,
"deferred_months": 0,
"eligible": true,
"installments_count": 4,
"payment_plan": [
{
"customer_fee": 360,
"customer_interest": 0,
"due_date": 1636386621,
"purchase_amount": 5000,
"total_amount": 5360
},
{
"customer_fee": 0,
"customer_interest": 0,
"due_date": 1638978621,
"purchase_amount": 5000,
"total_amount": 5000
},
{
"customer_fee": 0,
"customer_interest": 0,
"due_date": 1641657021,
"purchase_amount": 5000,
"total_amount": 5000
},
{
"customer_fee": 0,
"customer_interest": 0,
"due_date": 1644335421,
"purchase_amount": 5000,
"total_amount": 5000
}
]
}
]
Si, dans la requête, installments_count
a été passé comme un tableau (même avec un seul élément), alors la réponse est un tableau de ces objets, un par nombre d'échéances, dans le même ordre que la liste fournie en entrée.
Note: il est tout à fait possible que eligible
soit true pour certains échéanciers et false
pour d'autres. Il convient donc de toujours vérifier la réponse pour chaque échéancier afin de ne présenter à l'utilisateur que les échéanciers auxquels il est éligible.
Achat non éligible
Dans le cas où l'achat n'est pas éligible, la réponse contient :
- L'attribut qui constitue la cause de l'éligibilité, et la raison
- Un ensemble de "contraintes" qui peuvent expliquer pourquoi l'attribut n'a pas été accepté
Champ | Type | Description |
---|---|---|
eligible | boolean | false |
installments_count | integer | Nombre d'échéances dans l'échéancier (3 par défaut). |
deferred_days | integer | Nombre de jours de décalage pour du paiement différé. |
deferred_months | integer | Nombre de mois de décalage pour du paiement différé. |
reasons | object | Attributs en cause de l'échec d'éligibilité |
reasons.<attribut> | string | Raison du rejet pour l'attribut nommé en clef |
constraints | object | Contraintes que l'achat doit respecter : |
constraints[purchase_amount] | object | Contraintes sur le montant d'achat |
constraints[purchase_amount[minimum]] | integer | Montant minimum éligible, en centimes |
constraints[purchase_amount[maximum]] | integer | Montant maximum éligible, en centimes |
Exemple de réponse pour un achat non éligible :
{
"constraints": {
"purchase_amount": {
"maximum": 1000000,
"minimum": 100
}
},
"deferred_days": 0,
"deferred_months": 0,
"eligible": false,
"installments_count": 3,
"reasons": {
"purchase_amount": "invalid_value"
}
}
Si, dans la requête, installments_count
a été passé comme un tableau (même avec un seul élément), alors la réponse est un tableau de ces objets, un par nombre d'échéances, dans le même ordre que la liste fournie en entrée.