在工作上让要求写支付宝和微信的提现功能,支付宝我看了下很简单,唯独微信的有点麻烦,这篇文章写支付宝转账提现
从网上看,很多代码都是大同小异,其实也一样,最好还是看支付宝官方给的demo!
而在这里就遇到了一个坑,很多用的alipayClient.execute,而官方给的demo用的是alipayClient.certificateExecute,这里就要注意了,这个方法是需要证书才可以,否则会报错,平常的话用 alipayClient.execute 这个方法就可以了,只需要公钥即可,虽然不填写公钥也可以转账成功,但是会报错,这就是我很奇怪的地方了,难道支付宝没做好么??
/**
*支付宝账号向用户转账工具类(单例)
*@authorAdministrator
*
*/
publicclassAlipay{
//关联配置文件
privatestaticResourceManagerrm=ResourceManager.getInstance();
privatestaticStringgateway=rm.getValue("gateway");//支付宝网关
privatestaticStringappid=rm.getValue("appid");//阿里公共账户的id
privatestaticStringprivate_key=rm.getValue("private_key");//私钥
privatestaticStringinput_charset=rm.getValue("input_charset");//字段类型
privatestaticStringali_public_key=rm.getValue("ali_public_key");//公钥
privatestaticAlipayClientalipayClient;
privatestaticAlipayinstance=newAlipay();
privateAlipay(){
alipayClient=newDefaultAlipayClient(gateway,appid,private_key,"json",input_charset,ali_public_key,"RSA2");
}
publicstaticAlipaygetInstance(){
returninstance;
}
/**
*支付宝向用户转账
*@parambizNo逻辑单号
*@paramamount转账金额"1.21"单位元
*@paramaccount支付宝账号
*@paramuserName支付宝真实姓名
*@return
*/
publicMapalipay2User(StringbizNo,Stringamount,Stringaccount,StringuserName){
MapresultMap=newHashMap();
AlipayVovo=newAlipayVo();
vo.setOut_biz_no(bizNo);
vo.setPayee_type("ALIPAY_LOGONID");
vo.setAmount(amount);
vo.setPayee_account(account);
vo.setPayer_show_name(userName);
vo.setPayee_real_name(userName);
vo.setRemark("支付宝转账");
Stringjson=newGson().toJson(vo);
//设置请求参数
AlipayFundTransToaccountTransferRequestalipayRequest=newAlipayFundTransToaccountTransferRequest();
alipayRequest.setBizContent(json);
AlipayFundTransToaccountTransferResponseresponse=null;
try{
response=alipayClient.execute(alipayRequest);
System.out.println(JSON.toJSONString(response));
if("10000".equals(response.getCode())){
resultMap.put("success","true");
resultMap.put("des","转账成功");
}else{
resultMap.put("success","false");
resultMap.put("des",response.getSubMsg());
}
}catch(AlipayApiExceptione){
e.printStackTrace();
resultMap.put("success","false");
resultMap.put("des","转账失败!");
}
returnresultMap;
}
}