FOX - WooCommerce Currency Switcher Professional

Passerelle de paiement et devise non prise en charge dans WooCommerce : solutions

Lorsqu'une passerelle de paiement ne prend pas en charge la devise choisie par un client WooCommerce, le symptôme dépend de la passerelle : une erreur Code de devise non valide (Invalid currency code), un paiement refusé, une page de paiement qui affiche la devise de base, une commande débitée dans une devise que personne n'a choisie, ou une page de paiement sans aucun moyen de paiement. Le sélecteur de devises est rarement la cause et ne peut pas, à lui seul, être la solution : FOX décide quelle devise arrive à la page de paiement, et la passerelle décide ce qu'elle peut débiter. Voici comment les deux s'articulent, comment lire chaque symptôme, et les réglages qui font que chaque devise rencontre une passerelle qui l'accepte.

Pourquoi une passerelle de paiement ne prend pas en charge toutes les devises que vous affichez

Une commande WooCommerce n'a qu'une seule devise. Avec Multiple autorisé (Is multiple allowed) = Oui (Yes) dans l'onglet Avancé (Advanced) des réglages de FOX (la valeur par défaut d'une nouvelle installation), la page de paiement conserve la devise du visiteur : WooCommerce la renvoie via get_woocommerce_currency(), l'enregistre dans la commande, et la passerelle reçoit le total de la commande avec ce code de devise. À partir de là, c'est le plugin de la passerelle et votre compte marchand qui prennent la main. FOX ne touche pas à la transaction.

Il n'est donc pas possible d'afficher 30 EUR sur la page de paiement et d'envoyer le paiement dans la devise de base : la passerelle recevrait le nombre 30, pas la valeur. Si une passerelle doit débiter une autre devise, la page de paiement elle-même doit basculer dans cette devise avant que le client ne paie, afin que le montant à l'écran soit le montant débité. Afficher les prix en devise locale, débiter en devise de base explique cette règle et les configurations qui en découlent.

Lire le symptôme

Ce que vous voyezCe que cela signifie en général
Code de devise non valide (Invalid currency code), Bad value: purchase_currency, devise non prise en charge (unsupported currency)La passerelle refuse le code : la passerelle ou votre compte ne prend pas en charge cette devise, ou le code saisi dans FOX n'est pas un code ISO valide
Paiements refusés uniquement dans les devises autres que la devise de baseLe compte marchand n'est pas activé pour ces devises
La page de la passerelle affiche la devise de base, ou le même nombre avec un autre symbole (3,12 EUR devient 3,12 KWD)Le plugin de la passerelle lit le réglage de devise de la boutique au lieu de la devise de la commande
La commande ou le débit se retrouve dans une devise que le client n'a pas choisieUne passerelle monodevise convertit ou renomme elle-même le montant
Une passerelle manque, ou Désolé, il semble qu'aucun moyen de paiement ne soit disponible (Sorry, it seems that there are no available payment methods)La passerelle s'est masquée pour cette devise, ou les règles de paiement de FOX l'ont masquée (voir ci-dessous)
Bouton PayPal absent ou erreur de devise PayPalVoir Devise non prise en charge par PayPal, qui traite PayPal en détail

Vérifier ce que la passerelle prend en charge

Consultez la liste des devises prises en charge par la passerelle, et vérifiez pour quelles devises votre propre compte est activé : les deux diffèrent souvent. Limites typiques :

  • Square débite dans la devise du pays auquel appartient le compte vendeur.
  • PayFast traite les paiements en rand sud-africain.
  • Les services de paiement différé comme Klarna et Afterpay fonctionnent par marché, chacun dans la devise de ce marché.
  • Razorpay n'accepte des devises autres que l'INR que si les paiements internationaux sont activés sur le compte, et même alors pas toutes les devises.
  • De nombreuses passerelles bancaires locales n'acceptent que la devise de leur propre pays.

Vérifiez ensuite le code lui-même. Dans l'onglet Devises (Currencies), chaque devise visible par une passerelle doit utiliser son code ISO 4217 : GBP, pas UK ; PKR, pas Rs. Le symbole va dans sa propre colonne. Un code saisi avec une espace au début ou copié avec un caractère invisible est lui aussi invalide ; saisissez-le de nouveau. Les codes non ISO conviennent aux devises uniquement destinées à l'affichage, comme l'explique les codes de devise personnalisés, mais ne laissez jamais l'un d'eux atteindre une passerelle.

Testez avec le bac à sable de la passerelle : une commande dans chaque devise que vous acceptez. Sur l'écran de la commande, le bloc FOX affiche la Devise de la commande (Order currency) ; elle doit correspondre à la devise et au montant du tableau de bord de test de la passerelle.

Associer chaque devise à une passerelle qui l'accepte

FOX propose trois outils, qui peuvent se combiner.

N'afficher chaque passerelle que dans ses devises : les règles de paiement

  1. Dans l'onglet Avancé (Advanced), activez Règles de paiement (Payments rules) et enregistrez. Un onglet Paiements (Payments) apparaît.
  2. Dans cet onglet, Comportement des paiements (Payments behavior) détermine le fonctionnement des listes pour toutes les passerelles : Est masquée (Is hidden) masque une passerelle dans les devises que vous sélectionnez pour elle, Est affichée (Is shown) ne l'affiche que dans les devises sélectionnées.
  3. Chaque passerelle activée a sa propre liste de devises. Une passerelle dont la liste est vide n'est jamais filtrée.

Par exemple, avec Est affichée (Is shown), sélectionnez uniquement l'UZS pour une passerelle exclusivement en UZS, et l'USD et l'EUR pour une passerelle de cartes ; chaque visiteur voit les passerelles capables de débiter sa devise. Les règles s'appliquent sur la page de paiement et sur la page de règlement de commande. Plus de détails dans comment masquer une passerelle de paiement selon la devise.

