71 行
3.4 KiB
PHP
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>';
|