Créer un lien de paiement hébergé
curl --request POST \
--url https://i-pay.money/api/v1/external_payments \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'Ipay-Payment-Type: <ipay-payment-type>' \
--header 'Ipay-Target-Environment: <ipay-target-environment>' \
--data '
{
"title": "Commande #1001"
}
'const options = {
method: 'POST',
headers: {
'Ipay-Target-Environment': '<ipay-target-environment>',
'Ipay-Payment-Type': '<ipay-payment-type>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({title: 'Commande #1001'})
};
fetch('https://i-pay.money/api/v1/external_payments', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://i-pay.money/api/v1/external_payments"
payload = { "title": "Commande #1001" }
headers = {
"Ipay-Target-Environment": "<ipay-target-environment>",
"Ipay-Payment-Type": "<ipay-payment-type>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://i-pay.money/api/v1/external_payments",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'title' => 'Commande #1001'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"Ipay-Payment-Type: <ipay-payment-type>",
"Ipay-Target-Environment: <ipay-target-environment>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}require 'uri'
require 'net/http'
url = URI("https://i-pay.money/api/v1/external_payments")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Ipay-Target-Environment"] = '<ipay-target-environment>'
request["Ipay-Payment-Type"] = '<ipay-payment-type>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"title\": \"Commande #1001\"\n}"
response = http.request(request)
puts response.read_bodyHttpResponse<String> response = Unirest.post("https://i-pay.money/api/v1/external_payments")
.header("Ipay-Target-Environment", "<ipay-target-environment>")
.header("Ipay-Payment-Type", "<ipay-payment-type>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"title\": \"Commande #1001\"\n}")
.asString();{
"title": "<string>",
"amount": 123,
"reference": "<string>",
"status": "initiated",
"should_expire": true,
"page_url": "<string>"
}{
"message": "<string>",
"status": "failed"
}{
"errors": [
"<string>"
]
}Créer un lien de paiement hébergé
Créez une page de paiement hébergée par iMoney Encaissement et partagez son URL à votre client.
POST
/
external_payments
Créer un lien de paiement hébergé
curl --request POST \
--url https://i-pay.money/api/v1/external_payments \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--header 'Ipay-Payment-Type: <ipay-payment-type>' \
--header 'Ipay-Target-Environment: <ipay-target-environment>' \
--data '
{
"title": "Commande #1001"
}
'const options = {
method: 'POST',
headers: {
'Ipay-Target-Environment': '<ipay-target-environment>',
'Ipay-Payment-Type': '<ipay-payment-type>',
Authorization: 'Bearer <token>',
'Content-Type': 'application/json'
},
body: JSON.stringify({title: 'Commande #1001'})
};
fetch('https://i-pay.money/api/v1/external_payments', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));import requests
url = "https://i-pay.money/api/v1/external_payments"
payload = { "title": "Commande #1001" }
headers = {
"Ipay-Target-Environment": "<ipay-target-environment>",
"Ipay-Payment-Type": "<ipay-payment-type>",
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://i-pay.money/api/v1/external_payments",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'title' => 'Commande #1001'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Bearer <token>",
"Content-Type: application/json",
"Ipay-Payment-Type: <ipay-payment-type>",
"Ipay-Target-Environment: <ipay-target-environment>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}require 'uri'
require 'net/http'
url = URI("https://i-pay.money/api/v1/external_payments")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["Ipay-Target-Environment"] = '<ipay-target-environment>'
request["Ipay-Payment-Type"] = '<ipay-payment-type>'
request["Authorization"] = 'Bearer <token>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"title\": \"Commande #1001\"\n}"
response = http.request(request)
puts response.read_bodyHttpResponse<String> response = Unirest.post("https://i-pay.money/api/v1/external_payments")
.header("Ipay-Target-Environment", "<ipay-target-environment>")
.header("Ipay-Payment-Type", "<ipay-payment-type>")
.header("Authorization", "Bearer <token>")
.header("Content-Type", "application/json")
.body("{\n \"title\": \"Commande #1001\"\n}")
.asString();{
"title": "<string>",
"amount": 123,
"reference": "<string>",
"status": "initiated",
"should_expire": true,
"page_url": "<string>"
}{
"message": "<string>",
"status": "failed"
}{
"errors": [
"<string>"
]
}Un lien de paiement délègue l’interface de paiement à iMoney Encaissement : vous redirigez votre client vers une page de paiement hébergée, où il choisit son moyen de paiement et valide. C’est l’équivalent API du lien créé depuis le tableau de bord. La réponse renvoie
page_url, la page à transmettre au payeur (redirection, email, SMS, réseau social).
Ne considérez jamais la redirection du client comme une confirmation de paiement : vérifiez l’état du lien côté serveur, avec Consulter un lien de paiement ou un webhook, avant de livrer une commande.
- Authentification. Les clés et le choix Sandbox ou Live suivent les mêmes règles que le reste de l’API : voir Authentification.
reference. Si vous la fournissez plutôt que de laisser l’API la générer, elle devient l’identifiant utilisé pour consulter l’état du lien via Consulter un lien de paiement, une opération non authentifiée. Générez une valeur aléatoire à forte entropie, jamais un identifiant de commande séquentiel ou prévisible. Laisser l’API la générer évite ce risque.- Redirections. Les deux URL de redirection doivent être en HTTPS : une URL en HTTP est rejetée.
- Expiration. Un lien créé par l’API expire toujours, trente minutes après sa création, quelle que soit la valeur envoyée dans
shouldExpire. Transmettez le lien à votre client tout de suite, et recréez-en un plutôt que de rediffuser un lien ancien. - Doublons. Une seconde création avec la même
referencefournie manuellement échoue en validation (422) : la référence doit rester unique sur votre compte. Il n’existe pas de clé d’idempotence ; aucune garantie n’est documentée en cas d’appels concurrents (à confirmer auprès du support). Un compte introuvable ou inactif pour l’environnement ciblé renvoie404.
Authorizations
Clé secrète du compte Sandbox ou Live
Headers
Available options:
sandbox, live Allowed value:
"external_payment"Body
application/json
Required range:
x >= 50Omettre pour génération automatique, ou fournir une valeur aléatoire privée d'au moins 128 bits.
Minimum string length:
32La v1 actuelle crée toujours un lien expirant.
Pattern:
^https://Pattern:
^https://