Note app mobile et PWA : le pays de la boutique
Date : 2026-10-10 · Destinataires : dev app mobile, dev PWA · API : https://live.jmoai.net
1. Pourquoi
Le backend choisit maintenant le moyen d’encaissement selon le pays de la boutique :
| Pays de la boutique | Encaissement J+SERVICES |
|---|---|
Bénin (BJ) |
FedaPay, avec FeexPay en secours si FedaPay est en panne |
Côte d’Ivoire (CI), Sénégal (SN), Burkina Faso (BF), Togo (TG), Congo (CG) |
FeexPay |
Le pays sert aussi à afficher à l’acheteur les bons opérateurs (MTN, Moov, Orange, Wave…) et le bon indicatif téléphonique. L’acheteur ne choisit pas son pays : c’est celui de la boutique.
Si le pays manque, le backend suppose le Bénin. Un vendeur ivoirien verrait alors des opérateurs béninois, et ses ventes échoueraient.
2. Ce que l’app doit faire
2.1 Choix du pays dans la configuration de la boutique
- Un champ « Pays de la boutique », obligatoire à la création de la boutique et modifiable ensuite.
- Liste proposée, en codes ISO à 2 lettres :
| Code | Pays | Indicatif |
|---|---|---|
BJ |
Bénin | +229 |
CI |
Côte d’Ivoire | +225 |
SN |
Sénégal | +221 |
BF |
Burkina Faso | +226 |
TG |
Togo | +228 |
CG |
Congo | +242 |
- Valeur par défaut proposée : le pays du numéro de téléphone du vendeur s’il est connu, sinon
BJ. - Boutiques existantes : à la prochaine ouverture de la configuration, demander au vendeur de confirmer
son pays (un bandeau « Confirmez le pays de votre boutique »). Des boutiques ont un pays erroné : une
boutique béninoise était réglée sur
CI.
2.2 Enregistrer le pays
Le pays est rangé dans payment.country de la configuration du portail :
GET /api/v1/clients/portal-editor/config (Authorization: Bearer <jeton client>)
PUT /api/v1/clients/portal-editor/config (Authorization: Bearer <jeton client>)
⚠️ Le PUT remplace la configuration entière.
- Faites toujours un
GET, modifiez seulementpayment.country, puis renvoyez l’objet complet. - Un
PUTpartiel remettrait à zéro le reste : couleurs, textes, forfaits.
Le backend accepte un code de 2 lettres. Il le met en majuscules et ignore toute autre valeur.
Exemple de corps : l’objet complet reçu du GET, avec seulement ce champ modifié :
{ "...": "…reste de la configuration inchangé…", "payment": { "...": "…", "country": "CI" } }
2.3 Ajouter le pays dans les liens de paiement
Tous les liens de vente générés par l’app portent le paramètre country :
https://live.jmoai.net/api/v1/store/buy-ticketmomo?nasid=<NAS>&amount=<prix>¤cy=cfa&profile_name=<forfait>&country=CI
- Dans le portail captif, ajoutez aussi
&mac=$(mac)&ip=$(ip), comme aujourd’hui. - Si le réglage de la boutique et le paramètre du lien diffèrent, c’est le réglage de la boutique qui gagne. Le paramètre du lien n’est qu’un secours, pour les boutiques qui n’ont pas encore enregistré leur pays. Gardez-le quand même, il évite les erreurs.
- Rappels déjà connus : pas de
timelimit, dont la durée vient du nom du forfait (100F-5h) ; le vrai NAS dans un lien partagé hors du WiFi, jamais$(server-name).
3. Ce que voit l’acheteur
La page de paiement J+SERVICES affiche le logo TiketMOMO, le nom du WiFi et l’adresse DNS de la boutique, puis les opérateurs du pays de la boutique, avec l’indicatif prérempli. Exemples d’opérateurs :
| Pays | Opérateurs |
|---|---|
| BJ | MTN, Moov, Celtiis |
| CI | MTN, Moov, Orange, Wave |
| SN | Orange, Free, Wave |
| BF | Orange, Moov, Wave |
| TG | Togocom, Moov |
| CG | MTN |
Les pays hors Bénin s’ouvrent progressivement côté backend. Une boutique d’un pays pas encore ouvert voit « Paiement indisponible pour ce pays » : l’app n’a rien à gérer de plus.
4. Recette
- Créer une boutique et choisir
CI→ unGETde la configuration renvoiepayment.country: "CI". - Un lien généré contient
&country=CI. - Le
PUTne remet pas à zéro les autres réglages : vérifier les couleurs et les forfaits après enregistrement. - Une boutique existante sans pays affiche le bandeau de confirmation.
Questions et écarts : les remonter avec l’heure, la route appelée et le corps de la réponse.