/**
* Restaure la transaction dans le panier WooCommerce
* Endpoint: ?miassar_restore=1&transaction=XXX&token=YYY
*/
public function restore_transaction_to_cart() {
if (!isset($_GET['miassar_restore']) || !isset($_GET['transaction']) || !isset($_GET['token'])) {
return;
}
// Vérifier WooCommerce
if (!$this->wc_ready()) {
wp_die('Le système de paiement n\'est pas disponible.');
}
$transaction_id = sanitize_text_field($_GET['transaction']);
$token = sanitize_text_field($_GET['token']);
global $wpdb;
$transaction = $wpdb->get_row($wpdb->prepare(
"SELECT * FROM {$this->table_name} WHERE transaction_id = %s",
$transaction_id
));
if (!$transaction) {
wp_die('Transaction introuvable.');
}
// Vérifier le token
$salt = defined('AUTH_SALT') ? AUTH_SALT : 'miassar_default_salt';
$expected_token = hash('sha256', $transaction_id . $transaction->security_code . $salt . date('Y-m-d'));
if (!hash_equals($expected_token, $token)) {
wp_die('Lien de paiement invalide.');
}
// Vérifier le statut
if ($transaction->status === 'paid') {
wp_die('Cette transaction a déjà été réglée.');
}
// Récupérer ou créer le produit
$product_id = $transaction->product_id;
if (!$product_id || !wc_get_product($product_id)) {
// Créer un nouveau produit
$product = new WC_Product_Simple();
$product->set_name($transaction->product_name . ' - Miassar');
$product->set_price($transaction->total_amount);
$product->set_regular_price($transaction->total_amount);
$product->set_virtual(true);
$product->set_catalog_visibility('hidden');
$product->set_status('publish');
$product->update_meta_data('_miassar_transaction', $transaction_id);
$product_id = $product->save();
// Mettre à jour la transaction
$wpdb->update(
$this->table_name,
array('product_id' => $product_id),
array('transaction_id' => $transaction_id)
);
}
// Restaurer le panier
WC()->cart->empty_cart();
WC()->cart->add_to_cart($product_id, 1);
// Rediriger vers le checkout
wp_safe_redirect(wc_get_checkout_url());
exit;
}
Warning: Cannot modify header information - headers already sent by (output started at /var/www/html/wordpress/wp-content/plugins/miassar-payment-system/includes/class-transaction.php:909) in /var/www/html/wordpress/wp-includes/pluggable.php on line 1535
Warning: Cannot modify header information - headers already sent by (output started at /var/www/html/wordpress/wp-content/plugins/miassar-payment-system/includes/class-transaction.php:909) in /var/www/html/wordpress/wp-includes/pluggable.php on line 1538