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 :

  1. Réabonnement sans changement de bouquet (typeOperation = 1)
  2. 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/external

Vous 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 (1 ou 3).

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.

Authentification (En-têtes B-MO)
Paramètres d'URL / Query Parameters (2)

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 liste durationsList de 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.

Authentification (En-têtes B-MO)
Paramètres d'URL / Query Parameters (0)

Aucun paramètre d'URL configuré.

Corps de la Requête (JSON Body)

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.

Authentification (En-têtes B-MO)
Paramètres d'URL / Query Parameters (0)

Aucun paramètre d'URL configuré.

Corps de la Requête (JSON Body)

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 renvoie 404 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.

Authentification (En-têtes B-MO)
Paramètres d'URL / Query Parameters (1)

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'erreurDescription
RESSOURCE_NOT_FOUNDLa référence d'opération spécifiée n'existe pas ou n'a pas encore été enregistrée.
Unknown smartcardLe numéro de carte saisi est invalide ou non reconnu par Canal+.
Operation not allowed for this subscriberCode d'offre ou de durée invalide pour cette carte (vérifiez via GET /account/check).
INSUFFICIENT AMOUNTLe solde disponible sur le compte partenaire est insuffisant.
The amount should be greater than 0Le montant transmis doit être supérieur à 0.
This value should have exactly 14 charactersLe numéro de carte Canal+ doit faire exactement 14 caractères.