Intégrer une nouvelle entreprise (API Fournisseur de services)
curl --request POST \
--url https://api.jeko.africa/partner_api/service_providers/business_onboarding \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: <api-key>' \
--data '
{
"owner": {
"phone": "+22507012345",
"firstName": "Jean",
"lastName": "Dupont",
"sex": "M"
},
"business": {
"name": "Magasin de Jean",
"category": "retail",
"categoryActivity": "home_appliances",
"city": "abidjan",
"municipality": "cocody",
"estimatedRevenueLow": 2400000,
"estimatedRevenueHigh": 5000000
}
}
'import requests
url = "https://api.jeko.africa/partner_api/service_providers/business_onboarding"
payload = {
"owner": {
"phone": "+22507012345",
"firstName": "Jean",
"lastName": "Dupont",
"sex": "M"
},
"business": {
"name": "Magasin de Jean",
"category": "retail",
"categoryActivity": "home_appliances",
"city": "abidjan",
"municipality": "cocody",
"estimatedRevenueLow": 2400000,
"estimatedRevenueHigh": 5000000
}
}
headers = {
"X-API-KEY": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-KEY': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
owner: {phone: '+22507012345', firstName: 'Jean', lastName: 'Dupont', sex: 'M'},
business: {
name: 'Magasin de Jean',
category: 'retail',
categoryActivity: 'home_appliances',
city: 'abidjan',
municipality: 'cocody',
estimatedRevenueLow: 2400000,
estimatedRevenueHigh: 5000000
}
})
};
fetch('https://api.jeko.africa/partner_api/service_providers/business_onboarding', 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.jeko.africa/partner_api/service_providers/business_onboarding",
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([
'owner' => [
'phone' => '+22507012345',
'firstName' => 'Jean',
'lastName' => 'Dupont',
'sex' => 'M'
],
'business' => [
'name' => 'Magasin de Jean',
'category' => 'retail',
'categoryActivity' => 'home_appliances',
'city' => 'abidjan',
'municipality' => 'cocody',
'estimatedRevenueLow' => 2400000,
'estimatedRevenueHigh' => 5000000
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-KEY: <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.jeko.africa/partner_api/service_providers/business_onboarding"
payload := strings.NewReader("{\n \"owner\": {\n \"phone\": \"+22507012345\",\n \"firstName\": \"Jean\",\n \"lastName\": \"Dupont\",\n \"sex\": \"M\"\n },\n \"business\": {\n \"name\": \"Magasin de Jean\",\n \"category\": \"retail\",\n \"categoryActivity\": \"home_appliances\",\n \"city\": \"abidjan\",\n \"municipality\": \"cocody\",\n \"estimatedRevenueLow\": 2400000,\n \"estimatedRevenueHigh\": 5000000\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-KEY", "<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.jeko.africa/partner_api/service_providers/business_onboarding")
.header("X-API-KEY", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"owner\": {\n \"phone\": \"+22507012345\",\n \"firstName\": \"Jean\",\n \"lastName\": \"Dupont\",\n \"sex\": \"M\"\n },\n \"business\": {\n \"name\": \"Magasin de Jean\",\n \"category\": \"retail\",\n \"categoryActivity\": \"home_appliances\",\n \"city\": \"abidjan\",\n \"municipality\": \"cocody\",\n \"estimatedRevenueLow\": 2400000,\n \"estimatedRevenueHigh\": 5000000\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.jeko.africa/partner_api/service_providers/business_onboarding")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-KEY"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"owner\": {\n \"phone\": \"+22507012345\",\n \"firstName\": \"Jean\",\n \"lastName\": \"Dupont\",\n \"sex\": \"M\"\n },\n \"business\": {\n \"name\": \"Magasin de Jean\",\n \"category\": \"retail\",\n \"categoryActivity\": \"home_appliances\",\n \"city\": \"abidjan\",\n \"municipality\": \"cocody\",\n \"estimatedRevenueLow\": 2400000,\n \"estimatedRevenueHigh\": 5000000\n }\n}"
response = http.request(request)
puts response.read_body{
"business": {
"id": "59ae202a-f583-4a15-970f-9e99bd1e0baa",
"name": "Magasin de Jean",
"reference": "BIZ-2024-001"
},
"serviceProviderMemberId": "29f81706-03a6-492f-92ee-5f0b2e9b18e7"
}{
"id": "unauthorized",
"message": "Unauthorized",
"extras": "Détails supplémentaires de l'erreur"
}{
"id": "business_not_service_provider",
"message": "L'entreprise n'est pas un fournisseur de services",
"extras": "L'entreprise authentifiée doit être un fournisseur de services pour accéder à ce point de terminaison"
}{
"id": "phone_already_in_use",
"message": "Numéro de téléphone déjà utilisé",
"extras": "Ce numéro de téléphone est déjà associé à un utilisateur existant"
}{
"id": "validation_error",
"message": "Échec de la validation",
"extras": {
"errors": [
{
"field": "paymentDetails.data.paymentMethod",
"rule": "in",
"message": "The paymentDetails.data.paymentMethod must be one of the following: orange, wave, mtn, moov, djamo"
},
{
"field": "paymentDetails.data.deviceId",
"rule": "required",
"message": "The paymentDetails.data.deviceId field is required when paymentDetails.type is soundbox"
}
]
}
}{
"id": "internal_error",
"message": "Une erreur inattendue s'est produite",
"extras": "Détails supplémentaires de l'erreur"
}Fournisseurs de services
Intégrer une nouvelle entreprise (API Fournisseur de services)
Intègre une nouvelle entreprise marchande au nom d’un fournisseur de services. Ce point de terminaison crée un nouvel utilisateur, une nouvelle entreprise et établit la relation de fournisseur de services.
Cas d’usage :
- Les fournisseurs de services (comme Payme) peuvent intégrer des marchands via leur propre plateforme
- Automatise le processus d’enregistrement des entreprises
- Établit automatiquement la relation de fournisseur de services
Ce que fait ce point de terminaison :
- Crée un nouveau compte utilisateur (si le numéro de téléphone n’existe pas)
- Crée une nouvelle entreprise avec les informations fournies
- Configure la configuration de l’entreprise (active l’accès API)
- Crée un membre d’entreprise de fournisseur de services liant le fournisseur de services au marchand
- Définit le code de parrainage si fourni
Notes importantes :
- L’entreprise authentifiée doit être un fournisseur de services (vérifié via middleware)
- Le numéro de téléphone doit être unique - si un utilisateur avec ce téléphone existe déjà, une erreur est retournée
- L’entreprise de fournisseur de services est automatiquement liée à l’entreprise marchande
- L’accès API est automatiquement activé pour la nouvelle entreprise marchande
Authentification : Nécessite les en-têtes de clé API. L’entreprise authentifiée doit être un fournisseur de services.
POST
/
partner_api
/
service_providers
/
business_onboarding
Intégrer une nouvelle entreprise (API Fournisseur de services)
curl --request POST \
--url https://api.jeko.africa/partner_api/service_providers/business_onboarding \
--header 'Content-Type: application/json' \
--header 'X-API-KEY: <api-key>' \
--data '
{
"owner": {
"phone": "+22507012345",
"firstName": "Jean",
"lastName": "Dupont",
"sex": "M"
},
"business": {
"name": "Magasin de Jean",
"category": "retail",
"categoryActivity": "home_appliances",
"city": "abidjan",
"municipality": "cocody",
"estimatedRevenueLow": 2400000,
"estimatedRevenueHigh": 5000000
}
}
'import requests
url = "https://api.jeko.africa/partner_api/service_providers/business_onboarding"
payload = {
"owner": {
"phone": "+22507012345",
"firstName": "Jean",
"lastName": "Dupont",
"sex": "M"
},
"business": {
"name": "Magasin de Jean",
"category": "retail",
"categoryActivity": "home_appliances",
"city": "abidjan",
"municipality": "cocody",
"estimatedRevenueLow": 2400000,
"estimatedRevenueHigh": 5000000
}
}
headers = {
"X-API-KEY": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-KEY': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
owner: {phone: '+22507012345', firstName: 'Jean', lastName: 'Dupont', sex: 'M'},
business: {
name: 'Magasin de Jean',
category: 'retail',
categoryActivity: 'home_appliances',
city: 'abidjan',
municipality: 'cocody',
estimatedRevenueLow: 2400000,
estimatedRevenueHigh: 5000000
}
})
};
fetch('https://api.jeko.africa/partner_api/service_providers/business_onboarding', 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.jeko.africa/partner_api/service_providers/business_onboarding",
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([
'owner' => [
'phone' => '+22507012345',
'firstName' => 'Jean',
'lastName' => 'Dupont',
'sex' => 'M'
],
'business' => [
'name' => 'Magasin de Jean',
'category' => 'retail',
'categoryActivity' => 'home_appliances',
'city' => 'abidjan',
'municipality' => 'cocody',
'estimatedRevenueLow' => 2400000,
'estimatedRevenueHigh' => 5000000
]
]),
CURLOPT_HTTPHEADER => [
"Content-Type: application/json",
"X-API-KEY: <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.jeko.africa/partner_api/service_providers/business_onboarding"
payload := strings.NewReader("{\n \"owner\": {\n \"phone\": \"+22507012345\",\n \"firstName\": \"Jean\",\n \"lastName\": \"Dupont\",\n \"sex\": \"M\"\n },\n \"business\": {\n \"name\": \"Magasin de Jean\",\n \"category\": \"retail\",\n \"categoryActivity\": \"home_appliances\",\n \"city\": \"abidjan\",\n \"municipality\": \"cocody\",\n \"estimatedRevenueLow\": 2400000,\n \"estimatedRevenueHigh\": 5000000\n }\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("X-API-KEY", "<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.jeko.africa/partner_api/service_providers/business_onboarding")
.header("X-API-KEY", "<api-key>")
.header("Content-Type", "application/json")
.body("{\n \"owner\": {\n \"phone\": \"+22507012345\",\n \"firstName\": \"Jean\",\n \"lastName\": \"Dupont\",\n \"sex\": \"M\"\n },\n \"business\": {\n \"name\": \"Magasin de Jean\",\n \"category\": \"retail\",\n \"categoryActivity\": \"home_appliances\",\n \"city\": \"abidjan\",\n \"municipality\": \"cocody\",\n \"estimatedRevenueLow\": 2400000,\n \"estimatedRevenueHigh\": 5000000\n }\n}")
.asString();require 'uri'
require 'net/http'
url = URI("https://api.jeko.africa/partner_api/service_providers/business_onboarding")
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request["X-API-KEY"] = '<api-key>'
request["Content-Type"] = 'application/json'
request.body = "{\n \"owner\": {\n \"phone\": \"+22507012345\",\n \"firstName\": \"Jean\",\n \"lastName\": \"Dupont\",\n \"sex\": \"M\"\n },\n \"business\": {\n \"name\": \"Magasin de Jean\",\n \"category\": \"retail\",\n \"categoryActivity\": \"home_appliances\",\n \"city\": \"abidjan\",\n \"municipality\": \"cocody\",\n \"estimatedRevenueLow\": 2400000,\n \"estimatedRevenueHigh\": 5000000\n }\n}"
response = http.request(request)
puts response.read_body{
"business": {
"id": "59ae202a-f583-4a15-970f-9e99bd1e0baa",
"name": "Magasin de Jean",
"reference": "BIZ-2024-001"
},
"serviceProviderMemberId": "29f81706-03a6-492f-92ee-5f0b2e9b18e7"
}{
"id": "unauthorized",
"message": "Unauthorized",
"extras": "Détails supplémentaires de l'erreur"
}{
"id": "business_not_service_provider",
"message": "L'entreprise n'est pas un fournisseur de services",
"extras": "L'entreprise authentifiée doit être un fournisseur de services pour accéder à ce point de terminaison"
}{
"id": "phone_already_in_use",
"message": "Numéro de téléphone déjà utilisé",
"extras": "Ce numéro de téléphone est déjà associé à un utilisateur existant"
}{
"id": "validation_error",
"message": "Échec de la validation",
"extras": {
"errors": [
{
"field": "paymentDetails.data.paymentMethod",
"rule": "in",
"message": "The paymentDetails.data.paymentMethod must be one of the following: orange, wave, mtn, moov, djamo"
},
{
"field": "paymentDetails.data.deviceId",
"rule": "required",
"message": "The paymentDetails.data.deviceId field is required when paymentDetails.type is soundbox"
}
]
}
}{
"id": "internal_error",
"message": "Une erreur inattendue s'est produite",
"extras": "Détails supplémentaires de l'erreur"
}Authorizations
partnerApiKeypartnerApiKeyId
Clé API pour les requêtes de l'API Partenaire
Body
application/json
Response
Entreprise intégrée avec succès
Schéma de réponse pour l'intégration d'entreprise
⌘I