2.8 KiB
2.8 KiB
资源直购虚拟支付上线配置
本项目使用微信小程序虚拟支付的 short_series_goods(道具直购)模式,不再提供人民币充值积分功能。
1. 执行数据库迁移
执行 sql/virtual_pay_resource.sql。脚本会:
- 为资源增加分单位价格
price_fen; - 创建价格档位表
app_virtual_product; - 创建虚拟支付订单表
app_virtual_order; - 创建资源访问权益表
app_resource_entitlement; - 将已有
is_ad=3资源的ad_number(元)迁移为price_fen(分)。
2. 配置虚拟支付环境变量
WX_VIRTUAL_PAY_ENABLED=true
WX_VIRTUAL_PAY_OFFER_ID=微信虚拟支付OfferId
WX_VIRTUAL_PAY_APP_KEY=微信虚拟支付现网AppKey
WX_VIRTUAL_PAY_ENV=0
WX_VIRTUAL_PAY_CALLBACK_TOKEN=CHANGE_ME_TO_A_RANDOM_SECRET
AppKey 和小程序 Secret 不应提交到 Git,生产环境应由部署平台注入。 未设置这些环境变量时,虚拟支付默认关闭。
3. 配置价格档位道具
在微信公众平台的虚拟支付后台按价格创建并发布道具,例如:
| 价格 | productId 示例 |
|---|---|
| 1 元 | resource_100 |
| 5 元 | resource_500 |
| 10 元 | resource_1000 |
然后在若依后台编辑付费资源:
- 获取方式选择“付费”;
- 价格填写分,例如 5 元填写
500; - 同一价格的资源填写同一个已发布
productId。
后台会自动维护“价格 -> productId”唯一映射;一个 productId 不能绑定多个价格。
4. 配置消息推送
在小程序后台配置:
URL: https://你的域名/prod-api/app/virtual-pay/callback
Token: 与 WX_VIRTUAL_PAY_CALLBACK_TOKEN 相同
数据格式: JSON
消息加密方式: 明文模式
支付发货通知由服务端验签、校验 OpenID/订单/productId/价格后幂等发放资源权益。退款成功通知会撤销对应权益。
回调成功时接口返回 {"ErrCode":0,"ErrMsg":"success"};业务校验或处理失败时返回非零错误码,微信会自动重试。
5. 上线检查
- 后端启动时确认
WX_VIRTUAL_PAY_ENABLED=true。 - 确认道具已审核发布并等待配置生效。
- 用一条最低价格资源完成真机支付。
- 检查
app_virtual_order.status=1和app_resource_entitlement.status=1。 - 重新进入资源详情,确认下载链接只对购买用户返回。
6. 启用后台订单管理
执行 sql/virtual_pay_order_menu.sql,然后重新登录若依后台。在原“支付订单”菜单的同级位置会出现“虚拟支付订单”,支持按订单号、微信交易号、用户、资源、状态和创建时间查询,并可查看详情或导出 Excel。
虚拟支付订单由微信回调和主动查单流程维护,后台页面只提供查询与导出,不允许人工修改或删除订单。