' . sprintf(esc_html__('B-PAY Bankily nécessite WooCommerce pour fonctionner. Veuillez installer et activer %sWooCommerce%s.', 'bankily-bpay'), '', '') . '

'; } function add_bankily_bpay_gateway($gateways) { $gateways[] = 'WC_Bankily_BPay_Gateway'; return $gateways; } // Créer les tables personnalisées lors de l'activation register_activation_hook(__FILE__, 'bankily_bpay_create_tables'); function bankily_bpay_create_tables() { global $wpdb; $table_name = $wpdb->prefix . 'bankily_transactions'; $charset_collate = $wpdb->get_charset_collate(); $sql = "CREATE TABLE $table_name ( id mediumint(9) NOT NULL AUTO_INCREMENT, order_id bigint(20) NOT NULL, operation_id varchar(100) NOT NULL, transaction_id varchar(100) DEFAULT '', client_phone varchar(20) NOT NULL, amount decimal(10,2) NOT NULL, status varchar(10) DEFAULT 'TA', error_code varchar(10) DEFAULT '', error_message text DEFAULT '', created_at datetime DEFAULT CURRENT_TIMESTAMP, last_checked datetime DEFAULT CURRENT_TIMESTAMP, check_count int(11) DEFAULT 0, PRIMARY KEY (id), UNIQUE KEY operation_id (operation_id), KEY order_id (order_id), KEY status (status), KEY created_at (created_at), KEY status_created (status, created_at) ) $charset_collate;"; require_once(ABSPATH . 'wp-admin/includes/upgrade.php'); dbDelta($sql); // Programmer les tâches cron if (!wp_next_scheduled('bankily_auto_check_transactions')) { wp_schedule_event(time(), 'fifteen_minutes', 'bankily_auto_check_transactions'); } if (!wp_next_scheduled('bankily_daily_report')) { wp_schedule_event(strtotime('tomorrow 8:00'), 'daily', 'bankily_daily_report'); } } // Actions à effectuer lors de l'activation function bankily_bpay_activate() { bankily_bpay_create_tables(); flush_rewrite_rules(); } // Actions à effectuer lors de la désactivation function bankily_bpay_deactivate() { // Nettoyer les données temporaires delete_transient('bankily_bpay_access_token'); delete_transient('bankily_bpay_refresh_token'); // Supprimer les tâches cron wp_clear_scheduled_hook('bankily_auto_check_transactions'); wp_clear_scheduled_hook('bankily_daily_report'); flush_rewrite_rules(); } register_activation_hook(__FILE__, 'bankily_bpay_activate'); register_deactivation_hook(__FILE__, 'bankily_bpay_deactivate'); // Ajouter un intervalle cron personnalisé pour 15 minutes add_filter('cron_schedules', 'bankily_add_cron_interval'); function bankily_add_cron_interval($schedules) { $schedules['fifteen_minutes'] = array( 'interval' => 15 * 60, // 15 minutes en secondes 'display' => __('Toutes les 15 minutes', 'bankily-bpay') ); return $schedules; } // Ajouter un lien vers les paramètres dans la liste des plugins add_filter('plugin_action_links_' . plugin_basename(__FILE__), 'bankily_bpay_action_links'); function bankily_bpay_action_links($links) { $plugin_links = array( '' . __('Paramètres', 'bankily-bpay') . '', ); return array_merge($plugin_links, $links); } // Afficher les détails B-PAY sur la page de commande client add_action('woocommerce_order_details_after_order_table', 'bankily_bpay_order_details'); function bankily_bpay_order_details($order) { if ($order->get_payment_method() == 'bankily_bpay') { global $wpdb; $table_name = $wpdb->prefix . 'bankily_transactions'; $transaction = $wpdb->get_row($wpdb->prepare( "SELECT * FROM $table_name WHERE order_id = %d ORDER BY created_at DESC LIMIT 1", $order->get_id() )); if ($transaction) { echo '

' . __('Détails du paiement B-PAY', 'bankily-bpay') . '

'; echo ''; if ($transaction->transaction_id) { echo ''; } echo ''; echo ''; echo '
' . __('ID Transaction:', 'bankily-bpay') . '' . esc_html($transaction->transaction_id) . '
' . __('ID Opération:', 'bankily-bpay') . '' . esc_html($transaction->operation_id) . '
' . __('Statut:', 'bankily-bpay') . ''; switch ($transaction->status) { case 'TS': echo '✓ ' . __('Confirmé', 'bankily-bpay') . ''; break; case 'TA': echo '⏳ ' . __('En attente', 'bankily-bpay') . ''; break; case 'TF': echo '✗ ' . __('Échoué', 'bankily-bpay') . ''; break; default: echo esc_html($transaction->status); } echo '
'; if ($transaction->status == 'TA') { echo '
'; echo '

' . __('Transaction en attente', 'bankily-bpay') . '

'; echo '

' . __('Votre paiement est en cours de vérification. Vous recevrez une confirmation par SMS une fois le paiement validé.', 'bankily-bpay') . '

'; echo '
'; } } } } ?>