Documentation API CANAL+
Spécifications techniques et endpoints pour le réabonnement TV Canal+ (sans changement et avec changement de bouquet).
Présentation
L'API CANAL+ permet d'effectuer deux types d'opérations de réabonnement :
- Réabonnement sans changement de bouquet (
typeOperation = 1) - Réabonnement avec changement de bouquet (
typeOperation = 3)
URL de Base (selon l'environnement sélectionné) :
- PAP (Pré-production / Défaut) :
https://svc.pap.bestcash.me/external- TEST (Sandbox) :
https://svc.test.bestcash.me/external- LIVE (Production) :
https://svc.bmo.bestcash.me/externalVous pouvez basculer d'un environnement à un autre à tout moment depuis le menu déroulant en haut des consoles d'essai
<ApiPlayground />ci-dessous.
1. Vérification de carte (GET /external/thirdparty/canal/account/check)
Avant toute opération de réabonnement, vous devez obligatoirement vérifier la carte décodeur à l'aide de cette méthode.
- Méthode :
GET - URL :
/external/thirdparty/canal/account/check - Paramètres de requête (Query params) :
numCard(obligatoire) : Numéro de carte Canal+ (exactement 14 caractères).typeOperation(obligatoire) : Type d'opération (1ou3).
Tester la vérification de carte Canal+
Modifiez directement le numéro de carte ou le type d'opération ci-dessous pour générer l'URL et exécuter le test.
Exemple de réponse — Type d'opération 1 (Même formule)
{
"numCard": "24100027499297",
"amount": "10000.0",
"currency": "XOF",
"mainOfferLabel": "EVASION"
}
Exemple de réponse — Type d'opération 3 (Formule différente)
{
"numCard": "23900032169299",
"offersList": [
{
"code": "46M1AC|ACDD",
"label": "ACCESS",
"amount": "5000.0",
"currency": "XOF",
"durationsList": [
{ "code": "1", "label": "1 mois" },
{ "code": "3", "label": "3 mois" }
],
"optionsList": [
{ "code": "CHR", "label": "CHARME", "amount": "6000.0", "currency": "XOF" },
{ "code": "CHR1", "label": "CHARME+1", "amount": "6000.0", "currency": "XOF" }
]
},
{
"code": "46M1BI2|BI2DD",
"label": "BIENVENUE",
"amount": "2500.0",
"currency": "XOF",
"durationsList": [
{ "code": "1", "label": "1 mois" },
{ "code": "3", "label": "3 mois" }
],
"optionsList": [
{ "code": "CHR", "label": "CHARME", "amount": "6000.0", "currency": "XOF" },
{ "code": "CHR1", "label": "CHARME+1", "amount": "6000.0", "currency": "XOF" }
]
}
]
}
2. Affichage des modalités de réabonnement (POST /external/thirdparty/canal/verify-renewal)
Uniquement requis pour le type d'opération 3 (changement de bouquet). Permet de calculer le montant exact de la nouvelle formule choisie avec la durée et les options sélectionnées.
Règle importante sur les paramètres :
duration: Doit être le code de durée renvoyé dans la listedurationsListde la vérification de carte (ex:"30J"pour 30 jours, et non"1").optionsList: Doit être la liste des codes d'options séparés par des virgules (ex:"CHR"ou"CHR,PRMMT", et non les libellés).
- Méthode :
POST - URL :
/external/thirdparty/canal/verify-renewal
Tester la vérification des modalités de réabonnement
Calculez le montant du nouvel abonnement selon la durée et les options choisies.
Aucun paramètre d'URL configuré.
Exemple de corps de requête (JSON)
{
"numCard": "23900032169299",
"typeOperation": "3",
"duration": "30J",
"mainOffer": "46M1AC|ACDD",
"optionsList": "CHR"
}
Exemple de réponse HTTP 200
{
"numCard": "23900032169299",
"amount": "11150.0",
"currency": "XOF",
"duration": "30J",
"mainOffer": "46M1AC|ACDD",
"optionsList": "CHR"
}
3. Effectuer l'opération (POST /external/thirdparty/canal/operation)
Exécute l'opération de réabonnement finale et débite le montant correspondant.
- Méthode :
POST - URL :
/external/thirdparty/canal/operation
Tester l'exécution de l'opération Canal+
Validez et exécutez le réabonnement Canal+ en Sandbox.
Aucun paramètre d'URL configuré.
Option A : Type d'opération 1 (Même formule)
Requête
{
"amount": 10000,
"numCard": "24100027499297",
"externalReference": "BPK-124",
"typeOperation": "1",
"mainOffer": "EVASION"
}
Réponse HTTP 201
{
"status": "CONFIRMED",
"operationCost": 0,
"amount": 10000,
"operationType": "BILL_PAYMENT-TV",
"reference": "20250404191427203",
"creationDate": "2025-04-04T19:14:26+00:00",
"externalReference": "BPK-124",
"numCard": "24100027499297",
"currency": "XOF",
"typeOperation": "1",
"endDate": "03/05/2025",
"mainOfferLabel": "EVASION",
"duration": "30J",
"mainOffer": "EVDD",
"optionsList": null
}
Option B : Type d'opération 3 (Changement de formule)
Requête
{
"amount": 11150,
"numCard": "23900032169299",
"externalReference": "BK908-12423",
"typeOperation": "3",
"duration": "30J",
"mainOffer": "46M1AC|ACDD",
"optionsList": "CHR"
}
4. Vérification du statut d'une opération (GET /external/thirdparty/operation)
Permet de rechercher le statut d'une transaction via sa référence partenaire (externalReference) ou la référence unique B-MO (reference).
Condition d'utilisation : L'élément recherché doit correspondre à une référence d'opération qui a été au préalable transmise et exécutée avec succès via
POST /external/thirdparty/canal/operation. Si la référence n'existe pas, l'API renvoie404 RESSOURCE_NOT_FOUND.
- Méthode :
GET - URL :
/external/thirdparty/operation - Paramètres de requête (Query params) :
externalReference(optionnel) : Référence unique transmise par le partenaire lors de l'opération.reference(optionnel) : Référence unique générée par B-MO.
Tester la vérification de statut de transaction
Consultez l'état d'une transaction Canal+ précédemment effectuée.
Exemple de réponse HTTP 200 (Transaction trouvée)
{
"status": "CONFIRMED",
"operationCost": 0,
"amount": 11150,
"operationType": "BILL_PAYMENT-TV",
"reference": "20260723094159849",
"creationDate": "2026-07-23T09:41:57+00:00",
"externalReference": "TEST-80031",
"numCard": "24100027499297",
"currency": "XOF",
"typeOperation": "3",
"endDate": "10/12/2026",
"mainOfferLabel": "ACCESS",
"offersList": null,
"duration": "30J",
"mainOffer": "46M1AC|ACDD",
"optionsList": "CHR"
}
5. Messages d'erreur & Codes
| Message d'erreur | Description |
|---|---|
RESSOURCE_NOT_FOUND | La référence d'opération spécifiée n'existe pas ou n'a pas encore été enregistrée. |
Unknown smartcard | Le numéro de carte saisi est invalide ou non reconnu par Canal+. |
Operation not allowed for this subscriber | Code d'offre ou de durée invalide pour cette carte (vérifiez via GET /account/check). |
INSUFFICIENT AMOUNT | Le solde disponible sur le compte partenaire est insuffisant. |
The amount should be greater than 0 | Le montant transmis doit être supérieur à 0. |
This value should have exactly 14 characters | Le numéro de carte Canal+ doit faire exactement 14 caractères. |