' . esc_html($text ?: 'Submit') . ''; } function wp_nonce_field($a = -1, $n = '_wpnonce', $r = true, $e = true) { if ($e) echo ''; } function wp_create_nonce($a = -1) { return 'stubnonce' . md5((string) $a); } function admin_url($p = '') { return 'https://example.test/wp-admin/' . $p; } function add_query_arg($k, $v = null, $u = null) { if (is_array($k)) { $u = $v ?: ''; $q = http_build_query($k); return $u . (str_contains($u, '?') ? '&' : '?') . $q; } return ($u ?: '') . (str_contains(($u ?: ''), '?') ? '&' : '?') . $k . '=' . $v; } function wp_json_encode($v, $f = 0) { return json_encode($v, $f); } function current_user_can($c) { return true; } function wp_die($m) { throw new Exception('wp_die: ' . $m); } function get_userdata($id) { return $id > 0 ? (object) ['display_name' => 'User' . $id] : null; } function get_the_title($id) { return 'Product' . $id; } function is_admin() { return true; } } namespace AKSRT\Payment { class AfterSaleService { public const STATUS_PENDING = 'pending'; public const STATUS_PROCESSING = 'processing'; public const STATUS_REJECTED = 'rejected'; public const STATUS_CANCELLED = 'cancelled'; public const STATUS_COMPLETED = 'completed'; private static $i; public static function get_instance(): self { return self::$i ?: self::$i = new self(); } public function admin_list(array $args = []): array { return [ ['id' => 5, 'order_number' => 'ORD100', 'user_id' => 3, 'reason' => 'legacy-reason', 'apply_form' => ['reason_label' => '商品与描述不符', 'materials' => [['label' => '联系方式', 'value' => 'wx-abc']], 'description' => '说明文字'], 'images' => ['https://example.test/img1.png', 'https://example.test/img2.png'], 'refund_amount' => '12.50', 'status' => 'pending', 'admin_note' => '', 'gateway_result' => '', 'created_at' => '2026-10-01 10:00:00'], ['id' => 6, 'order_number' => 'ORD101', 'user_id' => 4, 'reason' => 'r2', 'apply_form' => null, 'images' => [], 'refund_amount' => '8.00', 'status' => 'processing', 'admin_note' => '已有备注', 'gateway_result' => json_encode(['status' => 'manual', 'message' => '线下退款']), 'created_at' => '2026-10-02 11:00:00'], ]; } } class OrderRepository { private static $i; public static function get_instance(): self { return self::$i ?: self::$i = new self(); } public function get($n): array { return ['order_number' => $n, 'user_id' => 3, 'product_id' => 9, 'product_type' => 'reading', 'meta_payload' => [], 'currency' => 'CNY', 'status' => 'paid']; } } class UserOrders { private static $i; public static function get_instance(): self { return self::$i ?: self::$i = new self(); } public function decorate_order_view(array $o, bool $x): array { return ['product_name' => '测试商品']; } } } namespace AKSRT\Core { class DomainModel { public static function resolve_order_product_type(string $t, array $m): string { return $t; } public static function order_product_type_labels(): array { return ['reading' => '付费阅读']; } } } namespace AKSRT\Settings { class PaymentRuntime { public static function get_after_sale_settings(): array { return ['enabled' => true, 'time_limit' => 7, 'reasons' => [['name' => '原因A']], 'materials' => ['截图']]; } } } namespace { require 'C:/Users/Xing/Desktop/AKSRT/AKSRT-theme/src/Admin/Native/PayOrders.php'; $_GET = ['page' => 'aksrt_after_sales']; $pay = AKSRT\Admin\Native\PayOrders::get_instance(); $ref = new ReflectionMethod($pay, 'render_after_sales_page'); $ref->setAccessible(true); ob_start(); $ref->invoke($pay); $html = ob_get_clean(); file_put_contents(__DIR__ . '/after-sales-rendered.html', $html); echo 'bytes=' . strlen($html) . "\n"; }