76 lines
5.8 KiB
Bash
76 lines
5.8 KiB
Bash
# 微信小程序配置(真实微信登录)
|
||
# 复制本文件为 server/.env 并填入真实值;或直接在部署环境设置环境变量。
|
||
# 获取方式:微信公众平台 mp.weixin.qq.com → 开发 → 开发管理 → 开发设置 → AppID / AppSecret
|
||
WX_APPID=你的小程序AppID
|
||
WX_SECRET=你的小程序AppSecret
|
||
|
||
# ── 微信支付 V3(算力充值,app/pay 子应用)────────────────────────────
|
||
# 商户平台 pay.weixin.qq.com 获取;凭据只放部署环境 .env,勿提交
|
||
PINEAGENTS_WECHATPAY_MCHID=
|
||
PINEAGENTS_WECHATPAY_CERT_SERIAL_NO=
|
||
PINEAGENTS_WECHATPAY_APIV3_KEY=
|
||
# 商户 API 证书私钥路径(默认 serverdata/keys/wechatpay/apiclient_key.pem)
|
||
PINEAGENTS_WECHATPAY_PRIVATE_KEY_PATH=
|
||
# 平台公钥(可选,公钥模式时配置);否则平台证书自动更新落盘
|
||
PINEAGENTS_WECHATPAY_PUBLIC_KEY_PATH=
|
||
# 支付回调地址:须为微信可达的公网 HTTPS
|
||
PINEAGENTS_WECHATPAY_NOTIFY_URL=https://opc.pinesound.cn/opc/pay/notify
|
||
# Native 扫码用 appid(公众号/开放平台,须绑定到该商户号);空回退开放平台/小程序 appid
|
||
PINEAGENTS_WECHATPAY_NATIVE_APPID=
|
||
# 小程序 JSAPI 用 appid;空回退 PINEAGENTS_WECHAT_APPID
|
||
PINEAGENTS_WECHATPAY_JSAPI_APPID=
|
||
# 充值套餐兜底 JSON([{id,amount(元),bonus(赠送元),label}]);DB system_configs 的 recharge_packages 优先
|
||
PINEAGENTS_WECHATPAY_PACKAGES=[{"id":"p10","amount":10,"bonus":0,"label":"10 元"},{"id":"p50","amount":50,"bonus":5,"label":"50 元"},{"id":"p100","amount":100,"bonus":15,"label":"100 元"}]
|
||
# 自由金额范围(元)与订单有效期(分钟)
|
||
PINEAGENTS_RECHARGE_MIN_YUAN=1
|
||
PINEAGENTS_RECHARGE_MAX_YUAN=5000
|
||
PINEAGENTS_RECHARGE_EXPIRE_MINUTES=15
|
||
|
||
# ── 微信支付【服务商】分账 / 资金托管配置(OPC 收款认证)─────────────────
|
||
# ⚠️ 与上方直连商户配置并存:收单走直连商户号,分账/进件用服务商商户号;
|
||
# 分账功能以本段为开关(SP_MCHID + 服务商证书/APIv3 + 回调地址齐备才启用 profitsharing_enabled())。
|
||
# ⚠️ 开通前提:平台主体需有营业执照,在微信支付商户平台完成「服务商入驻」+
|
||
# 「服务商分账」产品开通 + 绑定服务商 AppID + 配置分账回调(无需 ICP/EDI)。
|
||
# ⚠️ 关键:服务商商户号通常 ≠ 直连商户号,是两个独立商户号,**必须为服务商单独配置
|
||
# API 证书/序列号/APIv3 密钥**(下方 SP_* 证书项),否则分账/进件签名失败(SIGN_ERROR)。
|
||
#
|
||
# PINEAGENTS_WX_SP_MCHID —— 服务商商户号(10 位数字,sp_mchid,发起分账/进件的请求主体)
|
||
# 在哪里获取:微信支付商户平台 pay.weixin.qq.com → 登录服务商账户 → 「商户信息」→ 服务商商户号
|
||
PINEAGENTS_WX_SP_MCHID=
|
||
# PINEAGENTS_WX_SP_APPID —— 服务商 AppID(PERSONAL_OPENID 个人分账接收方的 openid 归属该 AppID;
|
||
# 分账接口的 appid 参数也用它)
|
||
# 在哪里获取:微信公众平台 mp.weixin.qq.com → 小程序/公众号 → 「开发」→「开发管理」→ AppID;
|
||
# 注意:该 AppID 需在服务商后台「AppID 授权」中完成与服务商商户号的绑定
|
||
PINEAGENTS_WX_SP_APPID=
|
||
# PINEAGENTS_WX_SP_CERT_SERIAL_NO —— 服务商 API 证书序列号(APIv3 请求签名头 Wechatpay-Serial)
|
||
# 在哪里获取:微信支付服务商商户平台 pay.weixin.qq.com/partner → 「账户中心>API安全>API证书」
|
||
# → 查看证书序列号(形如 15DF0640...)
|
||
PINEAGENTS_WX_SP_CERT_SERIAL_NO=
|
||
# PINEAGENTS_WX_SP_PRIVATE_KEY_PATH —— 服务商 API 私钥 apiclient_key.pem 落盘路径
|
||
# 在哪里获取:服务商商户平台「API安全>API证书」→ 下载证书,解压得 apiclient_key.pem,
|
||
# 上传到服务器(如 serverdata/keys/wechat_certs/sp_certs/apiclient_key.pem)
|
||
PINEAGENTS_WX_SP_PRIVATE_KEY_PATH=serverdata/keys/wechat_certs/sp_certs/apiclient_key.pem
|
||
# PINEAGENTS_WX_SP_APIV3_KEY —— 服务商 APIv3 密钥(32 位;回调报文解密用,勿与直连商户相同)
|
||
# 在哪里获取:服务商商户平台「账户中心>API安全>APIv3密钥」→ 设置/重置后保存
|
||
PINEAGENTS_WX_SP_APIV3_KEY=
|
||
# PINEAGENTS_WX_SP_CERT_DIR —— 服务商平台证书/公钥自动更新落盘目录(运行时数据)
|
||
# 在哪里获取:自行指定目录(如 serverdata/keys/wechat_certs/sp_certs),首次请求自动下载
|
||
PINEAGENTS_WX_SP_CERT_DIR=serverdata/keys/wechat_certs/sp_certs
|
||
# PINEAGENTS_WX_SP_PUBLIC_KEY_PATH / _ID —— 服务商公钥模式(可选,二选一)
|
||
# 新服务商商户启用「微信支付公钥」模式时配置 pub_key.pem 与 PUB_KEY_ID(在 API安全>公钥 获取);
|
||
# 未配置则走平台证书自动更新(推荐,无需人工维护)
|
||
PINEAGENTS_WX_SP_PUBLIC_KEY_PATH=
|
||
PINEAGENTS_WX_SP_PUBLIC_KEY_ID=
|
||
# PINEAGENTS_WX_SPLIT_NOTIFY_URL —— 分账结果回调通知地址(必须是微信可达的公网 HTTPS)
|
||
# 在哪里获取:平台自己的回调 URL(本项目为 https://opc.pinesound.cn/opc/pay/profitsharing/notify),
|
||
# 并到微信商户平台 → 服务商分账 → 「回调设置」配置相同的地址,接收分账结果通知
|
||
PINEAGENTS_WX_SPLIT_NOTIFY_URL=https://opc.pinesound.cn/opc/pay/profitsharing/notify
|
||
# PINEAGENTS_WX_SPLIT_COMMISSION_RATE —— 平台佣金比例(分账给服务商商户号的部分,默认 0.05=5%)
|
||
# 在哪里获取:平台自身运营策略,需与 settlement_service 的 COMMISSION_RATE 保持一致
|
||
PINEAGENTS_WX_SPLIT_COMMISSION_RATE=0.05
|
||
|
||
# ---- 数据库(SQLite→MySQL 切换;未配置默认 serverdata/data/app.db)----
|
||
# 示例:mysql+asyncmy://user:pass@192.168.1.3:8091/opc?charset=utf8mb4
|
||
# 首次迁移:uv run python scripts/migrate_sqlite_to_mysql.py(建表+搬数据+行数校验)
|
||
PINEAGENTS_DEMO_DATABASE_URL=
|