Appearance
统一转账接口 ¶
TIP
可以将商户账号中资金移动到指定账户中,该产品适用商家给企业或个人发放佣金等,但有被灰黑产用于洗钱的的风险,请谨慎使用。
接口说明 ¶
参数 | 说明 |
---|---|
请求URL | /uniPay/allocation/transfer |
请求方式 | POST |
请求类型 | application/json |
请求参数 ¶
字段名 | 变量名 | 必填 | 类型 | 示例值 | 描述 | |
---|---|---|---|---|---|---|
商户转账号 | bizTransferNo | 是 | String | 100 | 123 | 支付时客户系统传输的分账单号,需要保证唯一,可以为字符文字组合 |
支付通道 | channel | 是 | String | 20 | ali_pay | 要进行支付的通道编码,如微信支付、支付宝支付等。见常量和状态表PayChannelEnum相关的描述 |
转账金额 | amount | 是 | Integer | 要进行转账的金额,单位为分, | 10 | |
标题 | title | 是 | String | 100 | 转账给小刘 | |
转账原因 | description | 否 | String | 150 | 提成 | |
转账类型 | transferType | 否 | String | 20 | 123 | 微信使用,见 TransferTypeEnum |
收款人账号类型 | payeeType | 是 | String | 20 | 见TransferPayeeTypeEnum | |
收款人账号 | payeeAccount | 是 | String | 100 | ||
收款人姓名 | payeeName | 否 | String | 50 | ||
异步通知地址 | notifyUrl | 否 | String | 200 | http://abc.cn/noticeCallback | 异步通知地址,为空则读取管理端的配置,此配置不会生效 |
商户扩展参数 | attach | 否 | String | 500 | id=123332 | 商户扩展参数,回调时会原样返回 |
用户IP | clientIp | 否 | String | 127.0.0.1 | 支持V4和V6,部分支付方式要求必填,如调用微信支付方式时 | |
随机数值 | nonceStr | 否 | String | 32 | d112892e382a7093 | |
签名值 | sign | 否 | String | 64 | 072695d112892e382a7093b81e6a52af | |
请求时间 | reqTime | 是 | Long | 123123121 | 使用时间戳(秒级) |
响应结果 ¶
提示
业务数据包裹在公共响应参数
中的data
字段,在code
为0
时才会有返回数据。
字段名 | 变量名 | 必传 | 类型 | 示例值 | 描述 |
---|---|---|---|---|---|
转账号 | transferNo | 是 | String | 发起支付时传输的商户订单号 | |
商户转账号 | bizTransferNo | 是 | String | 支付系统生成的支付订单号 | |
状态 | status | 否 | String | 见常量和状态表TransferStatusEnum相关的描述 | |
状态码 | code | 是 | Integer | 0 | 为0表示成功,非0表示失败 |
错误信息 | msg | 否 | String | 关闭失败 | 状态非0时会有返回值 |
响应时间 | resTime | 是 | Long | 123123121 | 服务返回请求的时间,时间戳(秒级) |
响应数据签名值 | sign | 是 | String | 072695d112892e382a7093b81e6a52af | 对响应内容进行签名 |
HTTP请求示例 ¶
请求参数 ¶
json
{
"bizTransferNo": "T1719742312327",
"channel": "ali_pay",
"amount": 500,
"title": "测试转账",
"reason": "我要转个账",
"payeeType": "ali_open_id",
"payeeAccount": "065a9aEjER9Fa__hxYyvgYDlkhUiw_6RINhYHB2oegpWAo5",
"clientIp": "127.0.0.1",
"sign": "ba245027b87bc8037637a4f7fd794f90fad217be69a850a3b7ed22d77b28eb7f",
"reqTime": 1719742312
}
响应参数(成功) ¶
json
{
"msg": "success",
"code": 0,
"data": {
"transferNo": "DEVT24060201494863000002",
"bizTransferNo": "A60434",
"status": "allocation_processing",
"code": 0,
"resTime": 1717264189,
"sign": "a29b68e5d89ec6c7f2985a2680bd22b40cbffd79b4e0d8d0ec331e9b6337e1b1"
},
"traceId": "inOL4mbRjzLa"
}
响应参数(失败) ¶
json
{
"msg": "success",
"code": 0,
"data": {
"code": 1,
"msg": "用户未找到",
"resTime": 1717261697,
"sign": "bd3fef1a43a017edf57359035a3f8fce2dbd3c32f5bfb43360e9ef3d913c6413"
},
"traceId": "rkq7V4y04zG2"
}
SDK请求示例 ¶
提示
使用SDK可以简化接入支付的速度
java
package cn.daxpay.single.sdk.payment;
import cn.daxpay.single.sdk.code.PayChannelEnum;
import cn.daxpay.single.sdk.code.SignTypeEnum;
import cn.daxpay.single.sdk.code.TransferPayeeTypeEnum;
import cn.daxpay.single.sdk.model.transfer.TransferModel;
import cn.daxpay.single.sdk.net.DaxPayConfig;
import cn.daxpay.single.sdk.net.DaxPayKit;
import cn.daxpay.single.sdk.param.transfer.TransferParam;
import cn.daxpay.single.sdk.response.DaxPayResult;
import cn.hutool.json.JSONUtil;
import org.junit.Before;
import org.junit.Test;
/**
* 转账测试
* @author xxm
* @since 2024/6/20
*/
public class TransferOrderTest {
@Before
public void init() {
// 初始化支付配置
DaxPayConfig config = DaxPayConfig.builder()
.serviceUrl("http://127.0.0.1:9000")
.signSecret("123456")
.signType(SignTypeEnum.HMAC_SHA256)
.build();
DaxPayKit.initConfig(config);
}
/**
* 发起转账操作
*/
@Test
public void transfer() {
// 构建参数
TransferParam param = new TransferParam();
param.setBizTransferNo("T"+System.currentTimeMillis());
param.setTitle("测试转账");
param.setReason("我要转个账");
param.setAmount(500);
param.setChannel(PayChannelEnum.ALI.getCode());
param.setPayeeType(TransferPayeeTypeEnum.ALI_OPEN_ID.getCode());
param.setClientIp("127.0.0.1");
// 使用OpenId
param.setPayeeAccount("065a9aEjER9Fa__hxYyvgYDlkhUiw_6RINhYHB2oegpWAo5");
// 发起请求
DaxPayResult<TransferModel> execute = DaxPayKit.execute(param);
System.out.println(JSONUtil.toJsonStr(execute));
}
}