接入文档 V0.1.0

小程序(登录 / 支付 / 订阅消息)

中台已为小程序预留账号类型与接口。接入一个小程序只需四步:后台登记账号、商户平台关联 AppID、 小程序后台加合法域名、绑开放平台拿 unionid。

接入前置

动作在哪做注意
登记小程序账号中台后台「微信账号」,类型 miniprogramAppID 与 AppSecret 都填这里
关联商户号商户平台 → 产品中心 → APPID 账号管理 主体一致时公众平台点确认即可;不一致要签《联合运营承诺函》(1–3 工作日审核); 申请单 7 天失效、绑定后不可解绑
绑开放平台微信开放平台 → 管理中心不绑就没有 unionid,服务号与小程序认不出同一个人
服务器合法域名小程序后台 → 开发管理 → 服务器域名 request 域名加 https://wx.onzx.cn;每月限改 5 次,一次配齐;必须 https 且已备案
订阅消息模板小程序后台 → 订阅消息选类目模板,模板 ID 填进中台「消息模板」,channel 选 mp_subscribe

登录:用 code 换身份

// 小程序端:只把 code 交给自己的站点服务端,密钥绝不进小程序包
wx.login({ success: r => myFetch('/site/mp-login', { code: r.code }) })

// 站点服务端 → 中台
POST https://wx.onzx.cn/api/v1/miniprogram/login
{ "code": "081abc…", "profile": "mp" }
→ { "ok": true, "data": { "openid": "oMP…", "unionid": "uX…", "identity_id": 44, "session_key": "…" } }
小程序的 openid 与公众号的 openid 不是同一个值。同一个人两边也不同,只能靠 unionid 认人。 业务账号的唯一键应当是 unionid(有则优先),openid 只作兜底。

session_key 只能留在站点服务端(内存或短期缓存),不要写日志、不要下发给前端; 手机号建议用新版 getPhoneNumber 在服务端换取。

支付:小程序内必须用 wx.requestPayment

POST https://wx.onzx.cn/api/v1/pay/order
{ "out_trade_no": "MP-20261015-001", "amount_total": 9900, "description": "测评报告",
  "scene": "miniprogram", "openid": "<小程序 openid>", "channel": "yzy" }

→ data.jsapi_params = { appId(小程序), timeStamp, nonceStr, package, signType:"RSA", paySign }

wx.requestPayment({ ...jsapi_params, success(){}, fail(){} })   // 结果仍以服务端通知为准

小程序里不要用中台托管收银台:web-view 内嵌 H5 支付在小程序里被限制, 而且会额外占用业务域名与支付授权目录名额。走 scene=miniprogram 直接调起最省事。

订阅消息

// 小程序端先攒额度(必须由用户点击触发)
wx.requestSubscribeMessage({ tmplIds: ['模板ID'], success(res) { /* 上报站点服务端 */ } })

// 站点服务端记额度
POST https://wx.onzx.cn/api/v1/message/grant
{ "openid": "oMP…", "template_id": "模板ID", "times": 1, "profile": "mp" }

// 之后按事件发送
POST https://wx.onzx.cn/api/v1/message/send
{ "event_key": "report_ready", "openid": "oMP…", "channel": "mp_subscribe",
  "params": { "thing1": "报告已生成", "date2": "2026-10-15" }, "page": "pages/report/view" }

小程序订阅消息字段名是 thing1 / date2 / amount3 这种带类型的键,与服务号的 keyword1 不同 —— 在后台「字段对应」里映射一次即可,站点代码不用改。

带参数二维码

POST https://wx.onzx.cn/api/v1/miniprogram/qrcode
{ "scene": "poster-202610", "profile": "mp" }
→ { "url": "https://mp.weixin.qq.com/…", "ticket": "…" }

注意:扫码后的关注/进入事件需要公众号配置消息推送 URL 才收得到,而那个位置目前属于存量系统。 所以中台的绑定链路走"链接 + 网页授权"(见 登录中转), 不依赖带参数二维码的事件回调。

PC 扫码登录(顺带说明)

这属于开放平台「网站应用」,与公众号网页授权是两条链路:需注册网站应用(企业主体 + 资质认证), 拿到 AppID 后在后台以 website 类型登记。中台当前未开放该接口 —— 需要时补一个 /oauth/webqrcode + 前端轮询即可,不影响已有链路。

本页内容随代码一起版本化(V0.1.0)。发现文档与实际行为不一致,请当缺陷报告。