73 lines
2.8 KiB
Markdown
73 lines
2.8 KiB
Markdown
|
|
# 资源直购虚拟支付上线配置
|
|||
|
|
|
|||
|
|
本项目使用微信小程序虚拟支付的 `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. 配置虚拟支付环境变量
|
|||
|
|
|
|||
|
|
```text
|
|||
|
|
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. 配置消息推送
|
|||
|
|
|
|||
|
|
在小程序后台配置:
|
|||
|
|
|
|||
|
|
```text
|
|||
|
|
URL: https://你的域名/prod-api/app/virtual-pay/callback
|
|||
|
|
Token: 与 WX_VIRTUAL_PAY_CALLBACK_TOKEN 相同
|
|||
|
|
数据格式: JSON
|
|||
|
|
消息加密方式: 明文模式
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
支付发货通知由服务端验签、校验 OpenID/订单/productId/价格后幂等发放资源权益。退款成功通知会撤销对应权益。
|
|||
|
|
回调成功时接口返回 `{"ErrCode":0,"ErrMsg":"success"}`;业务校验或处理失败时返回非零错误码,微信会自动重试。
|
|||
|
|
|
|||
|
|
## 5. 上线检查
|
|||
|
|
|
|||
|
|
1. 后端启动时确认 `WX_VIRTUAL_PAY_ENABLED=true`。
|
|||
|
|
2. 确认道具已审核发布并等待配置生效。
|
|||
|
|
3. 用一条最低价格资源完成真机支付。
|
|||
|
|
4. 检查 `app_virtual_order.status=1` 和 `app_resource_entitlement.status=1`。
|
|||
|
|
5. 重新进入资源详情,确认下载链接只对购买用户返回。
|
|||
|
|
|
|||
|
|
## 6. 启用后台订单管理
|
|||
|
|
|
|||
|
|
执行 `sql/virtual_pay_order_menu.sql`,然后重新登录若依后台。在原“支付订单”菜单的同级位置会出现“虚拟支付订单”,支持按订单号、微信交易号、用户、资源、状态和创建时间查询,并可查看详情或导出 Excel。
|
|||
|
|
|
|||
|
|
虚拟支付订单由微信回调和主动查单流程维护,后台页面只提供查询与导出,不允许人工修改或删除订单。
|