支付宝api实现转账到单个账号

项目后台需要实现用户提现功能,支付宝平台对应的就是“单笔转账到支付宝账户”。具体实现见代码,无套路!

肯定需要先申请支付宝商户账号相关信息。以下为个人沙箱环境实现代码,生产上只需要修改appid、收款方账号、网关、商户私钥,支付宝公钥等信息为生产参数。

maven项目引入ali的sdk:

<dependency>
    <groupId>com.alipay.sdk</groupId>
    <artifactId>alipay-sdk-java</artifactId>
    <version>3.3.4.ALL</version>
</dependency>
<dependency>
    <groupId>commons-logging</groupId>
    <artifactId>commons-logging</artifactId>
    <version>1.1.1</version>
</dependency>

核心代码如下:

String appOrderNO = "kevin201808080885";            //商户订单号
String payee_account = "kevin3965@sandbox.com";//收款方账户
String payer_show_name = "貔貅叔的店";               //付款方姓名(可选)
String payee_real_name = "沙箱环境";               //收款方真是姓名(可选)
String remark = "貔貅叔的店转账到沙箱环境";              //转账备注,当付款方为企业账户,且转账金额达到50000元,remark不能为空。
Double amount = 2.00;                               //转账金额
String payee_type = "ALIPAY_LOGONID";//收款方账户类型,当前为支付宝登录号,支持邮箱和手机号格式。

/*初始化客户端参数*/
String appId = "2016091100486186";
String CHARSET = "UTF-8";
String ALIPAY_URL = "https://openapi.alipaydev.com/gateway.do";//支付宝网关,当前为沙箱环境
//商户私钥
String APP_PRIVATE_KEY = "MIIEvAIBADANBgkqhkiG9w0BAQEFAASCBKY……";
//支付宝公钥
String ALIPAY_PUBLIC_KEY = "MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAswr9LdJ……";

//初始化客户端
DefaultAlipayClient alipayClien = new DefaultAlipayClient(ALIPAY_URL, appId, APP_PRIVATE_KEY, "JSON", CHARSET, ALIPAY_PUBLIC_KEY, "RSA2");
//实例化提现请求
AlipayFundTransToaccountTransferRequest request = new AlipayFundTransToaccountTransferRequest();

// //构造参数方式一:
// JSONObject jsono = new JSONObject();
// jsono.put("out_biz_no", orderNO);
// jsono.put("payee_type", payee_type);
// jsono.put("amount", amount);
// jsono.put("payer_show_name", payer_show_name);
// jsono.put("payee_account", payee_account);
// jsono.put("payee_real_name", payee_real_name);
// jsono.put("remark", remark);
// //绑定参数到请求对象上
// request.setBizContent(jsono.toJSONString());

//构造参数方式二:
//实例化请求参数model
AlipayFundTransToaccountTransferModel model = new AlipayFundTransToaccountTransferModel();
model.setOutBizNo(appOrderNO);
model.setAmount(amount.doubleValue() + "");
model.setPayeeType(payee_type);
model.setPayeeAccount(payee_account);
model.setPayeeRealName(payee_real_name);
model.setPayerShowName(payer_show_name);
model.setRemark(remark);
//绑定参数model
request.setBizModel(model);
try {
    //执行请求
    AlipayFundTransToaccountTransferResponse response = alipayClien.execute(request);
    System.out.println(JSON.toJSONString(response));
} catch (AlipayApiException e) {
    e.printStackTrace();
}

执行结果如下:

{
    "body": "{\"alipay_fund_trans_toaccount_transfer_response\":{\"code\":\"10000\",\"msg\":\"Success\",\"order_id\":\"20181115110070001502620000235294\",\"out_biz_no\":\"kevin20180808085\",\"pay_date\":\"2018-11-15 14:35:29\"},\"sign\":\"Mdmn0niiKfH4qcoNw3I+68rI/7Ac6/VnErBpHgQQlFzwJLKCHvf4ywYcZZtbefSNG/+E……\"}",    "code": "10000", 
    "errorCode": "10000", 
    "msg": "Success", 
    "orderId": "20181115110070001502620000235294", 
    "outBizNo": "kevin20180808085", 
    "params": {
        "biz_content": "{\"payee_account\":\"kevin3965@sandbox.com\",\"amount\":2.00,\"remark\":\"貔貅叔的店转账到沙箱环境\",\"out_biz_no\":\"kevin20180808085\",\"payee_type\":\"ALIPAY_LOGONID\",\"payer_show_name\":\"貔貅叔的店\"}"
    }, 
    "payDate": "2018-11-15 14:35:29", 
    "success": true
}

说明:10000为请求成功,其他返回值说明见支付宝开发文档

异常响应示例:

{
    "alipay_fund_trans_toaccount_transfer_response": {
        "code": "20000", 
        "msg": "Service Currently Unavailable", 
        "sub_code": "isp.unknow-error", 
        "sub_msg": "系统繁忙"
    }, 
    "sign": "ERITJKEIJKJHKKKKKKKHJEREEEEEEEEEEE"
}

参考:
https://docs.open.alipay.com/api_28/alipay.fund.trans.toaccount.transfer
https://docs.open.alipay.com/common/105806

转载于:https://my.oschina.net/kevin2kelly/blog/2876710

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值