is_preauth; $success_status = str_replace( 'wc-', '', (string) $gateway->status_on_success ); // Only show on ABank orders if ( $order->get_payment_method() !== 'abank_pay_gateway' ) { return; } // If preauth or not in allowed statuses — don't show refund button if ( $is_preauth || ! in_array( $order->get_status(), array( 'on-hold', 'completed', $success_status ), true ) ) { return; } $order_id = (int) $order->get_id(); $total = (string) wc_format_decimal( $order->get_total(), 2 ); // Ensure admin assets are enqueued (if they were registered elsewhere this will just enqueue) $ver = defined('ABANK_PAY_VERSION') ? ABANK_PAY_VERSION : '2.0.0'; $base = defined('ABANK_PAY_PATH') ? ABANK_PAY_PATH : plugin_dir_url( dirname( __FILE__, 2 ) ) . '/'; if ( ! wp_script_is( 'abankpay-admin-js', 'registered' ) ) { wp_register_script( 'abankpay-admin-js', $base . 'assets/js/admin.js', array('jquery'), $ver, true ); } if ( ! wp_style_is( 'abankpay-admin-css', 'registered' ) ) { wp_register_style( 'abankpay-admin-css', $base . 'assets/css/admin.css', array(), $ver ); } // Enqueue assets for the current admin page (they will only be printed where admin_enqueue_scripts runs) wp_enqueue_script( 'abankpay-admin-js' ); wp_enqueue_style( 'abankpay-admin-css' ); // Localize per-order payload for refund modal / JS $refund_nonce = wp_create_nonce( 'abank_pay_refund' ); $payload = array( 'nonce' => $refund_nonce, 'order_id' => $order_id, 'total' => $total, 'i18n' => array( 'refund' => esc_html__( 'Відшкодувати', 'abank-pay' ), 'via' => esc_html__( 'через ABank Pay', 'abank-pay' ), 'checking' => esc_html__( 'Виконується...', 'abank-pay' ), 'confirm_title' => esc_html__( 'Підтвердити', 'abank-pay' ), 'cancel_title' => esc_html__( 'Скасувати', 'abank-pay' ), 'error' => esc_html__( 'Сталася помилка при запиті.', 'abank-pay' ), 'currency' => esc_html__( '₴', 'abank-pay' ), ), ); // Use a unique object per order to avoid overwriting if multiple orders shown on the page (rare on order edit screen) wp_localize_script( 'abankpay-admin-js', 'AbankPayRefundData_' . $order_id, $payload ); // Output the visible HTML (button + modal container). No inline