# OpenLX统一身份与权益

美团官网身份通过wx.openlx.cn验证：登录、邮箱注册、验证重发、忘记密码、用户信息、退出沿用原接口。邮件继续由原账号服务SMTP发送。本产品不创建另一份密码库。跨产品使用同一账号密码；当前不是跨域自动免登录。没有试用、优惠券、兑换券接口。

`src/bridge.mjs` 在服务器上原位引用现有wx-api的config.js/alipay.js/wechatpay.js；回调地址与支付标题属于美团。公开客户端不能标记已支付。支付宝验签及app_id、微信验签及appid/mch_id完成后，核对订单、币种、渠道和整数分金额，事务内发放权益。重复回调不续两次。实际小额支付与退款没有执行；销售开关默认关闭，待真实门店能力、支付和真人服务准备验收。

美团订购记录以共享`user.id`作为身份，酒店、订单、设备、工单、权益按该用户隔离。登记门店不等于证明平台所有权；真实后台执行还会核对专属会话中的账号和门店。

签名许可证绑定产品、门店和设备，24小时离线有效窗口不超过套餐到期。设备凭证只在登记时提供，服务器保存哈希；本机保存到工作区0600文件。`activate --file FILE`验证发行公钥后导入，`refresh-license`刷新。生产支付许可证在写入时还要取得服务器门店写租约；另一台设备不能同时写入。免费本机任务只有账号与门店本机互斥，尚未提供免费跨主机集中调度。

## 季度/年度通票协议

`src/entitlements.mjs`仅消费中央签名，不提供通票销售或签发端点。统一身份不自动获得其他产品付费权益。中央权益的私钥与发放服务由唯一公共服务负责，本产品只配置公钥和已签名授予文件。

- `schema: openlx.entitlement.v1`
- `grant_id`、`subject_user_id`、`issuer`、`order_id`
- `scope.mode: selected | all`，`scope.product_ids`是购买时实际解析的技能ID集合；all同时必须有`scope.catalog_version`。未来新产品是否纳入依购买合同，由中央重新签发，不能客户端自行扩展。
- `property_ids`：获准门店集合；`level_by_product`：每个技能的standard或supreme，不能用一个通票标签默认全至尊。
- `term: quarterly | annual`、`starts_at`、`expires_at`、`status`、`checked_at`。中央撤销检查须在24小时内，过期/伪造/不同用户/不同门店/未包含技能均不授予。

通过只读环境变量`OPENLX_SHARED_GRANTS_FILE`与`OPENLX_SHARED_GRANTS_PUBLIC_KEY`接入。未配置则仅本产品已购权益。通票价格未确认，当前没有对外出售通票。中央系列数据投影与统一概览单独接入，不能当作通票签发或免登录SSO。通票中央签发服务仍未交付，协议和本产品验签消费器已实现并测试。

## 当前真实验证边界

共享SMTP连接认证已真实验证通过，未发真实邮件。模拟身份与支付回调验证可以证明本产品隔离和验签后入账的行为，不能证明SMTP送达、实际收款、退款或真人履约。部署后健康检查与公共支付配置为只读真实探针；不会为测试向真实用户发邮件或生成支付。

## 系列数据库同步准备

携程任务负责wx中央系列数据库写入，美团不修改共享库。`src/series-outbox.mjs`用SQLite触发器在本地源事务内生成递增事件，覆盖酒店、订单、权益、设备元数据与工单状态，不包含密码、会话和设备令牌。同步失败保留待发事件，不阻断本产品免费能力。已接入中央V1合同，src/series-sync.mjs按产品独立HMAC鉴权发送持久化精确批次；断线重试同批，获中央修订确认后才清理。会员中心/api/series用本人wx token代理/api/user/series，不能任意指定user_id。生产同步是否完成以独立回执为准；空流注册不代表已有真实会员记录。

生产回执：美团同步流已在wx同一MySQL注册，本地与中央stream/修订一致（revision=0，pending=0，central_records=0）。这是空流及鉴权链路验证，不是实际会员订单同步样本；尚未用真实会员会话实测跨站概览。
