Creer une souscription
curl --request POST \
--url https://api.mysoleas.com/merchand/billing/subscribe \
--header 'Content-Type: application/json' \
--header 'x-sp-auth-token: <api-key>' \
--data '
{
"customer_email": "jsmith@example.com",
"amount": 123,
"currency": "XAF",
"customer_phone_number": "<string>",
"description": "<string>",
"metadata": {},
"idempotency_key": "<string>",
"amount_unit": "MAJOR"
}
'import requests
url = "https://api.mysoleas.com/merchand/billing/subscribe"
payload = {
"customer_email": "jsmith@example.com",
"amount": 123,
"currency": "XAF",
"customer_phone_number": "<string>",
"description": "<string>",
"metadata": {},
"idempotency_key": "<string>",
"amount_unit": "MAJOR"
}
headers = {
"x-sp-auth-token": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-sp-auth-token': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
customer_email: 'jsmith@example.com',
amount: 123,
currency: 'XAF',
customer_phone_number: '<string>',
description: '<string>',
metadata: {},
idempotency_key: '<string>',
amount_unit: 'MAJOR'
})
};
fetch('https://api.mysoleas.com/merchand/billing/subscribe', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.mysoleas.com/merchand/billing/subscribe",
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([
'customer_email' => 'jsmith@example.com',
'amount' => 123,
'currency' => 'XAF',
'customer_phone_number' => '<string>',
'description' => '<string>',
'metadata' => [
],
'idempotency_key' => '<string>',
'amount_unit' => 'MAJOR'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-sp-auth-token: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.mysoleas.com/merchand/billing/subscribe"
payload := strings.NewReader("{\n \"customer_email\": \"jsmith@example.com\",\n \"amount\": 123,\n \"currency\": \"XAF\",\n \"customer_phone_number\": \"<string>\",\n \"description\": \"<string>\",\n \"metadata\": {},\n \"idempotency_key\": \"<string>\",\n \"amount_unit\": \"MAJOR\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-sp-auth-token", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.mysoleas.com/merchand/billing/subscribe")
.header("x-sp-auth-token", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"customer_email\": \"jsmith@example.com\",\n \"amount\": 123,\n \"currency\": \"XAF\",\n \"customer_phone_number\": \"<string>\",\n \"description\": \"<string>\",\n \"metadata\": {},\n \"idempotency_key\": \"<string>\",\n \"amount_unit\": \"MAJOR\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.mysoleas.com/merchand/billing/subscribe")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-sp-auth-token"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"customer_email\": \"jsmith@example.com\",\n \"amount\": 123,\n \"currency\": \"XAF\",\n \"customer_phone_number\": \"<string>\",\n \"description\": \"<string>\",\n \"metadata\": {},\n \"idempotency_key\": \"<string>\",\n \"amount_unit\": \"MAJOR\"\n}"
response = http.request(request)
puts response.read_body{
"code": 200,
"success": true,
"locale": "fr",
"message": "<string>",
"meta": {},
"data": {
"reference": "<string>",
"customer_email": "<string>",
"amount": 123,
"currency": "<string>",
"frequency": "DAILY",
"status": "ACTIVE",
"next_payment_at": "2023-11-07T05:31:56Z",
"created_at": "<string>"
}
}{
"success": false,
"code": 400,
"message": "empty_data",
"error": {
"details": {}
}
}Souscriptions
Creer une souscription
POST
/
merchand
/
billing
/
subscribe
Creer une souscription
curl --request POST \
--url https://api.mysoleas.com/merchand/billing/subscribe \
--header 'Content-Type: application/json' \
--header 'x-sp-auth-token: <api-key>' \
--data '
{
"customer_email": "jsmith@example.com",
"amount": 123,
"currency": "XAF",
"customer_phone_number": "<string>",
"description": "<string>",
"metadata": {},
"idempotency_key": "<string>",
"amount_unit": "MAJOR"
}
'import requests
url = "https://api.mysoleas.com/merchand/billing/subscribe"
payload = {
"customer_email": "jsmith@example.com",
"amount": 123,
"currency": "XAF",
"customer_phone_number": "<string>",
"description": "<string>",
"metadata": {},
"idempotency_key": "<string>",
"amount_unit": "MAJOR"
}
headers = {
"x-sp-auth-token": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'x-sp-auth-token': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
customer_email: 'jsmith@example.com',
amount: 123,
currency: 'XAF',
customer_phone_number: '<string>',
description: '<string>',
metadata: {},
idempotency_key: '<string>',
amount_unit: 'MAJOR'
})
};
fetch('https://api.mysoleas.com/merchand/billing/subscribe', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.mysoleas.com/merchand/billing/subscribe",
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([
'customer_email' => 'jsmith@example.com',
'amount' => 123,
'currency' => 'XAF',
'customer_phone_number' => '<string>',
'description' => '<string>',
'metadata' => [
],
'idempotency_key' => '<string>',
'amount_unit' => 'MAJOR'
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"x-sp-auth-token: <api-key>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.mysoleas.com/merchand/billing/subscribe"
payload := strings.NewReader("{\n \"customer_email\": \"jsmith@example.com\",\n \"amount\": 123,\n \"currency\": \"XAF\",\n \"customer_phone_number\": \"<string>\",\n \"description\": \"<string>\",\n \"metadata\": {},\n \"idempotency_key\": \"<string>\",\n \"amount_unit\": \"MAJOR\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("x-sp-auth-token", "<api-key>")
req.Header.Add("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}HttpResponse<String> response = Unirest.post("https://api.mysoleas.com/merchand/billing/subscribe")
.header("x-sp-auth-token", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"customer_email\": \"jsmith@example.com\",\n \"amount\": 123,\n \"currency\": \"XAF\",\n \"customer_phone_number\": \"<string>\",\n \"description\": \"<string>\",\n \"metadata\": {},\n \"idempotency_key\": \"<string>\",\n \"amount_unit\": \"MAJOR\"\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.mysoleas.com/merchand/billing/subscribe")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["x-sp-auth-token"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"customer_email\": \"jsmith@example.com\",\n \"amount\": 123,\n \"currency\": \"XAF\",\n \"customer_phone_number\": \"<string>\",\n \"description\": \"<string>\",\n \"metadata\": {},\n \"idempotency_key\": \"<string>\",\n \"amount_unit\": \"MAJOR\"\n}"
response = http.request(request)
puts response.read_body{
"code": 200,
"success": true,
"locale": "fr",
"message": "<string>",
"meta": {},
"data": {
"reference": "<string>",
"customer_email": "<string>",
"amount": 123,
"currency": "<string>",
"frequency": "DAILY",
"status": "ACTIVE",
"next_payment_at": "2023-11-07T05:31:56Z",
"created_at": "<string>"
}
}{
"success": false,
"code": 400,
"message": "empty_data",
"error": {
"details": {}
}
}Unité du montant
Envoyezamount en valeur réelle par défaut : 4.01 pour 4,01 USD/EUR. Les clients API qui envoient déjà des centimes peuvent préciser amount_unit: "MINOR" à la racine du corps JSON, au même niveau que amount et currency, et non dans metadata. Les réponses publiques reviennent en valeur réelle même si la requête utilise MINOR. Consultez les montants et devises.Autorisations
Token Bearer obtenu avec le client_id et le client_secret de l'application creee dans SoleasPay. Format: Bearer <access_token>.
En-têtes
Cle d'idempotence optionnelle fournie par le marchand.
Corps
application/json
Montant en valeur réelle par défaut : 4.01 pour 4,01 USD/EUR. Avec amount_unit MINOR à la racine, envoyez des centimes entiers (401).
Exemple:
"XAF"
Options disponibles:
DAILY, WEEKLY, MONTHLY, QUARTERLY, YEARLY Unité des montants de la requête. Facultatif, MAJOR par défaut. Placez ce champ à la racine du corps JSON, pas dans metadata. MINOR conserve les montants déjà exprimés dans la plus petite unité.
Options disponibles:
MAJOR, MINOR Exemple:
"MAJOR"
⌘I
