# API Contracts: 線下轉賬支付 **日期**:2026-09-03 | **风格**:沿用项目规范(`@RequestHeader String token`、`@RequestParam`/`@RequestBody` 显式注解、DTO 承载) ## 新增接口(后端) ### 1. 商家收款账户查询(收银台展示用) ``` GET /chanting/store/bankInfo?id={storeId} ``` - 鉴权:匿名(`@Anonymous`,同 getstore 风格) - 逻辑:`pos_store.id=storeId → user_id → info_user`,取 bankAccountName / bankName / bankAccountNo - 返回: ```json // 三项齐全 { "code": 200, "data": { "accountName": "AMAZEWAY LIMITED", "bankName": "國泰世華銀行", "accountNo": "1234567890" } } // 任一为空 → 收银台隐藏「線下支付」选项 { "code": 200, "data": null } ``` - App 用法:选项显示条件 = `data != null`;展开卡片显示三字段(参考原型),建议账号行带复制按钮。 ### 2. 商家确认转账收款 ``` GET /system/orderShOprate/confirmTransferPayment?id={orderId} Header: token(商家,须有该店权限 requireMerchantOrderAccess) ``` - 逻辑(镜像 confirmCashPayment): 1. 校验 `payType == 6`,否则 `no.order.paytype.not.transfer` 2. 校验 `state != 4`(已取消),否则 `no.order.transfer.cancelled` 3. 校验 `payStatus != 1`,否则 `no.order.transfer.already.paid` 4. `payStatus` 0→1;`orderLogHelper` 记「商家{名}确认转账收款」 5. 外送单(type=0)调 `deliveryOrderNotificationService.notifyOrderAvailable(order)` 推送附近骑手 - 返回:`{ "code": 200 }` 或国际化错误 ### 3. 骑手接单门禁(修改现有接口) `GET /system/orderQsOprate/acceptOrder`(现有)增加校验: - `payType == 6 && payStatus != 1` → 拒绝,`no.order.transfer.not.paid`(「商家确认收款后骑手才能接单」) ## 复用接口(App 端直接用,无改动) | 接口 | 用途 | |---|---| | `POST /infouser/user/../createOrder`(paymentMethod="6") | 转账单创建,透传 payType=6,无需后端改动 | | 骑手 `orderList`(tab=newTask) | 已过滤 payStatus=1,转账单确认前不可见(零改动) | | `GET /chanting/store/bankList` | 026 已交付,银行名称字典(商家资料侧用) | ## 后端国际化 key(五份 properties) `ruoyi-admin/src/main/resources/i18n/messages{,_zh_CN,_zh_TW,_en_US,_vi}.properties`: | key | zh_CN 文案 | |---|---| | no.order.paytype.not.transfer | 该订单不是转账支付订单 | | no.order.transfer.cancelled | 订单已取消,不能确认收款 | | no.order.transfer.already.paid | 该订单已确认收款 | | no.order.transfer.not.paid | 商家确认收款后骑手才能接单 | ## 商家 Web(foodie-store) - `index.vue` `paymentTypeLabel` 映射加 `6: 'OfflineTransfer'`;i18n `index` 命名空间四语言: - zh:线下转账 / tw:轉賬支付 / en:Transfer Payment / vi:Chuyển khoản ## App 端交互说明(交付给 App 团队,不在本期代码内) 1. **收银台**:进入时调 `bankInfo`,`data != null` 才显示「線下支付」选项(副标题「轉賬後請聯繫客服確認」);选中展开红色提示(轉帳完成後,請透過即時通訊客服發送憑證…)+ 灰底卡片三行(帳戶名稱/銀行名稱/銀行帳戶);提交下单 `paymentMethod=6`。 2. **商家 App**:转账单显示「轉賬支付」标签;待收款单提供「確認收款」按钮调 `confirmTransferPayment`;确认后订单进入正常接单/出餐流程。 3. **骑手 App**:无需改动——未确认单本来不可见不可接;确认后单出现在抢单列表并收到推送。