ypsdf1
|
293d7b283c
|
修复:主脚本注释含字面量script闭合标签导致页面截断
|
2026-10-01 16:08:39 +08:00 |
|
ypsdf1
|
8fa7eb5c95
|
用户端 player.php 接入人机验证挂件:三个登录入口统一挂载并提交前取 token
|
2026-10-01 15:39:10 +08:00 |
|
ypsdf1
|
1a221330dc
|
config.php 验证码段改为单开关二选一:CF/VA 取值与行内说明写清,全站厂商统一由 CAPTCHA_PROVIDER 决定,密钥仍留 captcha_keys.php
|
2026-10-01 15:11:31 +08:00 |
|
ypsdf1
|
b138171a7c
|
修复人机验证挂件:CF 挂件自行加载 Turnstile SDK,解决后台「验证组件加载失败」
|
2026-10-01 14:25:51 +08:00 |
|
ypsdf1
|
ea5d476825
|
补上admin_login与api/admin遗漏的captcha_guard require(此前调用cgWidgetHtml/cgEnforce但未引入库,线上报undefined function)
|
2026-10-01 14:03:58 +08:00 |
|
ypsdf1
|
17d53c40a0
|
三大场景接入人机验证:新增captcha_guard.php统一校验库与CAPTCHA_PROVIDER配置,管理员登录/用户后台账密登录/正版验证浏览器提交三处接入;captcha_keys.php清空为可入库的空模板并加填写说明,部署脚本排除密钥文件防覆盖线上真值
|
2026-10-01 13:38:29 +08:00 |
|
ypsdf1
|
4f498a80c6
|
fix: 验证码测试页切VAPTCHA V4(V3域名全部NXDOMAIN):SDK换c4.vaptcha.com/src/v4.js、服务端改v41官方verify+本地HMAC双方式、修PHP8.5 curl_close弃用污染JSON;.gitignore排除captcha_keys.php
|
2026-10-01 11:25:01 +08:00 |
|
ypsdf1
|
5400856785
|
fix: 2FA取数参数名定为t(WAF复测矩阵:token+≥32位hex被拦404,t=全长度可过,POST body可过)
|
2026-10-01 10:57:32 +08:00 |
|
ypsdf1
|
2e4ddcbaea
|
fix: 2FA二维码token回退裸hex64,查询参数名保留token(WAF矩阵验证v1_前缀与t=长hex被拦)
|
2026-10-01 10:46:34 +08:00 |
|
ypsdf1
|
1eb898adea
|
2FA二维码token改v1_前缀+查询参数名t换token:规避WAF对32位以上纯hex查询串的404拦截
|
2026-10-01 10:37:59 +08:00 |
|
ypsdf1
|
b86d29b34a
|
新增验证码接口测试页captcha_test.php:上下布局同时接入CF Turnstile与VAPTCHA(v3),密钥四级回退(captcha_keys/config/URL/robots.json),内置siteverify与vaptcha服务端校验代理,暂不接入登录流程
|
2026-10-01 10:24:04 +08:00 |
|
ypsdf1
|
b5b252d1b7
|
新增玩家2FA二维码展示端:api/twofa.php(secret推送10分钟载荷+token取回)、twofa_qr.php(内联二维码库纯展示页)——2FA校验全在Java,PHP只做显示器
|
2026-10-01 10:17:29 +08:00 |
|
ypsdf1
|
eb741beeb4
|
更新.gitignore以屏蔽密钥文件
|
2026-10-01 10:06:19 +08:00 |
|
ypsdf1
|
186e670400
|
SN管理:修正顶层签发入口里被转义成字面量的 emoji
|
2026-09-30 17:41:53 +08:00 |
|
ypsdf1
|
43fd8e2891
|
SN管理:顶层办理签发入口(玩家ID+设备类型直发),详情页旧签发按钮移除
|
2026-09-30 17:32:08 +08:00 |
|
ypsdf1
|
b6983f99e4
|
新增第四层安全防护:全局限流20次/分钟/IP,白名单与带secret的内部调用豁免,超限挂起连接不返回数据
|
2026-09-30 15:56:16 +08:00 |
|
ypsdf1
|
4c2e075667
|
配置页防回车误触修复:回车不再命中首个提交按钮「重新生成令牌」
|
2026-09-30 13:30:48 +08:00 |
|
ypsdf1
|
27da2b5c05
|
SN日志动作列中文化:admin.php与player.php新增SN_ACTION_CN映射,覆盖issue_admin/cancel_force等全部动作值
|
2026-09-30 12:31:17 +08:00 |
|
ypsdf1
|
a97f9274cc
|
管理端 issue 命令 reason 文案修正:办理签发单独文案,不再误标为管理员强制执行
|
2026-09-30 12:20:11 +08:00 |
|
ypsdf1
|
f033e71095
|
SN管理端新增 issue 办理签发命令:两条件硬校验并分别提示,isForce 固定为 0;管理端详情页加入办理签发按钮与确认文案
|
2026-09-30 12:11:49 +08:00 |
|
ypsdf1
|
51e418ac16
|
需求4护栏:重置访问密钥不再关闭二次验证——security.php新增2FA快照/语义指纹/回滚/写后比对四函数,rotate_token与save_whitelist走最小写入+护栏,误关即回滚报错
|
2026-09-30 11:19:00 +08:00 |
|
ypsdf1
|
b7b2647ef1
|
需求3脱敏:config.php改为占位符分发(敏感信息不入库),清除admin.php公网前端13处与land_api.php的硬编码SECRET_KEY,改为服务端注入/常量比对
|
2026-09-30 11:18:41 +08:00 |
|
ypsdf1
|
a46737d64b
|
SN注销冷静期分流:管理员强制注销跳过1小时冷静期,代办注销保持三条件门槛+1小时冷静
|
2026-09-29 23:57:27 +08:00 |
|
ypsdf1
|
c46c9ebdfe
|
紧急加固三层:admin.php 入口令牌门禁 + 2FA 扫码绑定与精确诊断
第三层(新增,config.php 的 SEC_ACCESS_TOKEN):
- 只有 admin.php?token=<令牌> 才放行,缺/错令牌一律返回 nginx 原生 404
(与"文件真的不存在"逐字节一致,探测者无从判断),令牌检查置于白名单之前
- 登录接口在密码校验通过后才下发 token,2FA 通过与收银台跳转由服务端补拼
- 入口页加 Referrer-Policy: no-referrer,防令牌经外链 Referer 泄露
- 配置页展示后台唯一入口地址,支持一键重新生成令牌
第一层修复(2FA 验证码"无效"):
- secTotpVerify 容错窗口 ±30 秒扩到 ±90 秒
- 新增 secTotpDiagnose:失败时区分"密钥没对上"与"设备时钟偏移多少秒"并给出处置指引
- Base32 解码兼容空格/连字符与 0/1/8/9 手误,避免密钥被静默截短
- 验证页倒计时与服务器时间显示改用服务端时钟基准
- 密钥生成改幂等,"重新生成"二次确认,防止已扫码密钥被误作废
第二层(二维码):
- admin_2fa_setup.php 内联 qrcode-generator(MIT) 生成 otpauth 二维码,离线可用
- 后台侧边栏新增"安全配置"入口;admin_2fa_setup.php?boot= 在白名单 IP 下同样生效
已通过线上端到端验证 22 项 + 二维码 OpenCV 往返解码校验。
|
2026-09-29 22:55:46 +08:00 |
|
ypsdf1
|
fd03189f31
|
SN三条件门槛:报失/补办/注销统一前置校验与最小化提示(不透露未达标项),web_item_sn 新增 detached_at/own_chest,管理端详情展示逐条判定并拆分强制注销/代办注销
|
2026-09-29 20:22:20 +08:00 |
|
ypsdf1
|
52e07ec9de
|
fix: SN回执幂等防止重复补发,后台命令下发后轮询回执直到出结果
|
2026-09-29 18:03:32 +08:00 |
|
ypsdf1
|
345e1e9a9b
|
fix: SN目录快照不再把web_item_sn.cancel_time清零,保留PHP端已写入的注销时间
|
2026-09-29 16:48:51 +08:00 |
|
ypsdf1
|
045d9f60b8
|
SN接口:管理员命令带 is_force 强制标记(Java 侧仅本次绕过冷静期),注销前增加位置前置检查拒绝箱内/他人手上物品,命令回执按执行结果更新状态
|
2026-09-29 13:38:35 +08:00 |
|
ypsdf1
|
18bd1e9b19
|
feat: SN防伪后端 api/sn.php、8张SN数据表与玩家端/管理端SN页面
|
2026-09-29 11:16:32 +08:00 |
|
ypsdf1
|
4db131082c
|
fix: 永久封禁玩家禁止登录Web后台、正版验证粘贴页响应异常时回查真实状态
- core.php 新增 playerWebBanReason():查 web_player_bans 名字封禁(永久/未过期),expire_time 兼容Java推送的毫秒单位;validateWebAccess 接入,商城/CDK/余额/token校验一律拒绝
- api/sync.php 四个登录入口全部拦截:validate_weblogin_token、web_login_request、send_email_code、verify_email_code
- api/minecraft_auth.php:success/error 清空输出缓冲保证纯JSON;新增 action=status 会话真实状态查询;粘贴页提交响应异常时回查状态,已验证则如实提示通过,不再误报"服务器响应异常"
|
2026-09-28 00:03:07 +08:00 |
|
ypsdf1
|
eaadc0bd64
|
chore: gitignore忽略本地开发文档《代码关联关系.md》
|
2026-09-27 21:44:51 +08:00 |
|
ypsdf1
|
f2b87325e1
|
feat: 封禁IP同步Web黑名单(须持游戏内/web token)、清空队列联动清理pending登录请求
|
2026-09-27 21:23:31 +08:00 |
|
ypsdf1
|
6a74dfee91
|
修复单件附魔书结算时 web_transactions 唯一约束冲突
|
2026-07-21 16:43:18 +08:00 |
|
ypsdf1
|
d92f1f47a9
|
安全加固: .gitignore添加deploy_*.py排除规则,移除deploy_php_only.py、sync.php.bak、debug_online.php的git跟踪
|
2026-07-20 13:56:59 +08:00 |
|
ypsdf1
|
c3d9c0925d
|
修复4个问题: 用户组购买确认弹窗、在线曲线清理、高频出售缓冲、每小时活跃数据
|
2026-07-20 13:18:58 +08:00 |
|
ypsdf1
|
312f40c94a
|
修复活动过期后仍走活动价格的bug:前端必须校验discount_active字段
|
2026-07-17 23:32:05 +08:00 |
|
ypsdf1
|
0098efda3f
|
fix: 限时折扣过期时间改为当天0:00即过期
|
2026-07-17 17:17:59 +08:00 |
|
ypsdf1
|
1d5f500a28
|
fix: 限时折扣过期逻辑修复 + Minecraft OAuth功能改进
|
2026-07-17 16:51:38 +08:00 |
|
ypsdf1
|
ff83406013
|
minecraft_auth.php: 改用公共客户端ID实现OAuth,新增verify_code和paste_code_page端点
|
2026-07-17 14:02:38 +08:00 |
|
ypsdf1
|
d539cc10bf
|
改用Microsoft Graph User.Read scope(不依赖Xbox Live API权限)
|
2026-07-17 11:41:00 +08:00 |
|
ypsdf1
|
e30c37ef64
|
修改OAuth scope为XboxLive.signin
|
2026-07-17 11:36:20 +08:00 |
|
ypsdf1
|
51aaedc2b3
|
修复OAuth error回调路由:invalid_scope等错误也能正确显示
|
2026-07-17 11:34:48 +08:00 |
|
ypsdf1
|
b7c83903ca
|
修复Microsoft OAuth回调路由:自动检测code+state参数路由到callback
|
2026-07-17 11:15:08 +08:00 |
|
ypsdf1
|
65fc468ce1
|
新增Microsoft OAuth正版验证API
1. 新增minecraft_auth.php
- 完整的Microsoft OAuth流程
- 支持create_session/check_session/callback/verify_premium
- 验证状态持久化到SQLite
2. 配置项在pay_secrets.php中(gitignored,手工FTP上传)
|
2026-07-17 10:23:07 +08:00 |
|
ypsdf1
|
ace705682c
|
新增支付邮件通知+玩家订单查询功能
1. 支付成功后自动发送付款凭据邮件(仅绑定邮箱的玩家)
- handleNotify回调 + queryOrder补单两条路径均触发
- 邮件包含订单号、商品、金额、到账债券、支付时间
- 异步静默发送,不影响主流程
2. 玩家端新增「我的订单」页面
- 后端新增my_orders action查询pay_orders表
- 前端展示订单列表(状态标签、金额、债券、时间)
- 支持刷新按钮
|
2026-07-16 23:31:34 +08:00 |
|
ypsdf1
|
b90eeb2bcd
|
更新MySQL连接信息:平台重建后数据库凭据变更
|
2026-07-16 22:22:27 +08:00 |
|
ypsdf1
|
7e3af6d7d7
|
添加折扣价格硬锁规则:优惠后价格必须小于原价,且不低于0.01元;售价低于0.01元的商品不支持折扣
|
2026-07-16 19:02:36 +08:00 |
|
ypsdf1
|
f3919a8715
|
实现折扣价格功能:数据库表、后端API、前端界面完整支持折扣价格字段
|
2026-07-16 18:33:21 +08:00 |
|
ypsdf1
|
00da16abb6
|
订正售罄≠下架:售罄商品仍展示仅禁止购买,仅下架(is_active=0)才隐藏;前端售罄按钮置灰
|
2026-07-16 17:38:01 +08:00 |
|
ypsdf1
|
5fcecdaefd
|
彻底修复库存0变-1:库存框改text+严格校验(空=无限,0=售罄,非法报错不再静默转-1)
|
2026-07-16 17:18:49 +08:00 |
|
ypsdf1
|
e2808276c0
|
修复库存=0误转为-1的bug + 盲盒显示??及随机消费语录
|
2026-07-16 16:48:31 +08:00 |
|
ypsdf1
|
a8303ba772
|
修复pay.php充值商品500错误:内联parseExpireDate函数(原函数仅在recharge_orders_api.php中定义)
|
2026-07-16 16:18:26 +08:00 |
|
ypsdf1
|
de589d2683
|
实现前端动态加载充值商品功能:从后端shop_configs表读取商品,支持选择商品支付
|
2026-07-16 15:33:27 +08:00 |
|
ypsdf1
|
433735d595
|
新增gitignore:忽略调试文件diag_db_content.php
|
2026-07-16 15:08:19 +08:00 |
|
ypsdf1
|
304bd8f9ef
|
修复充值商店配置500错误:getParam参数不匹配+前端防重复提交
|
2026-07-16 15:01:33 +08:00 |
|
ypsdf1
|
6da7f58281
|
新增充值商店配置管理功能:库存、临时优惠、售价、债券范围、上下架
|
2026-07-16 14:39:44 +08:00 |
|
ypsdf1
|
95630c7609
|
修复数据库分离: pay_orders→orders.db + web_transactions→web.db,双库不再混用
|
2026-07-16 14:03:50 +08:00 |
|
ypsdf1
|
61bc4672a9
|
修复支付锁定: 支付成功后恢复按钮允许发起新订单
|
2026-07-16 13:30:57 +08:00 |
|
ypsdf1
|
4afc2470b0
|
修复对账页面空白: 前端d.orders改为d.data.orders(success()包装格式不匹配)
|
2026-07-16 13:14:49 +08:00 |
|
ypsdf1
|
07689f235b
|
修复对账页面空白: pay_orders迁移到orders.db独立库+自动迁移逻辑
|
2026-07-16 12:36:27 +08:00 |
|
ypsdf1
|
e0bb61f23a
|
加固MySQL凭据: 默认值硬编码+全局变量显式设置
|
2026-07-16 12:22:10 +08:00 |
|
ypsdf1
|
ea20701db5
|
修复表名前缀: 添加global声明确保$PLATFORM_DB_PREFIX在函数内可用
|
2026-07-16 12:18:56 +08:00 |
|
ypsdf1
|
19d0cf1618
|
修复SQL语法错误: pay_order是MySQL保留字,加反引号
|
2026-07-16 12:12:48 +08:00 |
|
ypsdf1
|
4781996f08
|
修复MySQL连接: poller_online.php直接用常量替代全局变量
|
2026-07-16 12:04:59 +08:00 |
|
ypsdf1
|
d9a3a6eb33
|
修复500错误: 重命名getPlatformDB避免与poller_online.php冲突
|
2026-07-16 11:51:59 +08:00 |
|
ypsdf1
|
510db12216
|
加固对账输出: 清空所有ob+try-catch+确保返回JSON
|
2026-07-16 11:47:21 +08:00 |
|
ypsdf1
|
3893d22aef
|
修复对账JSON解析: 包含poller前开启输出缓冲捕获非预期输出
|
2026-07-16 11:42:29 +08:00 |
|
ypsdf1
|
43cb042bf0
|
修复MySQL连接: 集中管理凭据,常量未定义时用默认值兜底
|
2026-07-16 11:28:05 +08:00 |
|
ypsdf1
|
bed190ca8d
|
修复: 订单不存在问题-平台MySQL直查+同步机制+管理后台手动同步
- queryOrder: 本地订单不存在时直查平台MySQL,找到则自动同步到本地
- handleNotify: 回调找不到本地订单时从平台MySQL补建
- checkPlatformOrderStatus: 超时3s→10s,返回更多字段(trade_no/money/player)
- recharge_orders_api: 新增sync_platform action,管理员手动从平台同步全部已支付订单
- admin.php: 充值对账页新增「从平台同步」按钮
- 解决: 游戏已发钱但前端/后台显示订单不存在的问题
关闭 #1069 #1070
|
2026-07-15 21:58:30 +08:00 |
|
ypsdf1
|
9c50e58e7d
|
修复pay_redirect: submit_params合并到INSERT+详细日志
- createOrder: submit_params直接写入INSERT语句,消除INSERT/UPDATE分离导致的空参数
- handlePayRedirect: 区分'订单不存在'和'submit_params为空'两种错误+debugLog
- 根因: INSERT不含submit_params,后续UPDATE若失败则订单存在但参数为空
关闭 #1068
|
2026-07-15 21:15:50 +08:00 |
|
ypsdf1
|
767a9892f7
|
修复: query_order直查平台MySQL+poller详细日志
- pay.php: query_order直接查平台MySQL,不依赖poller补单
- poller_online.php: MySQL连接超时增加到10秒+详细耗时日志
- 解决: 支付成功后前端按钮不锁定+游戏无回调
|
2026-07-15 20:24:47 +08:00 |
|
ypsdf1
|
cb949f5b16
|
修复支付系统核心问题v2\n\n- poller_online.php: 添加全局异常捕获,防止500错误\n- pay.php: queryOrder返回created_at,syncPoller action占位\n- player.php: 续支付检测添加5分钟过期检查\n- 解决:\n 1. Java轮询500错误\n 2. 订单超时5分钟\n 3. 前端过期订单自动清除\n 4. 支付成功后按钮锁定
|
2026-07-15 19:48:08 +08:00 |
|
ypsdf1
|
1cd8415516
|
修复支付系统核心问题
- pay.php: 超时时间从30分钟改为5分钟
- poller_online.php: 修复debugLog未定义变量+保留输出缓冲区
- recharge_orders_api.php: 修复对账结果JSON双重包装
- player.php: 支付成功后锁定按钮+续支付检测处理已支付订单
解决:
1. 订单超时改为5分钟
2. Java轮询500错误(debugLog变量未定义)
3. 对账结果显示undefined
4. 支付成功后按钮状态修复
|
2026-07-15 19:23:51 +08:00 |
|
ypsdf1
|
8f54e3ffc6
|
修复: 订单对账页合并到后台+防重复支付超时+玻璃模态弹窗
- pay.php: createOrder添加30分钟过期检测+清理陈旧created订单
- admin.php: 新增充值对账标签页(内嵌)+毛玻璃详情弹窗
- admin.php: 替换所有confirm/alert为glassConfirm/glassAlert
- recharge_orders.php: 改为跳转admin.php#recharge_orders
- 移除独立页链接,改为go('recharge_orders')
关闭 #1061 #1062 #1063
|
2026-07-15 18:56:52 +08:00 |
|
ypsdf1
|
449976478e
|
充值对账页面+防重复支付+高频补单+轮询器改进
- recharge_orders.php + recharge_orders_api.php: 管理员充值订单对账页面
- admin.php 侧边栏添加充值对账入口
- pay.php: 创建订单时检测已有未支付订单(复用),防重复支付
- player.php: 续支付检测+支付成功后清除本地订单+恢复按钮
- poller_online.php + pay.php: 添加web_transactions唯一索引
- .gitignore: 排除密钥.md
关闭 #1056 #1057 #1055 #1060 部分
|
2026-07-15 18:00:11 +08:00 |
|
ypsdf1
|
3a53ec5fdc
|
queryOrder 自动触发 pay_poller 补单(非阻塞 curl 3秒超时)
|
2026-07-15 14:56:28 +08:00 |
|
ypsdf1
|
8c857b4715
|
还原PAY_NOTIFY_URL为域名(直连IP导致404),回调靠poller补单
|
2026-07-15 14:51:17 +08:00 |
|
ypsdf1
|
ab762ad3a9
|
修复支付回调:排除action参数导致签名验证失败 + 详细日志 + 直连IP绕CF
- verifyNotifySign 排除 action 参数(平台签名不含URL路由参数,多出 action=xxx 导致 MD5 不匹配)
- PAY_NOTIFY_URL 改 http://43.153.203.46(同服务器回调走 Cloudflare 被 WAF 拦截 403)
- handleNotify/verifyNotifySign 增加详细 debugLog(请求方法、remote_addr、验签过程)
- 额外创建 pay_poller.php(直接读平台MySQL轮询已支付订单,绕过HTTP回调)
|
2026-07-15 14:40:38 +08:00 |
|
ypsdf1
|
d0b9e8a92d
|
修复在线充值:私钥损坏无法自验,切回MD5签名(平台keytype=0允许)\n\n- 用户新私钥经诊断无法openssl_verify自签自验(self-verify=0),密钥数据损坏\n- PAY_SIGN_TYPE切回MD5,MD5签名已验证通过平台验签并成功创建订单\n- 通知回调仍用RSA验签(平台公钥验平台私钥签名,平台密钥有效)
|
2026-07-15 13:21:58 +08:00 |
|
ypsdf1
|
deabd1de98
|
修复在线充值:切换RSA签名+本地中转页POST提交,补齐submit_params列与web_transactions表兜底
- PAY_SIGN_TYPE 切回 RSA(新商户私钥已配对平台商户公钥)
- create_order 签名后落库 submit_params,pay_redirect 自动 POST 到网关(规避GET下 notify_url 内 & 被截断)
- ensurePayOrdersTable 用 PRAGMA 探测并 ALTER 补齐 submit_params 列(兼容旧表)
- handleNotify 新增 ensureWebTransactionsTable 幂等兜底,避免新部署缺少流水表导致回调 fail
- 仅改动 api/pay.php,密钥文件不进版本库
|
2026-07-15 11:35:52 +08:00 |
|
ypsdf1
|
8d151d865c
|
fix(pay): 移除密钥加载对本地txt文件的引用,仅使用pay_secrets.php\n\n- loadPayKeys() 不再读取「密钥文件_git拉黑.txt」,避免服务器上存在旧txt时被误用\n- 删除 parsePayKeyFile() 函数及相关txt路径探测逻辑\n- 同步修正 pay_secrets.php 注释,明确服务器端仅认本文件\n- 本地txt文件仅作人工本地记录,严禁代码引用
|
2026-07-15 00:56:04 +08:00 |
|
ypsdf1
|
a4d6a5d487
|
revert(pay): 恢复排除sign_type字段(彩虹易支付标准签名规则)\n\n- 测试包含sign_type后仍失败,改回排除sign_type(文档明确要求)\n- 密钥更新:商户公钥已更新为与新私钥匹配\n- 诊断结果:商户私钥与商户公钥匹配,但与平台公钥不匹配\n- 用户需在支付平台后台核对公钥
|
2026-07-15 00:26:42 +08:00 |
|
ypsdf1
|
efcc0be26a
|
fix(pay): 尝试在签名中包含sign_type字段\n\n- 彩虹易支付签名规则可能要求包含sign_type字段\n- 修改buildSign函数:只跳过sign字段,保留sign_type\n- 此为诊断性修改,若仍失败需改回排除sign_type
|
2026-07-15 00:17:44 +08:00 |
|
ypsdf1
|
8ae0fe9b7d
|
revert(pay): 恢复SHA256签名算法(彩虹易支付V2标准)\n\n- 测试SHA1算法后仍失败,改回SHA256(文档明确V2使用SHA256WithRSA)\n- 诊断脚本证实:商户私钥与商户公钥不是一对,导致所有签名方式验签失败\n- 根本问题:密钥不匹配,需用户核对支付平台后台公钥
|
2026-07-15 00:11:38 +08:00 |
|
ypsdf1
|
af5f31c87e
|
fix(pay): 尝试将RSA签名算法从SHA256改为SHA1以匹配彩虹易支付平台\n\n- 彩虹易支付V2接口可能使用SHA1而非SHA256签名算法\n- 用户反馈:用Unix时间戳RSA签名校验失败,用ISO 8601格式报时间戳错误\n- 此为诊断性修改,若仍失败需改回SHA256并检查其他参数
|
2026-07-15 00:02:38 +08:00 |
|
ypsdf1
|
7878c07a22
|
fix(pay): 修正 timestamp 为10位Unix时间戳(秒)以符合平台接口要求\n\n- 平台要求 timestamp 为10位数Unix时间戳(单位秒),而非ISO 8601格式\n- 改回 (string)time() 生成10位秒级时间戳\n- 签名规则不变:参数按ASCII升序、排除sign/sign_type/空值,RSA-SHA256签名\n- 此前ISO 8601格式导致平台报'时间戳字段不正确,请检查服务器时间'
|
2026-07-14 23:51:06 +08:00 |
|
ypsdf1
|
2a6c6edad2
|
fix(pay): 修正 timestamp 为 ISO 8601 格式以符合彩虹易支付 V2 接口签名规范\n\n- 原 Unix 时间戳字符串改为 date('c') 生成的 ISO 8601 格式(如 2026-07-14T23:27:54+08:00),与平台文档示例一致\n- 签名规则未变:参数按 ASCII 升序、排除 sign/sign_type/空值,RSA-SHA256 签名\n- 若平台仍校验失败,需核对商户私钥与平台后台公钥是否匹配
|
2026-07-14 23:33:00 +08:00 |
|
ypsdf1
|
7fd559531c
|
Merge branch 'php-wip' into php
# Conflicts:
# .gitignore
# api/pay.php
# api/sync.php
|
2026-07-14 23:18:44 +08:00 |
|
ypsdf1
|
cb2f68cfd8
|
fix(pay): 修复商户私钥 PKCS#1/PKCS#8 头不匹配导致的 RSA 签名失败
- wrapPem 对私钥按 DER 结构(version 之后紧跟 INTEGER 0x02 为 PKCS#1,SEQUENCE 0x30 为 PKCS#8)自动选择 PEM 头,不再一概用 PKCS#8 头
- 新增 opensslLoadKey 容错加载器:首次加载失败后自动在 RSA PRIVATE KEY 与 PRIVATE KEY 头之间切换重试,彻底规避头格式不匹配引发的签名/验签失败
- 该路径为支付关键链路,签名失败会导致 create_order 直接 500,必须健壮
|
2026-07-14 23:17:34 +08:00 |
|
ypsdf1
|
57124cab5c
|
fix(pay): 修复 create_order 返回 HTML 导致前端 JSON 解析失败
根因:PHP 8.0+ 中 openssl_free_key() 已弃用,调用会触发弃用警告。
服务端若 html_errors=On,该警告以 <br> 等 HTML 形式输出,污染 JSON 响应,
前端 res.json() 报 'Unexpected token <'。
修复:
- buildSign / verifyNotifySign 中仅在 PHP < 8.0 时调用 openssl_free_key
- 文件顶部设置 display_errors=0 / html_errors=0 / error_reporting=E_ALL,
确保 API 错误只进日志,不污染响应
|
2026-07-14 22:07:17 +08:00 |
|
ypsdf1
|
1c9e5808a1
|
WIP: php 本地未提交改动
包含:
- admin.php / api/land_api.php / api/sync.php / login.php 修改
- 新增 active_players.php / online_curve.php / today_bonds.php
注:后续将视 origin/php 情况 reset --hard 对齐,本分支用于保留 WIP。
|
2026-07-14 22:02:10 +08:00 |
|
ypsdf1
|
8ec89ef841
|
feat: 债券在线充值联控(彩虹易支付RSA版) — pay.php + player.php
- api/pay.php: 下单/回调/查询 + RSA(SHA256)签名验签 + pay_orders表
- player.php: 在线充值UI + ?paid=1回跳 + 3s轮询补单
- 密钥仅从 git-ignored 的 pay_secrets.php / 密钥文件_git拉黑.txt 读取,不入库
- fix: 去除 open_basedir 限制的 /pay_keys 候选路径 + @抑制文件访问警告,避免污染响应
|
2026-07-14 21:12:56 +08:00 |
|
ypsdf1
|
9a78c693bf
|
feat: 债券在线充值联控(彩虹易支付RSA版) — pay.php + player.php
- api/pay.php: 下单/回调/查询 + RSA(SHA256)签名验签 + pay_orders表
- player.php: 在线充值UI + ?paid=1回跳 + 3s轮询补单
- 密钥仅从 git-ignored 的 pay_secrets.php / 密钥文件_git拉黑.txt 读取,不入库
- fix: 去除 open_basedir 限制的 /pay_keys 候选路径 + @抑制文件访问警告,避免污染响应
|
2026-07-14 21:03:28 +08:00 |
|
ypsdf1
|
5515d22d4c
|
security: 支付密钥文件 git 拉黑 (double insurance)
- .gitignore 新增 密钥文件_git拉黑.txt / pay_secrets.php / *.paykey
- 防止彩虹易支付 RSA 私钥/公钥/商户ID 误提交到 git
- 部署脚本 deploy_php_only.py 同步排除该文件防止上传公网 web 根目录
|
2026-07-14 20:25:06 +08:00 |
|
ypsdf1
|
4e11845636
|
R23: sync.php新增sync_admins+sync_bans处理(修复Java推送返回未知操作)
|
2026-07-12 23:00:05 +08:00 |
|
ypsdf1
|
b34753d1fd
|
新增封禁名单联控 + 用户管理封禁显示
- land_api.php: web_player_bans表 + handleSyncBans + sync_bans action
- admin.php: list_bans API接口
- admin.php前端: 用户行显示封禁状态(红色+禁图标+hover详情)
|
2026-07-12 22:08:46 +08:00 |
|
ypsdf1
|
498245d967
|
插件管理员权限扩展 + admin名单同步
- 新增web_plugin_admins表 + isPluginAdmin/canManageLand辅助函数
- handleAddVisitor/handleRemoveVisitor/handleChangeVisitorRole/handleUpdateLandField/handleUpdateVisitorPerm/handleGetMemberPerms/handleUpdateMemberPerm/handleClearMemberPerm/handleLandDetail 9处权限检查从owner-only扩展为owner+admin
- 新增sync_admins action:Java推送tag管理员名单,PHP全量写入web_plugin_admins
|
2026-07-12 19:46:44 +08:00 |
|
ypsdf1
|
be04c8b451
|
修复三个问题:1)sync.php缺少:peace_mode绑定导致同步后和平模式值丢失;2)player.php效果命名修正(火焰抗性→抗火,英雄→村庄英雄);3)peace_mode前端渲染反转(isInverted从false改true)
|
2026-07-12 13:03:48 +08:00 |
|
ypsdf1
|
f5879f4087
|
修复PHP操作效果后JSON解析崩溃:convertEffectsForFrontend增加容错处理+handleUpdateLandField统一管道格式到变更队列+player.php所有effects JSON.parse加try-catch
|
2026-07-12 11:41:26 +08:00 |
|
ypsdf1
|
0760cc1d2e
|
修复Java删除成员后PHP不同步删除的问题:移除syncPermissions中导致删除永远不生效的120秒宽限期,改为检查web_admin_changes待处理变更保护
|
2026-07-12 11:20:11 +08:00 |
|