目的:让斗拱商户配置从运行环境注入,避免源码硬编码商户号、私钥和公钥。
操作:通过 HuiFuProperties 读取 huifu.*,配置项在 application.yml 中映射到 HUIFU_PRODUCT_ID、HUIFU_SYS_ID、HUIFU_RSA_PRIVATE_KEY、HUIFU_RSA_PUBLIC_KEY、HUIFU_ID、HUIFU_UPPER_HUIFU_ID、HUIFU_CALLBACK_PATH。
影响范围:影响所有斗拱接口调用,包括支付创建、退款、提现、分账、进件和回调验签。
验证:执行 mvn -DskipTests compile,确认配置类能正常编译;运行环境需要确认这些环境变量非空。
注意:生产密钥必须通过环境变量或安全配置中心注入,不能提交到 Git。
目的:后端生成斗拱微信小程序支付或支付宝支付请求,避免前端直接拼接支付参数。
操作:DouGongPayUtil 统一生成 req_seq_id、req_date、notify_url、trans_amt,再按斗拱要求生成 RSA 签名并请求 /v4/trade/payment/create。
影响范围:影响后续小程序订单从 PENDING_PAYMENT 进入真实支付流程,但当前还没有替换 MiniTourOrderCommandService.confirmPayment 的本地确认逻辑。
验证:调用 wxPayOrder 或 aliPayOrder 后应拿到斗拱返回体和本地追加的 req_seq_id;微信支付响应会额外缓存到 Redis 五分钟。
注意:创建支付订单不等于本地订单已支付,本地订单状态必须等斗拱回调验签成功后再更新。
目的:确保支付、退款、提现回调确实来自斗拱平台,防止伪造回调修改本地订单或资金状态。
操作:DouGongNotifyController 接收 /base/dougong/**,校验 sign 和 resp_data,使用 HUIFU_RSA_PUBLIC_KEY 验签;验签失败返回 FAIL。
影响范围:影响 /base/dougong/pay-notify、/base/dougong/refund-logistics、/base/dougong/refund-crosscity、/base/dougong/encashment。
验证:安全配置已放行 /base/dougong/**;回调成功时日志会记录 req_seq_id、org_req_seq_id、trans_stat。
注意:当前回调只记录日志,后续要按 req_seq_id 做幂等落库,更新 tour_order.payment_order_no、tour_order.status、tour_order.payment_time 等字段。
目的:通过斗拱发起原路退款,并保留退款回调用于最终确认。
操作:DouGongRefundBiz.refund 组装 req_seq_id、org_req_date、org_req_seq_id、ord_amt 和退款回调地址。
影响范围:影响订单取消、自动退款、后台退款等后续退款链路。
验证:请求斗拱退款接口后应返回 resp_code 和 resp_desc;最终退款成功以退款回调 trans_stat=S 为准。
注意:退款请求成功只代表斗拱受理,不能立即把本地退款状态当作最终成功。
目的:支持导游电子账户余额提现到绑定银行卡。
操作:DouGongWithdrawBiz.encashment 组装提现金额、提现方汇付 ID、取现卡序列号、D1 到账类型和提现回调地址,并按完整报文签名。
影响范围:影响导游余额、提现单审核、财务流水和提现回调处理。
验证:斗拱返回体应包含提现受理结果;最终到账状态以 /base/dougong/encashment 回调为准。
注意:当前工具只负责调用斗拱,导游余额扣减和提现单状态变更必须放到业务服务中做幂等处理。
目的:把斗拱工具真正接入本项目订单和资金模型。
操作:下一步需要新增“创建斗拱支付订单”和“支付回调确认订单”服务,并在回调中按 req_seq_id 查本地订单。
影响范围:涉及 MiniTourOrderCommandService.confirmPayment、TourOrder 支付字段、退款字段、导游收益和财务流水。
验证:支付成功回调后订单只能从 PENDING_PAYMENT 流转到 PENDING_ACCEPT,重复回调不应重复入账或重复派单。
注意:在回调落库完成前,不要把斗拱支付创建接口直接暴露为“支付成功”接口。