支付宝转账最新接口(证书版)的封装
一,利用支付宝SDK做了精简demo实例
1,所需Jar包有如下共5个:
2,配置文件alipay.properties
#支付宝配置 alipay config
#应用ID,您的APPID,收款账号既是您的APPID对应支付宝账号
alipayconfig.app_id=
#商户私钥,您的PKCS8格式RDA2私钥
alipayconfig.merchant_private_key=
#应用公钥证书aliAppCertPublicKey=绝对路径\\config\\appCertPublicKey_appid.crt
#支付宝公钥证书
aliCertPublicKey=绝对路径\\config\\alipayCertPublicKey_RSA2.crt
#支付宝根证书aliRootCert=绝对路径\\config\\alipayRootCert.crt
#服务器异步通知页面地址 需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问
alipayconfig.notify_url=
#页面跳转同步通知地址
alipayconfig.return_url=
二,其他web项目的集成步骤与调用
1,导入如下所需的5个Jar包到lib目录下
2,更改配置文件alipay.properties中的参数值为自己的
#支付宝配置 alipay config
#应用ID,您的APPID,收款账号既是您的APPID对应支付宝账号
alipayconfig.app_id=
#商户私钥,您的PKCS8格式RDA2私钥
alipayconfig.merchant_private_key=
#应用公钥证书aliAppCertPublicKey=绝对路径\\config\\appCertPublicKey_appid.crt
#支付宝公钥证书
aliCertPublicKey=绝对路径\\config\\alipayCertPublicKey_RSA2.crt
#支付宝根证书aliRootCert=绝对路径\\config\\alipayRootCert.crt
#服务器异步通知页面地址 需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问
alipayconfig.notify_url=
#页面跳转同步通知地址
alipayconfig.return_url=
3,转账方法的调用,主要是AlipayCash类
加载配置文件和调用分装后的转账接口alipay2User
//关联配置文件
private static AlipayConfig rm =newAlipayConfig();
private static String gateway=rm.gatewayUrl;//支付宝网关
private static String appid=rm.app_id;//阿里公共账户的id
private static String private_key=rm.merchant_private_key;//私钥
private static String input_charset=rm.charset;//字段类型
private static String ali_public_key=rm.alipay_public_key;//公钥
private static String app_cert_sn;//app公匙序列号
private static String alipay_root_cert_sn;//根证书序列号
private static AlipayClient alipayClient;
/**
* 支付宝向用户转账
* @param bizNo 逻辑单号
* @param amount 转账金额 "1.21"单位元
* @param identity 支付宝账号
* @param name 支付宝真实姓名
* @return
*/
public Map alipay2User(StringbizNo,Stringamount,Stringidentity, Stringname)
{
Map resultMap=newHashMap();
AliPayVo vo =newAliPayVo();
vo.setOut_biz_no(bizNo);
vo.setProduct_code("TRANS_ACCOUNT_NO_PWD");//单笔无密转账到支付宝账户.
setPayee_type("ALIPAY_LOGONID");
vo.setBiz_scene("DIRECT_TRANSFER");//单笔无密转账到支付宝/银行卡, B2C现金红包;
vo.setTrans_amount(amount);
vo.setPayee_info(getAliPayInfoVo(identity,name));
vo.setRemark("支付宝转账");
String json =newGson().toJson(vo);// 设置请求参数
AlipayFundTransUniTransferRequest alipayRequest =newAlipayFundTransUniTransferRequest();
alipayRequest.setBizContent(json);
CertAlipayRequest certAlipayRequest =newCertAlipayRequest();
certAlipayRequest.setServerUrl(gateway);
certAlipayRequest.setAppId(appid);
certAlipayRequest.setPrivateKey(private_key);
certAlipayRequest.setFormat("json");
certAlipayRequest.setCharset(input_charset);
certAlipayRequest.setSignType("RSA2");//上传csr文件后 完成配置,支付宝后台能下载3个文件 // 应用公匙证书certAlipayRequest.setCertPath(rm.aliAppCertPublicKey);// 支付宝公匙证书
certAlipayRequest.setAlipayPublicCertPath(rm.aliCertPublicKey);//支付宝 根 公匙证书
certAlipayRequest.setRootCertPath(rm.aliRootCert);
AlipayFundTransUniTransferResponse response =null;
try{alipayClient =newDefaultAlipayClient(certAlipayRequest);
response = alipayClient.certificateExecute(alipayRequest);
if("10000".equals(response.getCode())){
resultMap.put("success", "true");
resultMap.put("des", "转账成功");
System.out.println("转账成功:转给了"+identity+"-"+name+" "+amount+"元");
}else{
resultMap.put("success", "false");
resultMap.put("des", response.getSubMsg());
}
} catch (AlipayApiException e) {
e.printStackTrace();
resultMap.put("success", "false");
resultMap.put("des", "转账失败!");
System.out.println("转账失败:异常原因:"+response.getSubMsg());
}
return resultMap;
}
执行AlipayCash.alipay2User 就会实现转账功能。
应用实例:AlipayCash alipay=newAlipayCash();alipay.alipay2User(findwithdraw.getOutBizNo(),findwithdraw.getMoney().toString(),findwithdra