Débiter dans la devise de base : Multiple autorisé = Non

Lorsque la devise de la passerelle est la devise de base de WooCommerce, par exemple une boutique en ZAR avec PayFast, réglez Multiple autorisé (Is multiple allowed) sur Non (No). Les visiteurs continuent de naviguer dans leur devise, mais la page de paiement repasse à la devise de base et la passerelle la reçoit toujours. C'est la solution la plus rapide pour une boutique avec une seule passerelle locale.

Basculer vers une devise prise en charge sur la page de paiement

Lorsque la passerelle accepte une devise qui n'est pas la devise de base, ou seulement certaines de vos devises, gardez Multiple autorisé (Is multiple allowed) = Oui (Yes) et faites basculer la page de paiement vers une devise acceptée avec un court extrait de code. Une version testée, qui ne bascule que les devises non prises en charge et rend aux visiteurs leur devise après le paiement, figure dans afficher la devise locale, débiter en devise de base, avec une variante qui change la devise lorsque le client choisit un moyen de paiement. La version en une ligne se trouve dans la FAQ forcer une devise sur la page de paiement.

Aucun moyen de paiement disponible après le changement de devise

Lorsque la page de paiement affiche Désolé, il semble qu'aucun moyen de paiement ne soit disponible (Sorry, it seems that there are no available payment methods), ou qu'une passerelle qui fonctionne dans la devise de base disparaît dans une autre, l'une de ces raisons en est la cause :

  • La passerelle s'est masquée. De nombreuses passerelles vérifient get_woocommerce_currency() avant de se proposer, et FOX y répond avec la devise du visiteur. Une passerelle exclusivement en ZAR disparaît donc pour un visiteur en USD, et si c'était la seule passerelle, il n'en reste aucune. Cela apparaît souvent juste après l'activation de FOX, car une nouvelle installation laisse les clients payer dans la devise qu'ils ont sélectionnée. Utilisez Multiple autorisé (Is multiple allowed) = Non (No) ou une devise de paiement forcée, comme ci-dessus.
  • Les règles de paiement masquent toutes les passerelles pour cette devise. Ouvrez l'onglet Paiements (Payments) et passez les devises en revue une par une : chacune doit laisser au moins une passerelle visible. Avec Est affichée (Is shown), une passerelle pour laquelle certaines devises sont sélectionnées disparaît dans toutes les autres. Pour tester, désactivez Règles de paiement (Payments rules) ; si les passerelles reviennent, les listes sont en cause.
  • Paiement selon les règles GeoIP. Cette option de l'onglet Avancé (Advanced) définit la devise de la page de paiement d'après le pays du visiteur, et le visiteur ne peut pas la changer sur la page de paiement. Si la passerelle n'est affichée que dans une autre devise, ce visiteur ne la voit jamais. Les règles sont lues dans l'ordre et la première devise qui liste le pays l'emporte : un pays ajouté à deux devises obtient donc toujours la première. Devise de paiement selon le pays du client traite de cette option.
  • La passerelle déclenche une erreur. Certains plugins de passerelle échouent avec une erreur PHP ou JavaScript dans une devise non prise en charge, ce qui peut aussi retirer le bouton Valider la commande (Proceed to checkout) du panier. Consultez la console du navigateur et wp-content/debug.log ; l'erreur désigne le plugin auquel la signaler.

La passerelle débite la mauvaise devise

Si la commande affiche la bonne devise dans le bloc FOX mais que la page de paiement ou la banque en affiche une autre, le problème vient de la façon dont le plugin de la passerelle construit la demande de paiement :

  • Elle lit le réglage de la boutique, pas la commande. FOX modifie la devise que WooCommerce renvoie et enregistre dans la commande ; il ne réécrit pas la devise de base stockée dans les réglages de WooCommerce. Une passerelle qui lit directement ce réglage envoie le code de la devise de base avec le nombre converti. Le correctif relève du plugin de la passerelle, qui devrait utiliser la devise de la commande ($order->get_currency()). En attendant que ses auteurs la modifient, n'affichez cette passerelle que dans la devise de base avec Règles de paiement (Payments rules).
  • Elle ne prend en charge qu'une devise et convertit elle-même. Certaines passerelles monodevise convertissent toute commande dans leur propre devise à leur propre taux, ou créent le paiement dans cette devise quelle que soit la commande. Cherchez dans les réglages de la passerelle une option de conversion de devise, et préférez laisser les clients voir le montant réel en forçant cette devise sur la page de paiement.

Liste de contrôle

  • Chaque devise activée utilise un code ISO valide, saisi de nouveau sans espaces.
  • Vous savez quelles devises chaque passerelle, et votre compte chez elle, peuvent débiter.
  • Chaque devise atteint au moins une passerelle qui l'accepte : par les Règles de paiement (Payments rules), par Multiple autorisé (Is multiple allowed) = Non (No), ou par une devise de paiement forcée.
  • Paiement selon les règles GeoIP (Checkout by GeoIP rules) et les listes de pays GeoIP n'envoient pas les visiteurs vers une devise sans passerelle.
  • Une commande en bac à sable dans chaque devise affiche la même devise et le même montant dans le bloc de commande FOX et dans le tableau de bord de la passerelle.

Si une passerelle échoue encore dans une devise après ces vérifications, ouvrez un sujet sur le forum de support de FOX en indiquant le nom de la passerelle, le texte exact de l'erreur, votre réglage Multiple autorisé (Is multiple allowed) et les devises concernées, et nous y jetterons un œil.