/**
* 支付宝单笔转账
* @param payee_account 收款方账户(支付宝账户)
* @param payee_name 收款方真实姓名
* @param amount 金额(单位:元)
* @param memo 备注
* @param orderNum 订单号
*/
public static Integer ailPayTransfer(String payee_account,String payee_name,String amount,String orderNum,String memo) {
try {
//获取根目录
String filePath=AlipayUtil.class.getResource("/").getPath();
System.out.println(filePath);
CertAlipayRequest certAlipayRequest = new CertAlipayRequest();
certAlipayRequest.setServerUrl(URL);
certAlipayRequest.setAppId(APP_ID);
certAlipayRequest.setPrivateKey(APP_PRIVATE_KEY);
certAlipayRequest.setFormat("json");
certAlipayRequest.setCharset(CHARSET);
certAlipayRequest.setSignType(SIGN_TYPE);
certAlipayRequest.setCertPath(filePath+"appCertPublicKey_2019032963724751.crt");
certAlipayRequest.setAlipayPublicCertPath(filePath+"alipayCertPublicKey_RSA2.crt");
certAlipayRequest.setRootCertPath(filePath+"alipayRootCert.crt");
DefaultAlipayClient alipayClient = new DefaultAlipayClient(certAlipayRequest);
AlipayFundTransUniTransferRequest request = new AlipayFundTransUniTransferRequest();
request.setBizContent("{" +
"\"out_biz_no\":\""+orderNum+"\"," +//商户端的唯一订单号,对于同一笔转账请求,商户需保证该订单号唯一。
"\"trans_amount\":"+amount+"," +//订单总金额,单位为元,精确到小数点后两位,
"\"product_code\":\"TRANS_ACCOUNT_NO_PWD\"," +//收发现金红包固定为:STD_RED_PACKET; 单笔无密转账到支付宝账户固定为:TRANS_ACCOUNT_NO_PWD; 单笔无密转账到银行卡固定为:TRANS_BANKCARD_NO_PWD
"\"biz_scene\":\"DIRECT_TRANSFER\"," + //描述特定的业务场景,可传的参数如下: PERSONAL_COLLECTION:C2C现金红包-领红包; DIRECT_TRANSFER:B2C现金红包、单笔无密转账到支付宝/银行卡
"\"order_title\":\"转账业务的标题\"," +//转账业务的标题,用于在支付宝用户的账单里显示
//"\"original_order_id\":\"20190620110075000006640000063056\"," +//原支付宝业务单号。C2C现金红包-红包领取时,传红包支付时返回的支付宝单号;B2C现金红包、单笔无密转账到支付宝/银行卡不需要该参数。
"\"payee_info\":{" +//收款方信息
"\"identity\":\""+payee_account+"\"," +//参与方的唯一标识
"\"identity_type\":\""+PAYEE_TYPE+"\"," +//参与方的标识类型,目前支持如下类型: 1、ALIPAY_USER_ID 支付宝的会员ID 2、ALIPAY_LOGON_ID:支付宝登录号,支持邮箱和手机号格式
"\"name\":\""+payee_name+"\"" +//参与方真实姓名,如果非空,将校验收款支付宝账号姓名一致性。当identity_type=ALIPAY_LOGON_ID时,本字段必填。若传入该属性,则在支付宝回单中将会显示这个属性
" }," +
"\"remark\":\""+memo+"\"" + //业务备注
" }");
AlipayFundTransUniTransferResponse response = alipayClient.certificateExecute(request);
if(response.isSuccess()){
System.out.println("调用成功");
return 1;
} else {
System.out.println("调用失败");
}
} catch (AlipayApiException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("出错");
}
return 0;
}
这篇博客介绍了在使用支付宝API进行单笔转账时遇到的'提取根证书失败 AlipayRootCert Is Invalid'错误。通过分析Java代码,展示了如何设置和加载支付宝的根证书路径,以及在转账请求中配置必要的参数。遇到此类问题的开发者可以参考此解决方案。

4021

被折叠的 条评论
为什么被折叠?



