Title: Critical bug &#8211; Bug critique
Last modified: June 7, 2026

---

# Critical bug – Bug critique

 *  [Jabe](https://wordpress.org/support/users/jabe/)
 * (@jabe)
 * [21 hours, 20 minutes ago](https://wordpress.org/support/topic/bug-critieuq/)
 * Bonjour,
 * Comme je vous l’ai écrit sur votre Slack il y a 4 jours sans réponse, je vous
   écris au sujet d’un bug critique dans votre plugin Stancer for WooCommerce, reproduit
   sur mon site suite à des tentatives de commandes avortées (paiements non finalisés,
   commandes restées en statut “Draft”).
 * **Environnement**
    - Plugin Stancer for WooCommerce version 1.4.3
    - WooCommerce version 10.8.1 |
    - WordPress version 7.0
    - PHP version 8.3.30
 * **Description du problème**
 * Lorsqu’une commande WooCommerce est créée mais que le paiement Stancer n’est 
   pas finalisé (commande en statut Draft, sans payment_id associé), l’ouverture
   de cette commande depuis l’interface d’administration WordPress génère une erreur
   PHP fatale qui rend la page inaccessible.
 * **Erreur exacte dans le log de debug**
 *     ```wp-block-code
       PHP Fatal error: Uncaught Error: Typed property WC_Stancer_Payment::$payment_id must not be accessed before initialization in .../plugins/stancer/includes/class-stancer-abstract-table.php:108
       Stack trace:
       #0 .../plugins/stancer/includes/class-stancer-capture.php(84): WC_Stancer_Abstract_Table->__get()
       #1 .../plugins/stancer/includes/class-stancer.php(70): WC_Stancer_Capture->__construct()
       #2 .../wp-includes/class-wp-hook.php(341): WC_Stancer->call_capture()
       ...
       ```
   
 * **Cause identifiée**
 * La propriété typée `$payment_id` dans `WC_Stancer_Payment` est accédée via `__get()`
   dans `class-stancer-abstract-table.php` (ligne 108) avant d’avoir été initialisée.
   Cela se produit lorsque `WC_Stancer_Capture->__construct()` est appelé depuis`
   WC_Stancer->call_capture()` sur une commande ne disposant d’aucun paiement Stancer
   enregistré.
 * En PHP 8+, accéder à une propriété typée non initialisée lève une `Error` fatale,
   contrairement à PHP 7 qui retournait simplement `null`.
 * **Correction suggérée**
 * Ajouter une vérification d’initialisation avant l’accès à `$payment_id`, par 
   exemple dans `class-stancer-abstract-table.php` :
 *     ```wp-block-code
       // Avant
       return $this->payment_id;
   
       // Après
       return isset($this->payment_id) ? $this->payment_id : null;
       ```
   
 * Ou, de manière équivalente, initialiser la propriété à `null` dans sa déclaration:
 *     ```wp-block-code
       protected ?string $payment_id = null;
       ```
   
 * J’ai remarqué ce bug suite à de potentielles attaques et tentatives de carding.
 * En effet, j’ai vu ça en voyant qu’il y avait plusieurs commandes WooCommerce 
   apparues dans la catégorie “Draft”.
 * Et en cliquant pour voir le détail des commandes ça me génère des erreurs critiques
   et affiche un message comme celui que j’envoie en capture et qui donne par exemple:
   “
   Order #82984 detailsPayment via Stancer. Customer IP: 216.244.66.239There has
   been a critical error on this website. Please check your site admin email inbox
   for instructions. If you continue to have problems, please try the support forums.
   Learn more about troubleshooting WordPress.”
 * Ces commandes ont toutes étés faites à quelques heures d’intervalle avec des 
   adresses IP différentes :
   216.244.66.239(Tukwila Washington United States)104.194.192.137(
   Ashburn Virginia United States)52.70.123.241 (Ashburn Virginia United States)
   85.208.96.210 (Ashburn Virginia United States)85.208.96.198 (Ashburn Virginia
   United States)216.73.216.174 (Columbus Ohio United States)82.38.231.40 (St Helens
   United Kingdom)
 * Ce bug impacte directement l’administration du site : toute commande dans un 
   état incomplet “Draft” (paiement abandonné, timeout, tentative échouée) rend 
   la page de détail de commande inaccessible dans WordPress.
 * Merci de prendre en compte ce rapport et de publier un correctif dans une prochaine
   version du plugin.
 * Cordialement,
 * Jabe.
    -  This topic was modified 21 hours, 20 minutes ago by [Jabe](https://wordpress.org/support/users/jabe/).

You must be [logged in](https://login.wordpress.org/?redirect_to=https%3A%2F%2Fwordpress.org%2Fsupport%2Ftopic%2Fbug-critieuq%2F%3Foutput_format%3Dmd&locale=en_US)
to reply to this topic.

 * ![](https://ps.w.org/stancer/assets/icon.svg?rev=3033689)
 * [Stancer for WooCommerce](https://wordpress.org/plugins/stancer/)
 * [Support Threads](https://wordpress.org/support/plugin/stancer/)
 * [Active Topics](https://wordpress.org/support/plugin/stancer/active/)
 * [Unresolved Topics](https://wordpress.org/support/plugin/stancer/unresolved/)
 * [Reviews](https://wordpress.org/support/plugin/stancer/reviews/)

## Tags

 * [php](https://wordpress.org/support/topic-tag/php/)

 * 0 replies
 * 1 participant
 * Last reply from: [Jabe](https://wordpress.org/support/users/jabe/)
 * Last activity: [21 hours, 20 minutes ago](https://wordpress.org/support/topic/bug-critieuq/)
 * Status: not resolved