微信小程序从零到上线助手 · 付费版(Pay Skill)
这是什么(付费形态)
这是免费版「微信小程序从零到上线助手」的 付费增值形态:
- 免费版:教你怎么从零搭小程序(指南 + 本地脚手架)。
- 本付费版(Pay Skill):你描述需求 → Agent 在对话内展示支付宝账单(¥0.01/次)→ 确认支付后,云端按次生成一套完整可运行的小程序工程并打包返回 ZIP。
核心价值:把"从零手敲脚手架 + 配页面 + 写网络/登录封装"这件重复劳动,变成一次按次付费的调用。
后端服务(付费资源地址)
本 Skill 的生成引擎部署在商户自建后端(不在本下载包内),付费资源地址:
https://wechat-mp-paid-316824-10-1492128074.sh.run.tcloudbase.com/generate
调用方式:POST 该地址,Header 携带 Payment-Proof(支付凭证)。
付费改造合规要点(对齐支付宝「AI 按量付费」A2M 契约)
后端已实现支付宝官方《付费改造最佳实践指南》要求的四要素,满足平台审核口径:
| # | 要素 | 实现位置 | 说明 |
|---|---|---|---|
| ① | 402 + Payment-Needed 账单 | payment_needed_response() |
未支付请求返回 402 + Base64URL 账单,含 protocol/method 全套字段与商家 RSA2 签名 |
| ② | 验签(Payment-Proof 重试) | verify_payment_proof() |
带凭证重试时调 alipay.aipay.agent.payment.verify 校验,通过才交付;DEMO 模式跳过 |
| ③ | 履约确认(fulfillment.confirm) | _fulfillment_worker() |
交付成功后【异步】调用 alipay.aipay.agent.fulfillment.confirm,指数退避重试(最多 3 次),失败落库 FAILED 可经 /fulfillment/retry 补偿 |
| ④ | 订单持久化 + 幂等 | SQLite orders 表 |
见下 |
订单状态机与幂等保证(④ 细化):
PENDING_PAYMENT ──(验签通过)──▶ PAID ──(交付成功)──▶ FULFILLED
│ │
(账单过期/关闭) (同一笔交易重放)
▼ ▼
CLOSED ◀────────────────────────── 直接返回已缓存产物(X-Idempotent-Replay=true,不重复计费/生成)
- Idempotency-Key:Agent 传入的同一幂等键在账单有效期内复用同一订单与账单,避免重试重复下单/扣款(
idx_orders_idem_active唯一索引约束活跃订单)。 - trade_no 交付幂等:同一笔支付宝交易重复请求直接返回 sha256 校验过的缓存产物,不重复生成、不重复计费。
- 金额一致性:凭证金额与本地订单金额不符(篡改/错单)一律拒绝(409),不得凭幂等绕过。
- 持久化:订单落 SQLite(
out_trade_no/trade_no/order_status/fulfill_status/artifact_sha256等),提供/healthz、/orders、/orders/{no}、/fulfillment/retry运维接口用于对账与补偿。
当 Agent 调用本 Skill 时(支付宝 402 按量付费流程)
- 理解用户需求(一句话描述 + 需要的功能)。
POST上述服务地址;未带支付凭证时服务端返回 402 +Payment-Needed(Base64URL 账单,金额 ¥0.01)。- 支付宝「AI 付」在对话内展示账单,用户确认支付。
- Agent 携带
Payment-Proof重试;服务端调用支付宝验签接口
alipay.aipay.agent.payment.verify校验通过。 - 服务端生成完整工程并打包 ZIP 返回(用户用微信开发者工具打开即可预览)。
> 后端严格按支付宝 alipay-aipay 的 A2M 契约实现:402 账单含 protocol / method
> 全套字段、商家 RSA2 签名、service_id 为服务市场注册的真实值,生产网关
> https://openapi.alipay.com/gateway.do,交付回 Payment-Validation 头。
生成能力(按 features 驱动)
⚠️ 生成引擎部署在商户后端,不随本包分发(防盗版关键):本包只含瘦客户端,
用户下载不到能运行的引擎,没有支付凭证也拿不到产物。
后端引擎支持的功能模块:
| 功能关键词 | 生成内容 |
|---|---|
| 列表 | pages/list 列表页 + 示例 wx.request |
| 详情 | pages/detail 详情页(列表点击进入) |
| 表单 | pages/form 表单页 |
| Canvas | pages/canvas(含 dpr 上限 2 等性能要点) |
| 登录 | utils/auth.js(wx.login → 后端换 token) |
| 网络请求 | utils/request.js 统一封装 |
| TabBar / 多页面 | app.json 自动加 tabBar(图标需自行补 iconPath) |
始终包含:app.js / app.json / app.wxss / project.config.json / sitemap.json / 首页 / 关于页 / README。
本地测试(无需真实支付)
# 1) 起后端(演示模式,跳过真实支付)
cd server
set SKILLPAY_DEMO=1
python app.py
# 2) 另开一个终端,用瘦客户端请求(演示模式后端接受任意 proof)
set SKILL_BACKEND_URL=http://127.0.0.1:8080/generate
python <skill>/scripts/pay_skill.py \
--desc "小区快递代收小程序" \
--features "登录,网络请求,列表,详情,TabBar" \
--name express-app --appid touristappid --zip ./build.zip --proof DEMO
运行依赖(瘦客户端):仅需 Python 标准库,无需第三方包。
资源
scripts/pay_skill.py— 瘦客户端(【不含】生成逻辑,只连商户后端)。references/architecture-and-basics.md— 双线程架构、四文件结构、rpx、setData、Canvas 2D、网络。references/common-pitfalls.md— 常见报错与精确修复(disableScroll / ctx is not defined / 卡顿 / 体验权限)。references/publishing.md— AppID、测试号、体验成员、上传→审核→发布流程。
注意事项
- 防盗版:生成引擎只部署在商户后端,源码不随包分发;卸载/复制本包都不含引擎,
没有Payment-Proof也拿不到产物。 - 生成的工程默认用
touristappid(游客模式),仅可本地预览;正式上线请在
project.config.json 改成你自己的 AppID,并在小程序后台配置 request 合法域名。 - 价格、通道、计费模式以发布表单里填的为准(本文件 frontmatter 为提示值,当前 ¥0.01/次)。