1. 页面概览

GAC 报文工具是 LightSwift 的支付发起端(GAC 客户端软件版原型),路由 /swift/gac,对应源码 action/web/src/views/SwiftGACPage.vue(M5.4c)。GAC 客户端 = 报文生成 + 国密签名 + 加密发送:页面填写付款人/收款人账户、金额、币种、附言与可选任务编号,点「发起支付」后由后端生成 pacs.008 → SM3 摘要 + SM2 签名 → SM4-GCM 加密 → 经星地链路发送至 HCC,并返回支付详情(ID、状态、报文 msg_id、签名、链路结果)。

页面下方为在途支付列表,点击行可展开详情(状态流转、原因、链路结果、SM3 哈希、SM2 签名与 pacs JSON);对处于 SENT 状态的支付可模拟 HCC 回执(ACCP 接受 / RJCT 拒绝)。一句话总结:GAC 报文工具是 LightSwift 端到端支付链路的发起端与状态跟踪台。

2. 访问入口

3. 界面布局

+--------------------------------------------------------------+
| 子导航:工作台 | 报文实验室 | GAC 报文工具(激活) | HCC 管控台     |
+--------------------------------------------------------------+
| 页头:GAC 报文工具  GAC 客户端 = 报文生成+国密签名+加密发送  [刷新] |
+--------------------------------------------------------------+
| 发起支付(card):付款人账户▾/名称  收款人账户▾/名称              |
|   金额(元)/ 币种▾  附言(RmtInf)/ 任务编号(可选)             |
|   [发起支付]                                                    |
+--------------------------------------------------------------+
| 支付详情(card,发起成功后出现):ID/msg_id/金额/付款人/收款人     |
|   链路结果 / SM3 哈希 / SM2 签名                                 |
|   [模拟回执:接受(ACCP)] [模拟回执:拒绝(RJCT)](仅 SENT 可用)|
+--------------------------------------------------------------+
| 在途支付列表(card):ID/状态/msg_id/金额/币种/付款人/收款人/时间  |
|   点击行展开:状态流转 DRAFT→SIGNED→SENT→ACKED/REJECTED + pacs   |
+--------------------------------------------------------------+

各板块职责:发起支付表单收集支付要素并提交到 /payments;支付详情卡展示最近一笔支付的完整要素与国密签名信息,并提供模拟 HCC 回执按钮;在途支付列表展示全部支付并支持行展开查看状态流转与报文结构化内容。

4. 交互元素

控件位置含义与作用
付款人 / 收款人账户下拉框发起支付数据源 GET /admin/accounts,选项显示 id(owner · 币种 · 余额),切换自动回填名称与币种
付款人 / 收款人名称输入发起支付选中账户后自动带出 owner,也可手工修改
金额(元)/ 币种下拉框发起支付金额以元输入,提交转 amount_cents 定点分;币种列表 CNY/EUR/USD/GBP/JPY
附言(RmtInf)/ 任务编号发起支付附言进报文 RmtInf;任务编号留空则不挂航天扩展 Aero(aero 块)
发起支付按钮发起支付POST /payments,成功后刷新支付列表并在详情卡展示结果
模拟回执:接受(ACCP)/ 拒绝(RJCT)支付详情status === 'SENT' 可用,调 POST /payments/{id}/ack 推进到 ACKED / REJECTED
列表行点击 / 展开在途支付列表点击行或「展开」切换详情行(状态流转、原因、链路结果、SM3/SM2、pacs JSON),「收起」折叠

5. 后端关联

API 客户端swiftClient.js,baseURL /swift-api/v1,timeout 30000;成功 {code:0, data} 自动解包。

端点表

方法路径用途
GET/admin/accounts结算账户列表(账户下拉数据源,需 admin)
POST/payments发起支付:{msg_type, dbtr_name/acct, cdtr_name/acct, amount_cents, ccy, rmt_inf[, aero]}
GET/payments在途支付列表
POST/payments/:id/ack模拟 HCC 结算回执 {status: ACCP | RJCT}

关键机制

6. 权限与安全

7. 常见问题与排错

问题 1:账户列表加载失败

现象:付款人/收款人下拉为空,弹「账户列表加载失败」。

原因/admin/accounts 走 admin 中间件,当前账号非 admin,或后端未启动。

处理:用 admin/admin1 登录重试;确认 18084 进程存活。

问题 2:发起支付失败

现象:点「发起支付」报错。

原因:付款人账户余额不足、金额非法(非正数)、或收款/付款账户不存在。

处理:检查金额大于 0、账户下拉选择有效账户(seed 中 LS-CN-0001-BJ 初始 100 万 EUR 可正常扣款)。

问题 3:回执按钮置灰无法点击

现象:「模拟回执」两个按钮不可点。

原因:当前支付状态不是 SENT(如已是 ACKED / REJECTED,或刚发起仍处中间态)。

处理:等支付推进到 SENT 后再操作;已终态支付无需回执。

问题 4:未登录访问 /swift/gac 被弹回 /swift

现象:直接输 URL 进入 GAC 页,闪回工作台登录页。

原因onMounted 检测不到 swift_token,主动重定向。

处理:先在工作台用 admin/admin1 登录,再进入 GAC 页。

8. 已知缺陷与边界

说明
无分页/payments/admin/accounts 全量返回,数据量大时列表变长
详情依赖本地 state支付详情仅展示最近一笔/当前展开行,刷新后需从列表重新展开
账户余额展示单位账户下拉余额为元字符串(后端 AmountStr),非分
无退款/撤销支付只支持 ACCP/RJCT 回执,无取消或退款操作