1. Documentation /
  2. Stripe : Correction des erreurs client

Stripe : Correction des erreurs client

Remarque : Il s’agit d’une documentation de niveau développeur, fournie à titre indicatif. Conformément à notre Politique d’assistance (lien disponible uniquement en anglais), nous ne sommes pas en mesure de donner des conseils ou de réviser les bouts de code.

Nettoyage de la base de données après des modifications de compte

↑ Back to top

Chaque fois que les clés de compte Stripe.com (clé API publique et/ou clé API secrète) sont modifiées, un nettoyage de la base de données peut être nécessaire. La passerelle Stripe stocke divers identifiants (client, carte, source, etc.) afin de lier les objets locaux à Stripe, mais ces objets (données client locales) sont spécifiques au compte. Si vous n’effectuez pas de nettoyage, des échecs de validation de paiement pourraient survenir dans votre boutique.

Avant le nettoyage

↑ Back to top

Avant de continuer, contactez Stripe pour vérifier si vos clients et moyens de paiement existants peuvent être transférés vers le nouveau compte.

Bout de code de nettoyage

↑ Back to top
DELETE FROM `wp_usermeta`
WHERE meta_key IN ( '_stripe_customer_id', '_stripe_source_id', '_stripe_card_id' );
DELETE tokenmeta FROM `wp_woocommerce_payment_tokenmeta` tokenmeta
INNER JOIN `wp_woocommerce_payment_tokens` ON `wp_woocommerce_payment_tokens`.`token_id` = tokenmeta.`payment_token_id`
WHERE `wp_woocommerce_payment_tokens`.`gateway_id` = 'stripe';
DELETE FROM `wp_woocommerce_payment_tokens` WHERE gateway_id='stripe';

Bout de code de nettoyage pour les sites WordPress multisite

↑ Back to top

Ce bout de code est similaire, mais il nettoie également les valeurs spécifiques aux sites.

Veuillez utiliser ce bout de code pour chaque site du réseau qui nécessite un nettoyage. Remplacez wp_999_ par le préfixe du site. Remarque : Le site principal du réseau n’utilise pas de numéro dans le préfixe. Utilisez simplement wp_ au lieu de wp_999_.

DELETE FROM `wp_usermeta`
WHERE meta_key IN ( '_stripe_customer_id', '_stripe_source_id', '_stripe_card_id', 'wp_999__stripe_customer_id' );
DELETE tokenmeta FROM `wp_999_woocommerce_payment_tokenmeta` tokenmeta
INNER JOIN `wp_999_woocommerce_payment_tokens` ON `wp_999_woocommerce_payment_tokens`.`token_id` = tokenmeta.`payment_token_id`
WHERE `wp_999_woocommerce_payment_tokens`.`gateway_id` = 'stripe';
DELETE FROM `wp_999_woocommerce_payment_tokens` WHERE gateway_id='stripe';

Conflits entre sites dans un réseau (multisite)

↑ Back to top

Les configurations multisites sont prises en charge par défaut depuis la version 4.3.2 de la passerelle Stripe. Cependant, si la passerelle a été utilisée sur un site unique, qui a ensuite été converti en réseau multisite, vous risquez d’avoir des erreurs No such customer (client introuvable) ou des erreurs avec des cartes enregistrées.

Pour corriger ces erreurs, utilisez le bout de code SQL suivant et assurez-vous de remplacer wp_ (un seul tiret bas) par le préfixe de votre table de base de données :

UPDATE `wp_usermeta`
SET `meta_key` = CONCAT( 'wp_', `meta_key` )
WHERE `meta_key` IN ( '_stripe_customer_id', '_stripe_source_id', '_stripe_card_id' );

Cela garantira que les identifiants client existants du site/blog principal ne sont pas utilisés comme valeurs par défaut pour les sites.