[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-81828":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":8,"htmlUrl":8,"language":9,"languages":8,"totalLinesOfCode":8,"stars":10,"forks":11,"watchers":10,"openIssues":11,"contributorsCount":11,"subscribersCount":11,"size":11,"stars1d":11,"stars7d":11,"stars30d":11,"stars90d":11,"forks30d":11,"starsTrendScore":11,"compositeScore":12,"rankGlobal":8,"rankLanguage":8,"license":13,"archived":14,"fork":14,"defaultBranch":15,"hasWiki":14,"hasPages":14,"topics":16,"createdAt":8,"pushedAt":8,"updatedAt":17,"readmeContent":18,"aiSummary":19,"trendingCount":11,"starSnapshotCount":11,"syncStatus":20,"lastSyncTime":21,"discoverSource":22},81828,"posp-rust","pony-maggie\u002Fposp-rust","pony-maggie",null,"Rust",30,0,37,"Other",false,"main",[],"2026-06-12 04:01:35","# posp-rust\n\nposp-rust 是一个用 Rust 的 POSP 支付受理\u002F交换系统。\n\n![系统架构](.\u002Farchitecture.svg)\n\n## 当前能力\n\n- CUP 2005\u002FISO8583 报文解析与组包。\n- POS TCP 服务入口，支持终端发起交易请求。\n- 签到请求转发、签到响应工作密钥保存。\n- QR 支付交易：消费 `305`、撤销\u002F关闭 `307`、查询 `309`。\n- 卡交易识别与初步处理：余额查询、消费、冲正、退货等 legacy 交易族。\n- 未知交易\u002F兜底交易 `999` 的短应答与失败流水记录。\n- legacy 结算请求 `003` 的短应答兼容。\n- 商户参数下载、商户结算、对账、定时任务、分支机构签名密钥等 worker。\n\n## 工作区结构\n\n```text\napps\u002F\n  posp-server\u002F                 # POS TCP 主服务\n  posp-param-service\u002F          # 参数下载服务\n  posp-reconciliation-worker\u002F  # 对账 worker\n  posp-settlement-worker\u002F      # 商户结算 worker\n  posp-sign-branch-key\u002F        # 分支机构签名密钥生成\n  posp-signin\u002F                 # 主动签到工具\n  posp-timer-service\u002F          # 定时任务服务\n  posp-watch-service\u002F          # legacy watch\u002Frestart 工具\n\ncrates\u002F\n  posp-iso8583\u002F                # CUP\u002FISO8583 wire-level 协议\n  posp-msg\u002F                    # typed message model\n  posp-business\u002F               # 交易路由与业务处理\n  posp-db\u002F                     # repository 与 PostgreSQL adapter\n  posp-server\u002F                 # server runtime composition\n  posp-hsm\u002F                    # HSM 命令封装\n  posp-channel\u002F                # TCP\u002FHTTP 通道\n  posp-config\u002F                 # TOML 配置\n  posp-core\u002F                   # 共享错误和基础类型\n  posp-param\u002F                  # 参数下载业务\n  posp-settlement\u002F             # 商户结算业务\n  posp-reconciliation\u002F         # 对账业务\n  posp-timer\u002F                  # 定时调度模型\n\nconfig\u002Fdefault.toml            # 本地开发配置\nmigrations\u002F0001_init_postgres.sql\ntests\u002Ffixtures\u002F                # 合成协议 fixture\n```\n\n## 运行环境\n\n- Rust 2024 edition toolchain。\n- PostgreSQL\n\n\n初始化数据库(密码和database改成自己的)：\n\n```bash\nPGPASSWORD=11111111 psql -h localhost -p 5432 -U test -d medbot \\\n  -v ON_ERROR_STOP=1 -f migrations\u002F0001_init_postgres.sql\n```\n\n## 启动服务\n\n启动 POSP TCP 主服务：\n\n```bash\ncargo run -p posp-server --features postgres-driver\n```\n\n默认监听：\n\n```text\n127.0.0.1:9000\n```\n\n启动检查：\n\n```bash\nPOSP_STARTUP_CHECK=1 cargo run -p posp-server --features postgres-driver\n```\n\n健康检查：\n\n```bash\nPOSP_HEALTH_CHECK=1 cargo run -p posp-server --features postgres-driver\n```\n\n## Worker 示例\n\n```bash\nPOSP_PARAM_CHECK=1 cargo run -p posp-param-service --features postgres-driver\nPOSP_SETTLEMENT_CHECK=1 cargo run -p posp-settlement-worker --features postgres-driver\nPOSP_TIMER_CHECK=1 cargo run -p posp-timer-service --features postgres-driver\nPOSP_RECONCILIATION_CHECK=1 cargo run -p posp-reconciliation-worker --features postgres-driver\nPOSP_SIGN_BRANCH_KEY_CHECK=1 cargo run -p posp-sign-branch-key --features postgres-driver\n```\n\n实际运行 worker 时，请按 `config\u002Fdefault.toml` 中的说明配置 HSM、KMS、CUP、银行文件路径和相关环境变量。\n\n## 测试\n\n推荐在提交前执行：\n\n```bash\ncargo fmt --check\ncargo clippy --workspace --all-targets --all-features -- -D warnings\ncargo test --workspace --all-features\n```\n\nPostgreSQL feature 编译检查：\n\n```bash\ncargo check \\\n  -p posp-server --features postgres-driver \\\n  -p posp-param-service --features postgres-driver \\\n  -p posp-settlement-worker --features postgres-driver \\\n  -p posp-timer-service --features postgres-driver \\\n  -p posp-sign-branch-key --features postgres-driver \\\n  -p posp-reconciliation-worker --features postgres-driver\n```\n\n## 本地黑盒测试思路\n\n可以按下面方式验证主链路：\n\n1. 启动本地 PostgreSQL 并执行 migration。\n2. 在 `ttg_pay_merch`、`merch_info` 写入测试商户。\n3. 启动一个本地 QR HTTP mock，监听 `127.0.0.1:8080`。\n4. 启动 `posp-server --features postgres-driver`。\n5. 用 TCP 客户端向 `127.0.0.1:9000` 发送 CUP\u002FISO8583 报文。\n6. 校验响应 MTI、39 域响应码，以及 `trans` 表流水状态。\n\n已经验证过的典型结果：\n\n- `305` QR 消费：返回 `0210 \u002F 39=00`，并写入 `trans`。\n- `309` QR 查询：返回 `0210 \u002F 39=00`。\n- `307` QR 撤销：返回 `0210 \u002F 39=00`，原交易更新为撤销状态。\n- `101` 卡消费：默认配置下返回 `0210 \u002F 39=06`，因为卡交易转发默认关闭。\n- `999` 未知交易：返回 `0210 \u002F 39=06`，失败流水入库。\n- `003` 结算短应答：返回 `0510 \u002F 39=00`。\n\n## 性能基线\n\n本机 release 构建、PostgreSQL 本地运行、QR 上游为本地 mock HTTP 时，粗略基线如下：\n\n| 场景 | 请求数 \u002F 并发 | 吞吐 | 平均延迟 | p95 | p99 |\n|---|---:|---:|---:|---:|---:|\n| `003` 结算短应答 | 2000 \u002F 50 | 约 1000 rps | 约 49 ms | 约 61 ms | 约 68 ms |\n| `999` 未知交易写库 | 1000 \u002F 30 | 约 1050 rps | 约 28 ms | 约 32 ms | 约 33 ms |\n| `305` QR 消费 DB + HTTP | 500 \u002F 30 | 约 310 rps | 约 94 ms | 约 117 ms | 约 118 ms |\n\n这些数字只代表本机冒烟压测，不代表生产容量。当前主服务是同步处理模型，并发压力下主要体现为排队延迟。\n\n## 配置说明\n\n核心配置文件：\n\n```text\nconfig\u002Fdefault.toml\n```\n\n关键配置：\n\n- `[server].bind`：POS TCP 监听地址。\n- `[database]`：PostgreSQL 连接和 repository 模式。\n- `[cup]`：CUP 上游 TCP 地址。\n- `[hsm]`：HSM 主备地址。\n- `[qr_payment]`：QR HTTP 上游基础地址。\n- `[card_transactions]`：卡交易开关、限额和 MAC 配置。\n\n生产环境建议通过部署系统注入配置，不要直接使用本地开发密码。\n\n## 许可证\n\n本项目采用双许可证：\n\n- MIT License","posp-rust 是一个用 Rust 编写的支付受理和交换系统。它支持 CUP 2005\u002FISO8583 报文解析与组包，提供 POS TCP 服务入口以处理终端发起的交易请求，并具备签到请求转发、QR 支付交易处理、卡交易识别等功能。此外，项目还包含商户参数下载、对账、结算等后台任务。该系统采用模块化设计，使用 PostgreSQL 作为数据库，并通过 HSM 命令封装确保数据安全。适用于需要高效且安全地处理多种支付交易类型的场景，如银行、第三方支付平台及大型零售企业。",2,"2026-06-11 04:06:52","CREATED_QUERY"]