WooCommerce : Remises sur la parité de pouvoir d'achat (PPA)
Publié: 2022-08-03Depuis… aujourd'hui, les cours en ligne de Business Bloomer sont abordables pour tous .
Il est regrettable que les produits numériques (tels que nos cours en ligne WooCommerce) soient facturés en dollars américains, mais il n'y a pas d'ajustement pour les pays moins privilégiés.
C'est dommage car le contenu devrait être accessible à TOUS les développeurs WooCommerce du monde entier, quel que soit leur niveau de revenu. Je reçois des dizaines d'e-mails par mois de personnes incroyables qui ne peuvent pas vraiment se permettre un cours à 397 USD car elles gagnent cette somme en 4 mois s'ils ont de la chance.
Alors, changeons cela. Voici venir la parité de pouvoir d'achat (PPA) à la rescousse.
La PPA est une mesure spéciale qui nous indique le véritable "pouvoir d'achat" d'un pays donné. Prenez un panier de marchandises identiques, payez dans votre monnaie locale dans votre propre pays ; acheter les mêmes articles en USD aux États-Unis. Comparez cette différence au taux de change réel. Maintenant, vous avez vraiment une idée du prix qu'un pays peut se permettre de payer pour ce panier de biens.
Parlons en anglais simple. Êtes-vous de l'Inde ? Vous pouvez obtenir jusqu'à 75 % de réduction sur nos cours en ligne. Êtes-vous d' Afrique du Sud ? Peut-être une réduction de 59 % ! Êtes-vous d' Argentine ? 61% de réduction en moyenne. Êtes-vous de Norvège ? Pas de réduction, désolé (il semble que vous fassiez mieux que les États-Unis). Etc…
Dans cet article, je vais passer en revue un exemple rapide de calcul PPP pour vous donner un peu de contexte, puis je vous expliquerai comment j'ai mis en œuvre les remises PPP sur ce même site Web WooCommerce.
Vous voulez m'aider à tester la fonctionnalité de remise PPP qui est actuellement en version bêta ? Ajoutez un cours au panier, par exemple CustomizeWoo PRO, sélectionnez votre pays de facturation lors du paiement et laissez un commentaire ci-dessous avec la réduction que vous avez obtenue, le cas échéant.
Prendre plaisir!
Parité de Pouvoir d'Achat - Les Mathématiques
Exemple : aux États-Unis, je peux acheter le livre « QUOI QUE CE SOIT » pour 10 USD . En Inde, sur la base du taux de change d'aujourd'hui (1 USD = 78 INR ), le prix devrait être de 780 INR …. mais ce n'est pas le cas, car l'Inde n'a pas le même pouvoir d'achat que les États-Unis .
Si le même livre " WHATEEVER " en Inde est au prix de 300 INR , la PPA est égale à 300 INR / 10 USD = 30. Vous pouvez voir qu'il y a une énorme différence entre le taux de change réel (78) et la PPA calculée ( 30). C'est-à-dire que l'Inde, en moyenne, peut acheter le même article pour moins de dollars parce qu'elle ne peut pas se permettre de payer le montant converti exact.
Nous pouvons maintenant utiliser les 2 chiffres pour arriver à la conclusion suivante : en Inde, cet article à 10 USD peut être acheté en monnaie locale pour 300 INR ; étant donné le taux de change actuel de 78, cela signifie qu'un article à 10 USD peut y être acheté pour 300/78 = 3,84 USD
En un mot, si l'Inde ne peut se permettre que 3,84 USD sur 10, les produits vendus en Inde par une société américaine en USD devraient être réduits de 61,6% pour être «équitables» et conformes au PPP . Un cours à 100 USD devrait coûter 38,4 USD en Inde.
Mise en œuvre de la parité de pouvoir d'achat WooCommerce
J'ai décidé de détecter le pays directement sur la page de paiement, une fois le pays de facturation choisi. Je n'utilise pas la géolocalisation parce que c'est plus lent, et aussi parce qu'avec la technologie VPN, vous ne savez peut-être pas vraiment d'où vient un utilisateur.
Voici le PHP que j'utilise pour lire dynamiquement le pays de facturation (code à 2 lettres) une fois le paiement chargé/actualisé :
/**
* @snippet Get Billing Country @ WooCommerce Checkout
* @how-to Get CustomizeWoo.com FREE
* @author Rodolfo Melogli
* @compatible WooCommerce 6
* @donate $9 https://businessbloomer.com/bloomer-armada/
*/
add_action( 'woocommerce_checkout_update_order_review', 'bbloomer_ppp' );
function bbloomer_ppp( $post_data ) {
parse_str( $post_data, $output );
if ( $output['billing_country'] ) {
$country_code_2 = $output['billing_country'];
// THEN, DO SOMETHING WITH COUNTRY CODE
}
}
Une fois que j'ai obtenu le pays de facturation, il se passe plein de choses :
- Je m'assure que le pays n'est pas les États-Unis, car sa valeur PPA est de 1 par définition.
- Je m'assure que le panier contient bien la catégorie « cours en ligne », sinon je quitte.
- Je reçois le code de devise du pays (de WooCommerce lui-même).
- J'appelle une API de taux de change gratuite (exchangerate.host) et j'obtiens le taux de change par rapport à l'USD.
- Je calcule le code à 3 lettres du pays tel qu'il est nécessaire pour le point 6 (par opposition à la version à 2 lettres). Cela se fait en appelant l'API de la Banque mondiale.
- J'appelle une API PPP gratuite (Banque mondiale) et j'obtiens la valeur PPP du pays (calculée comme la valeur moyenne sur les 5 dernières années).
- Je calcule la remise en fonction de la valeur PPP (max 75%)
Voici le PHP que j'utilise pour obtenir le code devise, le taux de change et la valeur PPP pour un pays de facturation WooCommerce donné :
/**
* @snippet Get Currency, Ex Rate & PPP By Billing Country
* @how-to Get CustomizeWoo.com FREE
* @author Rodolfo Melogli
* @compatible WooCommerce 6
* @donate $9 https://businessbloomer.com/bloomer-armada/
*/
// GET CURRENCY CODE
$locale_info = include WC()->plugin_path() . '/i18n/locale-info.php';
$currency = $locale_info[$output['billing_country']]['currency_code'];
// GET EXCHANGE RATE
$req_url = 'https://api.exchangerate.host/latest/?base=USD&symbols=' . $currency;
$response_json = file_get_contents( $req_url );
$response = json_decode( $response_json );
if ( $response->success === true ) {
$exchange_rate = $response->rates->{$currency};
}
// GET COUNTRY PPP VALUE (AVERAGE FOR PREVIOUS 5 YEARS)
$ppp_url = 'https://api.worldbank.org/v2/country/' . $country_code_3 . '/indicator/PA.NUS.PRVT.PP?date=' . date( "Y", strtotime( "-5 years" ) ) . ':' . date( "Y", strtotime( "-1 year" ) ) . '&format=json';
$ppp = json_decode( file_get_contents( $ppp_url ), true );
$values = array();
foreach ( $ppp[1] as $key => $val ) {
if ( $val['date'] && $val['value'] ) {
$values[$val['date']] = (float) $val['value'];
}
}
$avg_ppp = array_sum( $values ) / count( $values );
A ce stade, une notification de paiement apparaît :
- Si aucune valeur PPA n'existe pour ce pays (la Banque mondiale ne dispose pas de données pour chaque pays), j'invite les clients à me contacter car je ne veux pas que quiconque soit exclu des remises potentielles.
- Si la valeur PPP existe et que le pays a moins de pouvoir d'achat, j'affiche une notification de paiement avec un bouton "Appliquer le coupon" de 1 % à 75 % de réduction (au clic, la caisse se recharge et applique la réduction).
Voici le code PHP qui affiche l'avis de paiement lorsque PPP n'est pas nul et que la remise est comprise entre 1 et 75% :
/**
* @snippet Show Notice @ WooCommerce Checkout
* @how-to Get CustomizeWoo.com FREE
* @author Rodolfo Melogli
* @compatible WooCommerce 6
* @donate $9 https://businessbloomer.com/bloomer-armada/
*/
$message = 'Your country is eligible for a ' . $discount . '% discount on courses! Read more about Purchasing Power Parity <a href="/woocommerce-purchasing-power-parity-discounts" target="_blank">here</a>. <a href="' . esc_url( add_query_arg( 'ppp', $discount, wc_get_checkout_url() ) ) . '" class="button wc-forward">Apply Discount</a>';
if ( ! WC()->cart->has_discount( $discount ) ) {
wc_add_notice( $message, 'success' );
}
Coupons de parité de pouvoir d'achat WooCommerce
Bien sûr, j'ai dû également me pencher sur la création de codes de réduction, car j'ai décidé de garder les réductions PPP facultatives, c'est-à-dire que les clients doivent cliquer pour appliquer leur réduction . C'est une bonne stratégie - je pense - parce que quelqu'un peut ne pas vouloir utiliser la remise (par exemple , je suis peut-être un développeur américain vivant en Inde, donc j'ai en fait l'une des valeurs de pouvoir d'achat les plus élevées ).
J'ai donc dû :
- générer des codes de coupon en masse, un pour chaque montant de remise (extrait PHP à venir)
- appliquer automatiquement un coupon en cliquant sur le bouton "Appliquer le coupon" (extrait PHP à venir)
- masquer les codes de coupon à la caisse, pour éviter le partage/abus de coupon
Et c'est tout.
WooCommerce PPP est maintenant en version bêta, déjà en cours d'exécution sur la page de paiement de Business Bloomer, et vous pouvez le tester en ajoutant un cours au panier (par exemple, voici un lien direct pour ajouter CustomizeWoo PRO au panier), en sélectionnant un pays de facturation et en lisant le paiement notification avec le montant de la réduction.
FAQ sur la parité de pouvoir d'achat WooCommerce
Les calculs sont basés sur des données publiques disponibles en ligne, alors ne le prenez pas personnellement ! J'ai fait de mon mieux en considérant la valeur moyenne du PPP au cours des 5 dernières années. Si vous pensez toujours que les calculs ne sont pas justes, postez un commentaire ci-dessous et parlons-en. Nous sommes toujours en version bêta.
Ceux-ci feront toujours partie du commerce en ligne. Je vais probablement demander à certaines personnes d'entrer dans des pays de facturation aléatoires pour obtenir une remise - mais je pense que leurs commandes échoueront car PayPal/Stripe ne reconnaîtra pas ce pays. Si cette vérification échoue, aucun problème. Ces transactions seront nettement inférieures au nombre de personnes dans le monde qui peuvent désormais se permettre mes cours.
Parce que les autres produits/abonnements sont tous inférieurs à 99 $ et je ne peux pas les réduire. Identique au conseil/développement WooCommerce - malheureusement, les taxes ici en Italie sont élevées et je dois m'en tenir à mon taux horaire.
Donnez-moi quelques jours/semaines. Cela sera bientôt emballé dans un mini-plugin, afin que vous puissiez appliquer la même chose à votre propre boutique WooCommerce.
Je connais votre douleur, mais rappelez-vous que vous avez un accès à vie aux vidéos ainsi qu'un support à vie pour WooCommerce. Si ce n'est toujours pas suffisant, je comprends. Contactez-moi et je verrai si je peux vous aider.