文件
freeshop/upgrade-avatar-pay.php
T
2026-08-16 16:52:43 +08:00

71 行
3.4 KiB
PHP

<?php
require __DIR__ . '/includes/init.php';
header('Content-Type: text/html; charset=utf-8');
echo '<!DOCTYPE html><html><head><meta charset="utf-8"><title>升级:头像+支付</title>';
echo '<style>body{font-family:system-ui;max-width:680px;margin:40px auto;padding:0 20px;line-height:1.6}</style></head><body>';
echo '<h1>🔧 升级脚本:头像上传 + 支付系统</h1>';
$pdo = db();
$prefix = tn('');
$errors = 0;
try {
$cols = $pdo->query("SHOW COLUMNS FROM `{$prefix}users` LIKE 'avatar'")->fetchAll();
if (empty($cols)) {
$pdo->exec("ALTER TABLE `{$prefix}users` ADD COLUMN `avatar` VARCHAR(255) DEFAULT '' COMMENT '头像文件路径' AFTER `role`");
echo '<p style="color:green">✅ users 表已添加 <code>avatar</code> 字段</p>';
} else {
echo '<p style="color:
}
$tables = $pdo->query("SHOW TABLES LIKE '{$prefix}pay_logs'")->fetchAll();
if (empty($tables)) {
$pdo->exec("CREATE TABLE `{$prefix}pay_logs` (
`id` INT UNSIGNED NOT NULL AUTO_INCREMENT,
`order_id` VARCHAR(64) NOT NULL COMMENT '商户订单号',
`pay_method` VARCHAR(20) NOT NULL DEFAULT 'alipay',
`amount` DECIMAL(10,2) NOT NULL DEFAULT 0.00,
`trade_no` VARCHAR(64) DEFAULT '',
`status` ENUM('pending','paid','failed','refunded') NOT NULL DEFAULT 'pending',
`raw_response` TEXT DEFAULT NULL,
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
`updated_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `uk_order_method` (`order_id`, `pay_method`),
KEY `idx_status` (`status`),
KEY `idx_trade_no` (`trade_no`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4");
echo '<p style="color:green"> 已创建 <code>pay_logs</code> </p>';
} else {
echo '<p style="color:
}
$paySettings = [
'pay_alipay_enabled' => '0',
'pay_alipay_appid' => '',
'pay_alipay_private_key' => '',
'pay_alipay_public_key' => '',
'pay_alipay_sandbox' => '0',
'pay_wechat_enabled' => '0',
'pay_wechat_mch_id' => '',
'pay_wechat_api_key' => '',
'pay_wechat_appid' => '',
];
foreach ($paySettings as $k => $v) {
$exists = $pdo->prepare("SELECT v FROM `{$prefix}settings` WHERE k=? LIMIT 1");
$exists->execute([$k]);
if (!$exists->fetch()) {
$pdo->prepare("INSERT INTO `{$prefix}settings` (k,v) VALUES (?,?)")->execute([$k, $v]);
}
}
echo '<p style="color:green">✅ 支付配置初始值已检查/写入</p>';
echo '<hr><h2 style="color:green">✅ 升级完成!</h2>';
echo '<p>本文件可安全删除。如需使用支付功能:</p>';
echo '<ol>';
echo '<li>在后台「设置」中配置支付宝 / 微信支付的参数</li>';
echo '<li>将支付回调 URL 设置为:<code>' . h($_SERVER['HTTP_HOST'] . '/pay_notify.php?gateway=alipay</code> (支付宝)或 <code>?gateway=wechat</code>(微信)</li>';
echo '<li>用户可在「用户设置」中上传头像</li>';
echo '</ol>';
echo '<p><strong>建议立即删除此文件:</strong> <code>upgrade-avatar-pay.php</code></p>';
} catch (Exception $e) {
echo '<p style="color:red">❌ 升级失败: ' . h($e->getMessage()) . '</p>';
$errors++;
}
echo '</body></html>';