Files
uniprop-manual/prop-acc/scenarios/adhoc-flow-b-miniapp-alipay.md

140 lines
4.8 KiB
Markdown
Raw Normal View History

2026-05-25 13:44:33 +08:00
---
P3+P4+P5: prop-acc 迁移到多域 UDAS,新建 4 域骨架与顶层入口 P3 — prop-acc 30 文件迁移到多域 UDAS 结构: - 3 概念:旧 prop-acc/一次性收费/概念-*.md → prop-acc/concepts/adhoc-*.md (kebab-case 英文) - 25 场景:旧 prop-acc/一次性收费/场景-*.md → prop-acc/scenarios/adhoc-*.md - 子文件夹 index.md → prop-acc/maps/knowledge-map.md (域内地图) - prop-acc/index.md 重写为域首页(embed knowledge-map) - 删除空目录 prop-acc/一次性收费/ 每个迁移文件: - title 加域前缀 "prop-acc · " - aliases 含原 title (带空格) + 原文件名 basename (无空格),保证既有 [[...]] 引用解析 - status: stable → 已发布 / draft → 草稿 (UDAS 中文枚举) - last_reviewed → last_review (UDAS 字段名) - tags 补加 UDAS 类型分类 "概念" / "场景" - 路径式 WikiLink 清除: * [[../预存款/index|XX]] → [[预存款]] * [[一次性收费/index|XX]] → [[prop-acc · 一次性收费索引]] P4 — 4 个新业务域骨架: - community (社区管理) - administrative (行政人事) - patrol (巡护工单) - resident-portal (业户门户) 每域含 index.md (域首页) + maps/knowledge-map.md (域内地图模板)。 另补 cross/index.md + cross/maps/cross-domain-map.md。 P5 — 顶层入口: - index.md: 站点首页 (Quartz 着陆点),embed domain-map - maps/domain-map.md: 5 业务域 + cross 的索引表 迁移后状态: - 共 50 篇 .md (30 原 + 8 跨域 stub + 4 域 index + 4 域 map + 2 cross + 2 root) - 残留路径式 WikiLink: 0 - 残留英文 status: 0 - 残留 last_reviewed 字段: 0 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-25 20:44:43 +08:00
title: prop-acc · 场景 - B 流 - 小程序下单 + 支付宝
aliases:
- 场景 - B 流 - 小程序下单 + 支付宝
- 场景-B流-小程序下单+支付宝
2026-05-25 13:44:33 +08:00
tags:
P3+P4+P5: prop-acc 迁移到多域 UDAS,新建 4 域骨架与顶层入口 P3 — prop-acc 30 文件迁移到多域 UDAS 结构: - 3 概念:旧 prop-acc/一次性收费/概念-*.md → prop-acc/concepts/adhoc-*.md (kebab-case 英文) - 25 场景:旧 prop-acc/一次性收费/场景-*.md → prop-acc/scenarios/adhoc-*.md - 子文件夹 index.md → prop-acc/maps/knowledge-map.md (域内地图) - prop-acc/index.md 重写为域首页(embed knowledge-map) - 删除空目录 prop-acc/一次性收费/ 每个迁移文件: - title 加域前缀 "prop-acc · " - aliases 含原 title (带空格) + 原文件名 basename (无空格),保证既有 [[...]] 引用解析 - status: stable → 已发布 / draft → 草稿 (UDAS 中文枚举) - last_reviewed → last_review (UDAS 字段名) - tags 补加 UDAS 类型分类 "概念" / "场景" - 路径式 WikiLink 清除: * [[../预存款/index|XX]] → [[预存款]] * [[一次性收费/index|XX]] → [[prop-acc · 一次性收费索引]] P4 — 4 个新业务域骨架: - community (社区管理) - administrative (行政人事) - patrol (巡护工单) - resident-portal (业户门户) 每域含 index.md (域首页) + maps/knowledge-map.md (域内地图模板)。 另补 cross/index.md + cross/maps/cross-domain-map.md。 P5 — 顶层入口: - index.md: 站点首页 (Quartz 着陆点),embed domain-map - maps/domain-map.md: 5 业务域 + cross 的索引表 迁移后状态: - 共 50 篇 .md (30 原 + 8 跨域 stub + 4 域 index + 4 域 map + 2 cross + 2 root) - 残留路径式 WikiLink: 0 - 残留英文 status: 0 - 残留 last_reviewed 字段: 0 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-25 20:44:43 +08:00
- 场景
2026-05-25 13:44:33 +08:00
- prop-acc
- 一次性收费
- 业务场景
- B流
audience:
- 业户
- 业务人员
P3+P4+P5: prop-acc 迁移到多域 UDAS,新建 4 域骨架与顶层入口 P3 — prop-acc 30 文件迁移到多域 UDAS 结构: - 3 概念:旧 prop-acc/一次性收费/概念-*.md → prop-acc/concepts/adhoc-*.md (kebab-case 英文) - 25 场景:旧 prop-acc/一次性收费/场景-*.md → prop-acc/scenarios/adhoc-*.md - 子文件夹 index.md → prop-acc/maps/knowledge-map.md (域内地图) - prop-acc/index.md 重写为域首页(embed knowledge-map) - 删除空目录 prop-acc/一次性收费/ 每个迁移文件: - title 加域前缀 "prop-acc · " - aliases 含原 title (带空格) + 原文件名 basename (无空格),保证既有 [[...]] 引用解析 - status: stable → 已发布 / draft → 草稿 (UDAS 中文枚举) - last_reviewed → last_review (UDAS 字段名) - tags 补加 UDAS 类型分类 "概念" / "场景" - 路径式 WikiLink 清除: * [[../预存款/index|XX]] → [[预存款]] * [[一次性收费/index|XX]] → [[prop-acc · 一次性收费索引]] P4 — 4 个新业务域骨架: - community (社区管理) - administrative (行政人事) - patrol (巡护工单) - resident-portal (业户门户) 每域含 index.md (域首页) + maps/knowledge-map.md (域内地图模板)。 另补 cross/index.md + cross/maps/cross-domain-map.md。 P5 — 顶层入口: - index.md: 站点首页 (Quartz 着陆点),embed domain-map - maps/domain-map.md: 5 业务域 + cross 的索引表 迁移后状态: - 共 50 篇 .md (30 原 + 8 跨域 stub + 4 域 index + 4 域 map + 2 cross + 2 root) - 残留路径式 WikiLink: 0 - 残留英文 status: 0 - 残留 last_reviewed 字段: 0 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-25 20:44:43 +08:00
status: 已发布
last_review: 2026-05-25
2026-05-25 13:44:33 +08:00
code_version: 2026-05-22
---
# 场景:小程序下单 + 支付宝
业户在小程序内下单,**用支付宝(而非微信)** 完成支付。
> [!info] 几乎与微信流程一致
> 这个场景与 [[场景-B流-小程序下单+微信支付]] 99% 相同。本文档只描述**两种支付渠道的差异**。
## 业户视角
### 与微信支付流程的区别
| 维度 | 微信支付 | 支付宝 |
|---|---|---|
| 入口 | 微信小程序内拉起微信支付 | 微信小程序中**通过 H5 跳转支付宝**(或扫支付宝二维码)|
| 跳转体验 | 流畅(同一应用内) | 略多 1-2 步(跨应用)|
| 适用业户 | 偏年轻用户、华南地区 | 全国通用、商务用户更习惯 |
| 商户费率 | 0.2-0.6% | 0.55% |
| 回调速度 | 秒级 | 秒级(偶尔几十秒) |
### 业户实际操作
1. 在小程序选项目下单(完全相同)
2. 提交后选择"支付宝支付"
3. **微信小程序提示**:"即将跳转到支付宝完成支付"
4. 点确认 → 自动跳转支付宝 App
5. 输入支付宝密码 / 指纹完成支付
6. **自动跳回小程序**,显示支付成功
> [!success] 完成
> 跨应用跳转 → 回跳整个过程通常 < 10 秒。
## 业务人员视角
### 与微信流程的唯一区别:对账
> [!warning] 月底对账要分账户
> - 微信支付的款进**物业微信商户号**
> - 支付宝的款进**物业支付宝商户号**
>
> 两个商户号一般绑定**两个不同的银行账户**。月底对账时,要分别拉两边的流水。
在 Filament 后台,`CollectionOrder.payment_channel` 字段区分了不同支付方式:
```
collection_orders
├── payment_channel: "微信支付" → 对账走微信流水
└── payment_channel: "支付宝" → 对账走支付宝流水
```
财务月底查询:
```sql
-- 微信渠道
SELECT SUM(actual_amount) FROM acc_collection_orders
WHERE collection_completed_at BETWEEN '2026-05-01' AND '2026-05-31'
AND payment_method LIKE '%微信%';
-- 支付宝渠道
SELECT SUM(actual_amount) FROM acc_collection_orders
WHERE collection_completed_at BETWEEN '2026-05-01' AND '2026-05-31'
AND payment_method LIKE '%支付宝%';
```
详见 [[场景-审计-月底现金对账]]。
## 系统流程
```mermaid
sequenceDiagram
participant 业户
participant 小程序
participant 系统
participant 支付宝
业户->>小程序: 下单,选支付宝
小程序->>系统: POST /api/ad-hoc-events
系统-->>小程序: 订单号 CO-xxx + 支付宝拉起参数
Note over 小程序,支付宝: 跨应用跳转
小程序->>支付宝: 拉起支付(H5/SDK)
业户->>支付宝: 密码 / 指纹
支付宝->>系统: POST /webhook/alipay
系统->>系统: MarkAdHocEventPaidAction (payment_channel='支付宝')
系统->>系统: 同微信流程,翻 Completed + 生成 Receipt
系统-->>小程序: 推通知
支付宝-->>业户: 跳回小程序
小程序-->>业户: 显示已付款
```
## 常见问题
> [!question] 业户没装支付宝怎么办?
> 微信小程序内拉起支付宝**要求业户手机里装了支付宝 App**。没装的话会失败。变通方案:让业户选微信支付,或换 [[场景-跨渠道补缴|跨渠道到前台]] 现金/POS。
> [!question] 支付宝跳转回小程序失败怎么办?
> 这种情况钱已经扣了但小程序没显示成功。**支付宝有"支付成功通知"** 推送给业户,业户在支付宝里能看到。系统的支付宝回调一般 30 秒内能到,**让业户等等**,不要重复支付。
> [!question] 为什么不直接做支付宝小程序?
> 单独做一个支付宝小程序意味着双套代码,运营也要双倍发文章。**等业户群超过 30% 用支付宝时再考虑**。当前**微信小程序 + 跳转支付宝**是最划算的方案。
> [!question] 业务人员能在后台手动加一笔"支付宝退款"吗?
> 当前不在 UI 暴露(同微信)。退款流程:
> 1. 业户申诉
> 2. 业务人员去支付宝商户后台手动发起退款(支付宝平台操作)
> 3. 在 Filament 后台对应订单走 [[场景-已收款作废]] 标记
>
> 等支付网关 webhook 上线后,可以自动化。
## 相关概念
- [[概念-A流与B流]]
- [[概念-CollectionOrder与Receipt]] — `payment_method` 字段区分渠道
- [[场景-B流-小程序下单+微信支付]] — 标准 B 流
- [[场景-审计-月底现金对账]] — 多渠道对账
## 异常分支
- 支付完成但小程序卡死 → 系统会按 webhook 数据为准,后台可见已收款
- 想取消未付订单 → 场景-取消-业户改主意主动撤单