Skip to content

统一转账接口

TIP

可以将商户账号中资金移动到指定账户中,该产品适用商家给企业或个人发放佣金等,但有被灰黑产用于洗钱的的风险,请谨慎使用。

接口说明

参数说明
请求URL/uniPay/allocation/transfer
请求方式POST
请求类型application/json

请求参数

字段名变量名必填类型示例值描述
商户转账号bizTransferNoString100123支付时客户系统传输的分账单号,需要保证唯一,可以为字符文字组合
支付通道channelString20ali_pay要进行支付的通道编码,如微信支付、支付宝支付等。见常量和状态表PayChannelEnum相关的描述
转账金额amountInteger要进行转账的金额,单位为10
标题titleString100转账给小刘
转账原因descriptionString150提成
转账类型transferTypeString20123微信使用,见 TransferTypeEnum
收款人账号类型payeeTypeString20见TransferPayeeTypeEnum
收款人账号payeeAccountString100
收款人姓名payeeNameString50
异步通知地址notifyUrlString200http://abc.cn/noticeCallback异步通知地址,为空则读取管理端的配置,此配置不会生效
商户扩展参数attachString500id=123332商户扩展参数,回调时会原样返回
用户IPclientIpString127.0.0.1支持V4和V6,部分支付方式要求必填,如调用微信支付方式时
随机数值nonceStrString32d112892e382a7093
签名值signString64072695d112892e382a7093b81e6a52af
请求时间reqTimeLong123123121使用时间戳(秒级)

响应结果

提示

业务数据包裹在公共响应参数中的data字段,在code0时才会有返回数据。

字段名变量名必传类型示例值描述
转账号transferNoString发起支付时传输的商户订单号
商户转账号bizTransferNoString支付系统生成的支付订单号
状态statusString见常量和状态表TransferStatusEnum相关的描述
状态码codeInteger0为0表示成功,非0表示失败
错误信息msgString关闭失败状态非0时会有返回值
响应时间resTimeLong123123121服务返回请求的时间,时间戳(秒级)
响应数据签名值signString072695d112892e382a7093b81e6a52af对响应内容进行签名

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));
    }
}
本文档内容版权属于济南易杯光年软件技术有限公司