微信转账接入
这篇解决什么
用商家转账把钱打到用户微信。读完能对上示例提现单、渠道码、以及微信必填的场景报备。
默认端口 48080。先完成 支付功能设计。收款人 openid 来自微信登录,见 三方登录。
示意图:业务单先落库。点转账才调 PayTransferApi。微信可能还要用户确认。
从哪改
| 名称 | 说明 | 仓库路径 |
|---|---|---|
| 模块 | 转账实现 | ruoyi-office/yudao-module-pay/ |
| 示例单 | 表 pay_demo_withdraw,应用 key demo | PayDemoWithdrawServiceImpl |
| 接口 | 创建、发起、回写 | @RequestMapping("/pay/demo-withdraw") |
| 页面 | 提现转账案例 | views/pay/demo/withdraw/index.vue |
| 转账单 | pay_transfer | PayTransferDO |
| 客户端 | 商家转账账单 | AbstractWxPayClient.doUnifiedTransfer |
菜单:接入示例 2161,提现转账案例 2550,路由 /pay/demo/transfer。转账单列表是 2559 /pay/transfer。
示例里类型「微信」会映射成渠道 wx_lite,不是单独的转账编码。应用 demo 要先开通小程序支付渠道,并具备商家转账权限。
userAccount 填收款人 openid,userName 填真实姓名。金额小于 0.3 元时,客户端会丢掉姓名(微信限制)。
微信必须带场景。示例用 PayTransferCreateReqDTO.buildWeiXinChannelExtra1000,场景 1000(现金营销),报备「活动名称 / 奖励说明」。报销场景是 1006。
发起后状态可能是处理中。WAIT_USER_CONFIRM 时会带 packageInfo,要用户在微信里确认收款。同步靠 payTransferSyncJob,业务回写是 POST /pay/demo-withdraw/update-transferred。
模拟渠道不能转账
MockPayClient.doUnifiedTransfer 尚未实现。转账联调必须走微信或支付宝,或先用钱包类型看账本加减。
渠道回调 POST /pay/notify/transfer/{channelId}。yudao.pay.transfer-notify-url 要公网可访问。
配置与操作
走 应用信息(1126,/pay/app)给 demo 开通 wx_lite,并具备商家转账权限。示例类型「微信」映射成渠道 wx_lite,没有单独的转账编码。
保存后走 提现转账案例(2550,/pay/demo/transfer)。userAccount 填收款人 openid,userName 填真实姓名。金额小于 0.3 元时客户端会丢掉姓名。场景示例用 1000(现金营销),报销是 1006。台账在 转账订单(2559,/pay/transfer)。WAIT_USER_CONFIRM 要用户在微信里确认。同步挂 payTransferSyncJob。MockPayClient 不能转账。开启见 支付功能设计。

本系统截图:支付管理 → 应用信息。微信转账复用 wx_lite,不是单独菜单。

本系统截图:接入示例 → 提现转账案例。先建单,再点转账。
