说明:
本帖是利用支付宝沙箱测试“单笔转账到支付宝账户”,demo中会配置个人的沙箱账号信息,方便大家测试。
测试环境:Eclipse+JDK1.6及以上+Tomcat6.0及以上
1.目前仅支持账户余额渠道付款。
2.转账额度
1)单日转出累计额度为100万元。
2)转账给个人支付宝账户,单笔最高5万元;转账给企业支付宝账户,单笔最高10万元。
特殊逻辑注意点:
1)如果商户重复请求转账,支付宝会幂等返回成功结果,商户必须对重复转账的业务做好幂等处理;如果不判断,
存在潜在的风险,商户自行承担因此而产生的所有损失。
2)如果调用alipay.fund.trans.toaccount.transfer掉单时,或返回结果code=20000时,或返回结果code=40004,
sub_code= SYSTEM_ERROR时,请调用alipay.fund.trans.order.query发起查询,如果未查询到结果,
请保持原请求不变再次请求alipay.fund.trans.toaccount.transfer接口。
3)商户处理转账结果时,对于错误码的处理,只能使用sub_code作为后续处理的判断依据,
不可使用sub_msg作为后续处理的判断依据。
参数解读:
1.amount 转账金额,只支持2位小数,小数点前最大支持13位,金额必须大于等于0.1元。
2.payer_show_name付款方姓名(最长支持100个英文/50个汉字)。显示在收款方的账单详情页。如果该字段不传
则默认显示付款方的支付宝认证姓名或单位名称。
3.payee_real_name收款方真实姓名(最长支持100个英文/50个汉字),如果本参数不为空,则会校验该账户在支付宝
登记的实名是否与收款方真实姓名一致。
4.remark转账备注(支持200个英文/100个汉字)。当付款方为企业账户,且转账金额达到(大于等于)50000元,
remark不能为空。收款方可见,会展示在收款用户的收支详情中。
测试流程(声明:本demo仅做参考测试使用)
1.准备工作
a、签约:[url]https://openclub.alipay.com/read.php?tid=276&fid=72[/url]
b、创建应用:[url]https://openclub.alipay.com/read.php?tid=1606&fid=72[/url]
c、生成密钥:[url]https://openclub.alipay.com/read.php?tid=1833&fid=25[/url]
d、下载服务端sdk:[url]https://docs.open.alipay.com/54/103419/[/url]
2.在AlipayConfig文件中配置基本信息
正式环境必须添加对应功能包,否则会报isv权限不足

正式环境测试需要把支付宝网关中的“dev”去掉
正式环境支付宝网关:[url]https://openapi.alipay.com/gateway.do[/url]
3.测试接口
-
AlipayClient alipayClient = new DefaultAlipayClient(AlipayConfig.gatewayUrl, AlipayConfig.app_id, AlipayConfig.merchant_private_key, AlipayConfig.format, AlipayConfig.charset, AlipayConfig.alipay_public_key, AlipayConfig.sign_type);
AlipayFundTransToaccountTransferRequest request = new AlipayFundTransToaccountTransferRequest();
AlipayFundTransToaccountTransferModel model = new AlipayFundTransToaccountTransferModel();
model.setOutBizNo("2018101149542322343211");
model.setPayeeType("ALIPAY_LOGONID");
model.setPayeeAccount("dvnvqi3054@sandbox.com");
model.setAmount("1.10");
model.setRemark("单笔到到支付账户转账备注");
request.setBizModel(model);
AlipayFundTransToaccountTransferResponse response = alipayClient.execute(request);
System.out.println(response.getBody());
if(response.isSuccess()){
System.out.println("调用成功");
} else {
System.out.println("调用失败");
}
返回结果:
{"alipay_fund_trans_toaccount_transfer_response":{"code":"10000","msg":"Success","order_id":"20181011110070001502580000201866","out_biz_no":"2018101149542322343211","pay_date":"2018-10-11 17:13:16"},"sign":"Iim9QVhrzysDQ=="}
pay_date(支付时间):当且仅当转账成功之后,才会返回
order_id(支付宝转账单据号):失败可能不返回也可能返回。
如果大家遇到单笔交易的问题欢迎大家在帖子下面追问,注意一定要提供详细的错误等相关信息方便解答疑问