VibeFox Paymob for OpenCart — Aide
Prérequis
OpenCart : 3.0.x (testé avec 3.0.5.0) ou 4.0.2 et ultérieur (testé avec 4.1.0.3).
PHP : 8.0 ou ultérieur.
Compte Paymob : un compte marchand dans l'un des pays pris en charge : Égypte, Émirats arabes unis, Arabie saoudite, Oman ou Pakistan. Vous avez besoin de quatre valeurs du tableau de bord Paymob : la clé API, l'ID d'intégration d'un paiement en ligne, l'ID d'iFrame de la page de paiement et le secret HMAC.
Devise : la devise de la caisse doit être celle de votre pays Paymob : EGP pour l'Égypte, AED pour les Émirats arabes unis, SAR pour l'Arabie saoudite, OMR pour Oman, PKR pour le Pakistan. Ajoutez-la dans System > Localisation > Currencies si votre boutique ne l'a pas encore. Avec une autre devise, le mode de paiement est masqué à la caisse. Les comptes Paymob multi-devises ne sont pas pris en charge.
Clé de licence VibeFox : achetée sur vibefox.net. Une clé fonctionne sur un seul domaine.
Installation
Le téléchargement est un seul fichier ZIP contenant les paquets pour les deux versions d'OpenCart. Décompressez-le sur votre ordinateur. Il contient README.txt, le paquet OpenCart 3 wcp_paymob_pay-oc3-(version).ocmod.zip et le paquet OpenCart 4 wcp_paymob_pay.ocmod.zip. Installez uniquement le paquet de votre version d'OpenCart. La clé de licence est la même pour les deux versions.
OpenCart 3
1. Dans l'administration, allez dans Extensions > Installer, cliquez sur Upload et choisissez le fichier wcp_paymob_pay-oc3-(version).ocmod.zip. L'extension n'a pas de modifications OCMOD, donc Extensions > Modifications n'a pas besoin d'être actualisé. Au lieu de l'installateur, vous pouvez copier le contenu du dossier upload de ce paquet dans le dossier racine de votre boutique.
2. Allez dans Extensions > Extensions et choisissez le type Payments. Repérez VibeFox Paymob Pay et cliquez sur Install (le bouton vert +).
3. Cliquez sur Edit (le bouton crayon) pour ouvrir la page des paramètres. Collez votre clé de licence VibeFox dans License key, dans le bloc de licence en haut de la page, puis cliquez sur Activate (voir Clé de licence).
4. Choisissez le Paymob country et saisissez la clé API, l'ID d'intégration, l'ID d'iFrame et le secret HMAC (voir Configuration).
5. Dans le tableau de bord Paymob, réglez les URL de callback de votre intégration sur l'URL affichée dans la section Callbacks (voir Callbacks).
6. Activez Enable/Disable et cliquez sur Save. Testez un paiement avec l'ID d'une intégration de test Paymob, puis saisissez l'ID de votre intégration réelle.
OpenCart 4
1. Dans l'administration, allez dans Extensions > Installer, cliquez sur Upload et choisissez le fichier wcp_paymob_pay.ocmod.zip. Ne renommez pas le fichier : OpenCart 4 prend le code de l'extension dans le nom du fichier, et un paquet renommé ne fonctionne pas.
2. Le paquet apparaît dans la liste des extensions installées sur la même page. Cliquez sur Install (le bouton vert +) à côté.
3. Allez dans Extensions > Extensions et choisissez le type Payments. Repérez VibeFox Paymob Pay, cliquez sur Install (le bouton vert +), puis sur Edit (le bouton crayon).
4. Saisissez la clé de licence, les clés et identifiants Paymob et les URL de callback comme aux étapes 3 à 6 pour OpenCart 3. La page des paramètres et ses champs sont identiques dans les deux versions. Seule l'URL de callback diffère (voir Callbacks).
Une nouvelle installation démarre avec le mode de paiement désactivé.
Configuration
Tous les paramètres se trouvent sur la page de l'extension : Extensions > Extensions > Payments > VibeFox Paymob Pay > Edit. Les sections sont listées à gauche ; le bouton Save situé sous la liste enregistre toute la page. Au-dessus des paramètres, la page vous avertit lorsqu'une des quatre valeurs Paymob manque (jusque-là, Paymob est masqué à la caisse) et lorsque la devise par défaut de la boutique n'est pas acceptée par le pays Paymob sélectionné.
À l'enregistrement, Title ne doit pas dépasser 128 caractères, Sort Order doit être un nombre entier (les nombres négatifs sont acceptés), Total doit être un nombre supérieur ou égal à 0, et la zone géographique et les statuts de commande sélectionnés doivent exister ; sinon rien n'est enregistré et la page indique le champ concerné.
Paymob
Enable/Disable : Enable Paymob active ou désactive le mode de paiement. Par défaut : désactivé.
Title : le nom du mode de paiement que voient les clients à la caisse. C'est aussi le nom du mode de paiement enregistré dans la commande, jusqu'à 128 caractères. Si le champ est vide, les clients voient Paymob. Par défaut : Paymob.
Description : le texte affiché au client à l'étape Confirm Order, au-dessus du bouton de confirmation. Par défaut : Pay securely by card or mobile wallet on the Paymob payment page. Laissez vide pour n'afficher aucun texte.
Sort Order : la position de Paymob parmi les modes de paiement à la caisse. Laissez vide ou saisissez un nombre entier.
Geo Zone : proposer Paymob uniquement pour les adresses de paiement de la zone géographique sélectionnée. Par défaut : All zones. Les zones géographiques se configurent dans System > Localisation > Geo Zones. Sur OpenCart 4, lorsque la boutique ne demande pas d'adresse de paiement, l'adresse de livraison est utilisée.
Total : le total de la caisse, dans la devise par défaut de la boutique, qu'une commande doit atteindre pour que Paymob soit proposé. Laissez vide pour proposer Paymob quel que soit le total.
Compte Paymob
Toutes les valeurs se trouvent dans votre tableau de bord marchand Paymob. Il n'existe pas de mode test séparé : pour les paiements test, saisissez l'ID d'intégration d'une intégration en mode test. Aucun autre paramètre ne change.
Paymob country : le pays de votre compte Paymob. Il sélectionne le serveur d'API et de page de paiement, et la devise de la caisse doit être celle de ce pays. Par défaut : Egypt.
API key : dans le tableau de bord Paymob, sous Settings > Account info > API Key.
Integration ID : dans le tableau de bord Paymob, sous Developers > Payment Integrations : l'ID numérique de l'intégration en ligne carte ou portefeuille. Les modes de paiement proposés sur la page Paymob sont ceux de cette intégration.
iFrame ID : dans le tableau de bord Paymob, sous Developers > iframes : l'ID numérique de l'iFrame de paiement.
HMAC secret : dans le tableau de bord Paymob, sous Settings > Account info > HMAC. Obligatoire : les commandes ne sont marquées comme payées que par des callbacks signés avec ce secret.
Integration ID et iFrame ID ne doivent contenir que des chiffres. Les espaces sont supprimés. Toute autre valeur est refusée à l'enregistrement avec le message indiquant que le champ must contain digits only — the previous value was kept. Les autres champs sont enregistrés.
La clé API et le secret HMAC enregistrés ne sont jamais réaffichés. Le champ reste vide et affiche Saved — leave empty to keep it. Saisissez une nouvelle valeur uniquement pour la modifier. Pour supprimer une valeur enregistrée, cochez Clear the saved API key on save ou Clear the saved HMAC secret on save sous le champ, puis cliquez sur Save.
Callbacks
Paymob signale chaque transaction à votre boutique. Dans le tableau de bord Paymob, ouvrez Developers > Payment Integrations, choisissez votre intégration, cliquez sur Edit et réglez à la fois Transaction processed callback et Transaction response callback sur la Callback URL affichée dans cette section. Sur OpenCart 3, elle ressemble à https://your-store/index.php?route=extension/payment/wcp_paymob_pay/callback ; sur OpenCart 4, à https://your-store/index.php?route=extension/wcp_paymob_pay/payment/wcp_paymob_pay.callback. Elle est construite à partir de l'adresse publique de votre installation OpenCart. Copiez-la avec le bouton Copy. La section contient aussi un lien vers le tableau de bord Paymob du pays sélectionné. Réglez les URL dans chaque intégration que vous utilisez, y compris l'intégration de test.
Le Transaction processed callback est envoyé par le serveur Paymob. Le Transaction response callback ramène le client dans votre boutique. Les deux sont signés avec votre secret HMAC et contrôlés par l'extension. Les callbacks sans signature valide sont rejetés et ne changent rien. Si le callback serveur arrive en retard ou se perd, un retour signé du client confirme aussi le paiement. L'URL de callback fonctionne aussi lorsque la boutique est en maintenance : OpenCart 3 laisse passer les requêtes des extensions de paiement, et sur OpenCart 4 l'extension ajoute une action de démarrage (startup) qui laisse passer les callbacks et le retour du client.
Commandes
OpenCart crée la commande à l'étape Confirm Order sans statut (une commande manquante). Elle ne reçoit un statut qu'après que Paymob a signalé une transaction signée correctement. Un paiement refusé laisse la commande sans statut ; le client revient à la caisse avec son panier conservé. Chaque champ ci-dessous liste vos statuts de commande OpenCart.
Order Status After Payment : la transaction Paymob est payée avec le montant et la devise attendus. Par défaut : En cours de traitement.
Awaiting Paymob Payment Status : la transaction est en attente, par exemple un paiement en espèces ou en kiosque. La commande reçoit le statut après paiement lorsque Paymob le confirme. Par défaut : En attente.
Paymob Payment On Hold Status : Paymob n'a fait qu'autoriser le montant (capturez-le dans le tableau de bord Paymob), le montant ou la devise payés diffèrent de la commande, ou le paiement est arrivé pour une commande annulée. Une note explique la raison. Par défaut : En attente, car OpenCart n'a pas de statut On hold. Vous pouvez créer votre propre statut dans System > Localisation > Order Statuses et le sélectionner ici.
Les trois champs suivants indiquent à l'extension les statuts utilisés par votre boutique. L'extension ne les définit jamais.
Payment Error Status : le statut utilisé par votre boutique pour les commandes ayant une erreur de paiement. Une transaction en attente peut faire passer une telle commande au statut d'attente. Par défaut : Échoué.
Cancelled Order Status : le statut utilisé par votre boutique pour les commandes annulées. Un paiement reçu pour une telle commande la place en suspens, ou ajoute seulement une note si elle avait été payée auparavant. Par défaut : Annulée.
Refunded Order Status : le statut utilisé par votre boutique pour les commandes remboursées. Un paiement reçu pour une telle commande ajoute seulement une note. Par défaut : Remboursée.
Avancé
Debug log : écrit les étapes de paiement et les callbacks dans paymob_p_debug.log.php, dans le dossier des journaux d'OpenCart (storage/logs). Le fichier ne peut pas être ouvert depuis le web. Les erreurs et les callbacks rejetés sont toujours enregistrés, même lorsqu'il est désactivé. Les clés, jetons et données clients ne sont jamais écrits. Par défaut : désactivé.
Log : affiche la taille et les dernières entrées du journal. Cliquez sur Clear log pour le vider.
Clean uninstall : lorsqu'il est activé, la désinstallation de l'extension supprime les paramètres de la passerelle et le journal. Les identifiants Paymob enregistrés pour les commandes (tentatives de paiement) sont toujours conservés. Par défaut : désactivé.
Importer / Exporter
Export : Download JSON enregistre les paramètres dans un fichier JSON. La clé API et le secret HMAC ne sont pas exportés.
Import : collez le JSON exporté précédemment et cliquez sur Import pour restaurer les paramètres. Les secrets enregistrés sont conservés.
Caisse
À l'étape Payment Method, le client choisit le mode de paiement (par défaut Paymob). À l'étape Confirm Order, le client voit votre description et la note You will be redirected to the secure Paymob payment page to pay by card or mobile wallet. OpenCart crée la commande à cette étape, toujours sans statut. Sur OpenCart 4, le client choisit le mode de paiement avec le bouton Choose du bloc du mode de paiement, dans la fenêtre Payment method options, puis clique sur Confirm Order en bas de la page de caisse. Lorsque le client clique sur Confirm Order, l'extension enregistre une nouvelle commande Paymob pour le total de la commande dans la devise de la commande, transmet à Paymob le nom, l'e-mail, le téléphone et l'adresse de facturation du client (sur OpenCart 4, lorsque la boutique ne demande pas d'adresse de paiement, l'adresse de livraison), et envoie le client sur la page de paiement Paymob de votre pays. Il y paie avec l'une des méthodes de votre intégration, par exemple une carte ou un portefeuille mobile.
Après le paiement, le client revient dans votre boutique. La commande n'est marquée payée que lorsque Paymob la confirme par une transaction signée. Elle reçoit alors son statut de la manière habituelle d'OpenCart, avec les e-mails de commande habituels et la mise à jour des stocks, et le client voit la page de succès de commande d'OpenCart. Un paiement en attente (par exemple en espèces ou en kiosque) ou un paiement autorisé donne aussi un statut à la commande, celui d'attente ou de suspens, et mène à la page de succès.
Si la commande est encore en cours de confirmation lorsque le client revient, une page Payment confirmation affiche Paymob accepted your payment and we are confirming it. You will receive an e-mail as soon as your order is confirmed — there is no need to pay again. Pour un paiement en attente, le texte est Your Paymob payment is pending (for example a cash or kiosk payment). Complete it as Paymob instructed you: your order is confirmed as soon as Paymob reports the payment. La page comporte un bouton Check again et un bouton Back to checkout.
Si le paiement a été refusé, le client revient à la caisse avec le même panier et le message Your Paymob payment was not completed. Please try again or choose another payment method. Chaque nouvelle tentative enregistre sa propre commande Paymob, le client peut donc payer à nouveau le panier. OpenCart 3 crée une nouvelle commande chaque fois que l'étape Confirm Order est affichée ; OpenCart 4 conserve une seule commande pour la caisse et la met à jour, si bien que le client paie la même commande avec une nouvelle tentative. Si le retour de Paymob ne peut pas être vérifié, le client voit We could not verify the response from Paymob. If you were charged, your order will be updated as soon as Paymob confirms the payment. Si une autre commande du même panier a déjà été payée ou attend un paiement (par exemple depuis un second onglet du navigateur), le client est redirigé vers la page de succès au lieu de payer à nouveau. Sur OpenCart 4, les messages affichés après le retour de Paymob apparaissent au-dessus de la page de caisse.
OpenCart 4 conserve la commande dans la caisse jusqu'à l'affichage de la page de succès. Si cette commande a été fermée sans paiement entre-temps (par exemple si vous l'avez annulée), le client est renvoyé à la caisse avec Your previous order was cancelled without a payment. Please confirm the order again to pay with a new order., et le prochain Confirm Order paie une nouvelle commande. Si cette commande a déjà un statut et que le panier contient maintenant d'autres produits ou quantités, le client est aussi renvoyé à la caisse, et le nouveau panier reçoit une nouvelle commande.
Si Paymob ne peut pas lancer le paiement, le client reste à l'étape Confirm Order avec un court message au-dessus du bouton, par exemple Paymob could not start the payment. Please check your billing details and try again, or choose another payment method. ou Could not connect to Paymob. Please try again in a moment. La raison technique est écrite dans le journal.
L'extension n'accepte que les paiements uniques sur la page Paymob. Elle ne gère ni cartes enregistrées, ni abonnements, ni formulaire de carte intégré à votre site, ni remboursements depuis l'administration.
Commandes
Statuts de commande
No status (missing order) : le client a été envoyé vers Paymob et n'a pas payé, le paiement a été refusé, ou Paymob n'a pas encore confirmé le paiement. Dans Sales > Orders, ces commandes ne sont affichées qu'avec le filtre Order Status réglé sur Missing Orders.
Sur OpenCart 4, une commande non payée de la caisse peut recevoir le statut Voided, que OpenCart 4 définit lorsque le client revient à l'étape Confirm Order. L'extension traite une telle commande comme une commande sans statut, et un paiement ultérieur la confirme quand même.
Order Status After Payment (default Processing) : Paymob a confirmé le paiement. Une note affiche la transaction, le montant et le type de carte avec les quatre derniers chiffres.
Awaiting Paymob Payment Status (default Pending) : le paiement est en attente chez Paymob, par exemple un paiement en espèces ou en kiosque. La commande passe au statut après paiement lorsque Paymob confirme le paiement.
Paymob Payment On Hold Status (default Pending) : Paymob n'a fait qu'autoriser le montant et ne l'a pas capturé (capturez-le dans le tableau de bord Paymob ; la commande passe au statut après paiement lorsque le callback de capture arrive) ; ou le montant ou la devise payés diffèrent de la commande ; ou un paiement est arrivé pour une commande qui avait été annulée. La note explique la raison. Vérifiez la commande, puis honorez-la ou remboursez le paiement dans le tableau de bord Paymob.
Lorsqu'une commande qui a déjà un statut change, OpenCart en informe le client. Si un second paiement réussi arrive pour une commande déjà payée, ou un paiement pour une deuxième commande d'un panier déjà payé, la commande payée n'est pas modifiée et une note vous demande de rembourser le doublon dans le tableau de bord Paymob. Un paiement pour une commande annulée qui avait été payée auparavant, ou pour une commande remboursée, ajoute seulement une note : la commande n'est pas rouverte. Un paiement refusé pour une commande qui a déjà un statut ajoute seulement une note.
Les notes sont des entrées de l'History de la commande, invisibles pour le client.
Onglet VibeFox Paymob Pay
Dans Sales > Orders, ouvrez une commande payée avec Paymob. En bas de la page de commande, à côté de History et Additional, l'onglet VibeFox Paymob Pay affiche chaque tentative Paymob de la commande : la Paymob order avec l'identifiant de commande marchand et le pays, le Paymob transaction ID, le Status, le montant Requested, le Amount reported by Paymob avec la carte, et le Paymob message. En dessous figurent les Notes de l'extension pour cette commande. L'onglet est affiché aux utilisateurs qui ont accès à l'extension.
Remboursements
Les remboursements depuis l'administration ne sont pas pris en charge. Remboursez ou annulez le paiement dans le tableau de bord Paymob. Lorsque Paymob signale un remboursement ou une annulation, une note est ajoutée à la commande, et le statut de la commande ne change pas. Mettez la commande à jour manuellement.
Clé de licence
L'extension fonctionne avec une clé de licence VibeFox obtenue sur vibefox.net. Le bloc de licence License — VibeFox Paymob Pay est le premier bloc de Extensions > Extensions > Payments > VibeFox Paymob Pay > Edit, au-dessus des paramètres. Collez la clé dans License key et cliquez sur Activate. Ensuite, le bloc affiche la clé masquée, le statut (par exemple la date jusqu'à laquelle la licence est active et votre domaine) et les boutons Check now pour vérifier à nouveau le statut, Change key pour saisir une autre clé et Remove key pour retirer la clé de cette boutique. En dessous figurent la ligne Product: opencart-payment-paymob et le lien Manage licenses and domains in your account, qui ouvre votre compte vibefox.net. Seuls les utilisateurs administrateurs disposant de l'autorisation Modify pour l'extension peuvent modifier la clé. Les textes du bloc suivent la langue de l'administration (l'anglais et le russe sont inclus).
Si la clé n'est pas acceptée, le bloc indique la raison, par exemple Key not found, This key belongs to another product, Domain limit reached ou License expired on suivi d'une date. Après une modification de l'adresse de la boutique, ou après avoir libéré un emplacement de domaine dans votre compte, cliquez sur Check now. Si le serveur de licences est injoignable, l'extension continue de fonctionner avec le dernier statut connu.
Une clé fonctionne sur un seul domaine : l'adresse de la boutique issue de la configuration d'OpenCart. Retirer la clé de la boutique ne libère pas son emplacement de domaine. Libérez-le dans votre compte vibefox.net.
Sans clé active, Paymob n'est pas affiché aux clients à la caisse. Si un paiement est tout de même lancé, le client voit This payment method is not available. Please choose another one. Un utilisateur administrateur connecté à l'administration dans le même navigateur voit toujours le mode de paiement dans la boutique, marqué (unlicensed — visible to admins only), afin que vous puissiez installer et tester l'extension avant d'acheter une clé. Sur OpenCart 4, cet aperçu n'est pas disponible : la boutique ne voit pas la connexion à l'administration, donc sans clé active le mode de paiement est masqué pour tout le monde. Après avoir ouvert une fois la page Edit, un rappel apparaît sur le Dashboard de l'administration. Fermez-le avec × pour le masquer pendant 7 jours. Les commandes existantes ne sont pas affectées : les paiements déjà lancés sont toujours confirmés.
Lorsqu'une licence expire, l'extension continue de fonctionner, mais les mises à jour et le support nécessitent un renouvellement. Le statut est vérifié à nouveau automatiquement lorsque vous ouvrez le Dashboard ou la page Edit de l'administration : une fois par jour pendant les 14 premiers jours après la saisie de la clé, puis une fois par semaine. Aucune tâche cron n'est nécessaire. La désinstallation de l'extension supprime toujours la clé de licence et le statut de licence.
Dépannage
Paymob n'apparaît pas à la caisse : vérifiez que la licence est active, que Enable/Disable est activé, que les quatre valeurs (clé API, ID d'intégration, ID d'iFrame, secret HMAC) sont renseignées et que la devise de la caisse est celle du Paymob country sélectionné. La page des paramètres affiche un avertissement lorsqu'un élément manque. Vérifiez aussi que l'adresse de paiement se trouve dans la Geo Zone sélectionnée et que la commande atteint le Total défini dans les paramètres.
Le paiement a abouti, mais la commande reste sans statut : les callbacks n'atteignent pas votre boutique. Vérifiez que Transaction processed callback et Transaction response callback de l'intégration utilisée correspondent exactement à l'URL affichée dans la section Callbacks, et que le HMAC secret est celui du même compte Paymob. Les callbacks rejetés sont écrits dans le journal sous forme d'avertissements, même lorsque Debug log est désactivé. Consultez le champ Log sur la page de l'extension.
Le callback répond Invalid signature : le secret HMAC des paramètres ne correspond pas au compte Paymob, ou le compte d'un autre pays est sélectionné. Copiez à nouveau le secret HMAC.
Le callback répond Not configured : le secret HMAC est vide. Saisissez le secret ; Paymob renouvelle le callback.
Le callback répond locked ou retry : la commande était en cours de mise à jour par une autre requête au même moment, par exemple le retour du client, ou le statut de la commande n'a pas pu être défini. Paymob renouvelle le callback. La raison est écrite dans le journal.
Ouvrir l'URL de callback dans le navigateur mène à la caisse avec le message de vérification impossible : c'est normal. L'URL n'accepte que les requêtes signées de Paymob.
Le client voit une erreur après Confirm Order : activez Debug log et consultez le journal. Paymob payments are temporarily unavailable signifie une clé API erronée ou une valeur manquante. Paymob could not start the payment signifie que Paymob a rejeté la requête, par exemple à cause d'un ID d'intégration erroné ou de données de facturation incomplètes. This order cannot be paid with Paymob signifie que le total de la commande est zéro. Paymob does not accept payments in suivi d'une devise signifie que la devise de la commande n'est pas celle du pays Paymob sélectionné. This payment method is not available. signifie que la session de caisse ne correspond plus à la commande ou que le mode de paiement a été désactivé entre-temps : le client doit recharger la caisse.
La commande est en statut en suspens ou d'attente après le paiement : lisez les notes de l'onglet VibeFox Paymob Pay. Le paiement est en attente (espèces ou kiosque), la transaction n'a été qu'autorisée (capturez-la dans le tableau de bord Paymob), le montant ou la devise ne correspondait pas, ou le paiement est arrivé après l'annulation de la commande.
Paiements test : saisissez l'ID d'une intégration de test Paymob dans Integration ID et réglez les URL de callback dans cette intégration. Pour les paiements réels, saisissez à nouveau l'ID de votre intégration réelle.
Désinstallation
Allez dans Extensions > Extensions, choisissez le type Payments et cliquez sur Uninstall (le bouton rouge −) à côté de VibeFox Paymob Pay. La clé de licence et le statut de licence de cette extension sont toujours supprimés. OpenCart supprime toujours les paramètres propres à l'extension : Enable/Disable, Sort Order, Geo Zone, Total et les statuts de commande de la section Orders, qui reviennent à leurs valeurs par défaut lors d'une réinstallation. Sur OpenCart 4, l'événement OpenCart de l'extension et son action de démarrage, qui laisse passer les callbacks et le retour du client en mode maintenance, sont aussi supprimés. Si Clean uninstall est activé, les autres paramètres de la passerelle (titre, description, pays, clés et identifiants, journalisation) et le journal sont supprimés. S'il est désactivé, ils sont conservés pour une réinstallation ultérieure. Les tentatives de paiement Paymob des commandes sont toujours conservées. Les commandes existantes conservent leurs notes de paiement et leurs identifiants Paymob.
Sur OpenCart 4, pour supprimer aussi les fichiers de l'extension, allez dans Extensions > Installer après la désinstallation, cliquez sur Uninstall (le bouton orange −) à côté de VibeFox Paymob Pay dans la liste des extensions installées, puis sur Delete (le bouton rouge corbeille) pour supprimer le paquet envoyé.
Paymob est une marque de son propriétaire respectif. Cette extension n'est ni affiliée à Paymob ni approuvée par Paymob.
