Shop:客户门户
Nexora Shop 为你的客户提供一个位于 https://<shop>/app/ 的网页应用。本页介绍它是什么、如何为它启用 HTTPS,以及客户在 Telegram 之外登录的三种方式。
一个应用,两个入口
- 网页门户,可在任何浏览器中使用。当 Telegram 被封锁或你的机器人丢失时,它能让商店继续销售。客户用发送到其 邮箱 或 手机号 的验证码登录,或用 机器人 确认的验证码登录,然后像在机器人中一样购买、付款、续费,查看自己的服务和用量。它可以安装到手机主屏幕上。
- 小程序,在 Telegram 内使用。一旦 Shop 的公网地址是
https://,机器人的菜单就会显示 打开商店,Telegram 会自动让客户登录。在网页上购买过的客户只需关联一次邮箱或手机号(用验证码证明),之后在两处都能看到同样的服务、钱包和订单。
客户能做什么
- 我的订阅:带复制按钮和二维码的订阅链接、用量、到期日、续费、加流量,以及用钱包支付的自动续费。
- 购买和付款:用银行卡转账并提交凭证的照片、PDF 或流水号,或通过你的网关付款(Shop:支付)。
- 钱包:余额和充值、礼品码,以及客户自己的推荐链接(Shop:促销)。
- 免费试用,如果你提供的话。
应用使用你开启的语言,每位客户用自己的语言,顶部有切换开关。新服务暂停时,或者因面板没有余量而把订单款项退回钱包时,它也会告知客户。
公网地址和 HTTPS
安装时会询问 Shop 的 公网地址、Shop 如何获取 HTTPS 证书,以及 机器人令牌。令牌可以稍后在 Shop 中设置。地址之后可以在 快速设置 中更改(端口不变);证书模式需要用新的回答重新运行安装来更改。
开启 HTTPS 时,Shop 只在安装时的端口上提供 HTTPS,旁边不再有明文服务,公网地址必须写明这个端口(未写明时为 443)。面板也通过这个地址访问 Shop。
https | 何时使用 |
|---|---|
panel(默认) | Shop 使用你在安装时从面板 证书 中选择的证书。面板签发并续期它;Shop 每隔几分钟获取一次并保留副本。Shop 不需要 443 端口,因此可以与面板共用一台服务器:给它一个单独的端口,例如 8443,地址为 https://shop.example.com:8443。 |
acme | 公网地址的域名指向 Shop 所在的服务器,且该服务器的 443 端口空闲。Shop 在 443 端口上自己获取并续期证书,80 端口上无需任何监听。 |
acme-http | 同上,可用任意端口,用于 443 已被占用的服务器。证书机构在 80 端口上验证。 |
self-signed | 以 IP 访问的地址,例如 https://203.0.113.9:8443。浏览器会警告一次;通信是加密的。快速设置 会显示证书指纹,供你与浏览器显示的指纹以及面板在批准 Shop 时显示的指纹比对。 |
off | 在该端口上提供明文 HTTP,供你自己的反向代理使用。 |
自签名地址上没有小程序
Telegram 不会在自签名地址上打开小程序,因此机器人不会提供小程序。客户使用机器人,以及浏览器中的网页应用。Shop 大约每年续期一次自签名证书;届时请在面板中 Shop 所在行用 证书 信任新证书。
邮件登录
在 Shop 的 设置 中填写你的 SMTP 服务器:主机、端口、用户名、密码、发件地址,以及加密方式:starttls(端口 587)、tls(端口 465)或 none(仅用于同一服务器上的中继)。
验证码为六位数字,有效期十分钟,可尝试五次。每个地址十五分钟内最多收到三个验证码,每个 IP 地址每小时最多十个。
短信登录
Shop 不指定任何短信服务。请在 设置 中填写你自己的小型中转的 URL,通过它接到你的服务上。不填共享密钥时由 Shop 生成。每个验证码以如下方式发送:
POST <your relay URL>
X-Nexora-Timestamp: 1790000000
X-Nexora-Signature: <hex HMAC-SHA256 of "1790000000.<body>" under the secret>
Content-Type: application/json
{"to": "+15550100", "text": "Your shop sign-in code: 123456"}消息发出后返回任意 2xx 状态码即可。签名与 Shop 调用你的任何服务时的签名相同(Shop:支付);请在中转中校验。号码以国际格式送达;输入为 0912… 的伊朗号码会变为 +98912…。
机器人登录
设置了机器人后,门户会提供 通过 Telegram 机器人登录。它会用一次性码打开机器人;客户点击 Start,机器人会请客户确认,并显示该浏览器的地址、设备和时间。点击 确认 后页面会自动登录;拒绝 则作废该码。
登录码五分钟内有效,并且只有请求它的那个浏览器会登录:把自己的链接发给客户的人什么也得不到。这需要能访问 Telegram;邮件和短信登录正是为无法访问时准备的。
位于反向代理之后
验证码、登录和付款查询按客户端地址限制次数。如果 Shop 位于终止 TLS 的反向代理之后,请在安装的 .env 中把 NEXORA_OPT_TRUSTED_PROXIES 设为代理的地址或网段,例如 127.0.0.1, 10.0.0.0/8。Shop 随后会从代理的 X-Forwarded-For 读取客户端地址。留空(默认)则不信任任何转发头。
