[2026.9.28]云市场「购买→支付→授权→下载」闭环落地;卸载机制复刻;市场前端模板上线
一、云市场购买支付闭环(今日重点)
- 支付方式确认为两种货币:积分 jifen 与 rmb 余额;支付宝、微信只是给余额充值的通道,不是购买应用的选项。
- 改动 application/shop/index/Getapp.php:新增 ensureBuyappTable / getAppPrice / isBought / writeBought / index(购买页)/ buy(扣费)/ client_check(已购检查)/ check_buy(付款轮询)。
- 新建购买页模板 template/index_style/default/shop/getapp/index.html,四态渲染:未登录 / 应用不存在 / 已购 / 正常。
- 新增数据表 qb_shop_buyapp,UNIQUE(domain,appid) —— 一个域名只授权一次。
- 新增路由:shop/getapp/index.html(购买页 iframe)、shop/getapp/buy.html(POST 扣费 + 写授权)、shop/getapp/client_check.html、shop/getapp/check_buy.html(每秒轮询)。
- 三种支付方式(数据驱动,零新字段):应用表同时有 price 与 jifen 两列 —— 纯积分(price=0)、纯人民币(jifen=0)、人民币+积分组合(两者均>0,只出一个组合按钮,一次性扣余额+积分,卖家两笔都收)。
二、钱相关的三个真实缺陷已修
- 买家余额判断走缓存 → 改为实时查库读 rmb/money,避免充值后仍提示「余额不足」导致购买被拒。
- 原 buy() 只扣买家、从不给卖家入账 → 补齐卖家入账(卖家 uid 取 qb_shop_content.uid);自购时两次记账作用于同一 uid,净额为零但卖家确实收到账,满足「卖了就得分钱」。
- 收款后页面看不到钱 → 恢复 common.php::add_rmb() 里被注释掉的
cache('user_'.$uid,null),余额变动后会员缓存即时刷新,全站充值/下单/后台调节一并受益(系统级修正)。
三、复刻「回云端拉清单再逐个删」的卸载方式
- 新增 application/shop/index/Version.php:清单直接由安装包 zip 反推,路径映射严格对齐 Market::downModel() 的落盘规则,返回扁平 JSON 数组。
- Style.php 新增 delete_style_by_filelist():按清单逐个删 + 自底向上只清「空」目录。
- 三重护栏:拒绝含
.. 的路径、白名单只放行 template/ 与 public/static/、realpath 必须仍在站点根内。清单不可用时自动降级为整目录删除,避免误删用户自建文件。
四、云市场前端模板(只交付静态文件,不动后端)
- 产出 index.html + assets/css/market.css(主题变量、Grid/Flex、深浅双主题、响应式、骨架屏)+ data.js + market.js(搜索防抖、排序、免费筛选、网格/列表切换、详情弹窗、主题记忆)。
- 套进 index_style/yunshichang 风格并接入云端真实数据:关闭演示数据,列表接口指向自建商店,normalize() 适配云端字段(fid→分类、downs/view→安装量、price/jifen 字符串转数值),详情弹窗先用列表数据秒开再异步补全正文。
五、其它
- 产出《齐博支付接口对接手册》:post_olpay / Pay.php / pay.js 全链路 + 9 条避坑清单 + 验收清单(纯查询交付,未改动 PHP)。
- 付费应用包防白嫖:云端 nginx 加 zip 直链禁访问规则,前端详情接口不再下发 appfile 字段(down 从数据库取包,安装不受影响)。
- 修掉 3 个致命坑:UserModel 别名作用域、url() 三参数被当成模块名、fetch() 默认模板路径解析不到(改传绝对路径)。
整理人:WorkBuddy(齐博X2.0-开发进度文档整理员)