Files
YwxAppThink/docs/应用市场商业化流程.md
T

5.6 KiB
Raw Blame History

应用市场商业化流程(Discuz! 式插件/模板售卖闭环)

业务模型:框架免费,靠卖插件/模板变现。 中心站(market)承载商品/交易/授权,客户机(client)拉取并受授权闸门约束。

一、总体流程图

开发者提交 ──▶ 审核 ──▶ 上架 ──▶ 浏览详情 ──▶ 前台购买 ──▶ 支付 ──▶ 回调出授权
   │            │         │           │            │          │           │
 Market::submit 后台审核  catalog()  Store::detail  Store::buy  Yansongda   completeOrder()
   │            │         │           │            │          │           │  → 写 license_key
   │            │         │           │            │          │           │  → 写分润/开发者余额
   └────────────┴─────────┴───────────┴────────────┴──────────┴───────────┴──▶ 下载安装(绑定域名)
                                                                                   │
                                                                          Market::valid / index
                                                                                   │
                                                                          启用闸门(运行期校验)
                                                                                   │
                                                                   AddonService::verifyRuntimeLicense
                                                                                   │
                                                                   AddonService::checkLicenses (crontab)
                                                                                   │
                                                                          过期/吊销 → 自动禁用
                                                                                   │
                                                                      分润提现 Withdrawal 模型

二、各阶段落地清单

阶段 状态 关键代码 说明
1. 开发者提交 Market::submit 支持 addon / template 两种类型,含安全扫描
2. 审核 / 上架 后台审核 + MarketService::catalog() 通过后才进 catalog() 列表
3. 浏览详情 Store::detail + view/frontend/store/detail.html 价格/截图/版本/授权说明
4. 前台购买下单 Store::buyPOST /appmall/store/buy 取会员 uid;中心站直连 MarketService::buy,客户机经 RemoteService::buy
5. 支付 MarketService::buyYansongda\PayMarket::notify / payResult 返回 pay_paramsweb 表单)前端 window.open 拉起收银台
6. 回调出授权 MarketService::completeOrder 支付成功生成 license_key(HMAC 签名)+ 写分润/开发者余额
7. 订单轮询 Store::orderStatusGET /appmall/store/orderStatus 前端拉起收银台后轮询,拿到 license_key
8. 下载安装 + 域名绑定 Market::index(下载)/ Market::valid(安装时校验绑定域名) 校验:免费→uid→存在→吊销→过期→域名绑定
9. 启用闸门 AddonService::enableverifyRuntimeLicense POST 中心站 validDomain;失败抛 AddonException(除非 offline_tolerant
10. 运行期过期巡检 AddonService::checkLicenses + addon:license-check 命令 crontab 每日巡检,过期落库禁用
11. 分润 / 提现 Withdrawal 模型 + 收益后台 开发者余额可提现

三、配置开关

config/ywxapp.php

  • market_mode / api_url:决定中心站 or 客户机。客户机(is_market_client()===true)才启用授权校验。
  • addon_license_checkfalse(关闭校验)/ true(中心站不可达也禁用)/ 'offline_tolerant'(不可达放行,仅真实过期拒绝禁用)。

四、前端购买链路(detail.html

点击「立即购买」
  → POST /appmall/store/buy  {name}
     ← code=1, license_key        → 提示已购,引导后台安装绑定域名
     ← code=1, trade_no+pay_params → window.open 收银台 + 轮询 orderStatus
     ← code=1, trade_no(无pay_params, mock) → 演示确认 → 轮询
     ← code=0, need_login         → 跳 /member/login

五、部署清单

中心站需同步addon/appmall/Store 控制器 + route/app.php + view/frontend/store/detail.html)、config/pay.phpYansongda 配置)。

客户机需同步

  • ywxapp/service/AddonService.phpverifyRuntimeLicense + checkLicenses
  • ywxapp/service/AppService.phpaddon:license-check 注册)
  • ywxapp/command/AddonLicenseCheck.php
  • config/ywxapp.phpaddon_license_check

定时巡检(客户机)

10 3 * * * cd /path/to/site && php think addon:license-check >> runtime/license_check.log 2>&1

六、待办(真实支付与增长)

  1. 真实支付:当前 pay_params 来自 Yansongda\Pay(中心站 config/pay.php),mqpay 免签插件未参与此链路;如需接 mqpay 收银台需另接。
  2. 域名绑定可视化:安装时填写域名并校验的 UI 提示。
  3. 运营增长:优惠券/分销、开发者实名结算、SEO 内容填充。

参考:docs/自定义命令清单.mdaddon:license-check)、docs/系统架构与解耦设计.md