近期公司app要接入账户余额提现的功能,我负责调通支付宝和微信的接口。期间遇到了一些坑,支付宝的还好,文档比较健全,调用也比较简单。微信的就太坑啦。本篇只把我介入支付宝的过程叙述一下。
1.需求类似于这样
2.首先登陆到支付宝商户平台平台:https://b.alipay.com/index.htm
3.进去【开发者中心】--》【网页、移动应用】
4.选择支付接入,然后创建一个应用
5.在创建应用的界面,上传应用图标(注意最好是正式点的图标,不能是人或者动物的),选择单笔转账到支付宝账户的功能(需要用到什么就够选什么功能),填上支付宝公钥(公钥生成方式见支付宝文档)。之后提交审核就可以了,审核之后appId就可用了。
6.然后参考支付宝的api文档进行开发,文档地址:https://docs.open.alipay.com/309/106236/,比较重要的就是生成公钥私钥的时候一定要把公钥私钥备份好,不能丢了。私钥写到本地程序里面,生成的公钥设置到步骤5的应用里面,应用审核通过之后会有一个【支付宝公钥】,这个公钥再写到程序的公钥里面。大体思路是这样,详细的待会代码见~~
7.支付宝审核阶段可以用沙箱测试环境进行测试:我的沙箱界面是
沙箱账号:
8.上代码:很简单的~~
package com.qlwb.business.payment;
import java.util.HashMap;
import java.util.Map;
import com.alibaba.fastjson.JSON;
import com.alipay.api.AlipayApiException;
import com.alipay.api.AlipayClient;
import com.alipay.api.DefaultAlipayClient;
import com.alipay.api.request.AlipayFundTransToaccountTransferRequest;
import com.alipay.api.response.AlipayFundTransToaccountTransferResponse;
import com.aspire.boc.util.ResourceManager;
import com.google.gson.Gson;
import com.qlwb.business.payment.vo.AlipayVo;
/**
* 支付宝账号向用户转账工具类(单例)
* @author Administrator
*
*/
public class Alipay {
//关联配置文件
private static ResourceManager rm = ResourceManager.getInstance();
private static String gateway=rm.getValue("gateway");//支付宝网关
private static String appid=rm.getValue("appid");//阿里公共账户的id
private static String private_key=rm.getValue("private_key");//私钥
private static String input_charset=rm.getValue("input_charset");//字段类型
private static String ali_public_key=rm.getValue("ali_public_key");//公钥
private static AlipayClient alipayClient;
private static Alipay instance=new Alipay();
private Alipay(){
alipayClient=new DefaultAlipayClient(gateway, appid, private_key, "json",input_charset,ali_public_key,"RSA2");
}
public static Alipay getInstance(){
return instance;
}
/**
* 支付宝向用户转账
* @param bizNo 逻辑单号
* @param amount 转账金额 "1.21"单位元
* @param account 支付宝账号
* @param userName 支付宝真实姓名
* @return
*/
public Map<String,String> alipay2User(String bizNo,String amount,String account,String userName){
Map<String,String> resultMap=new HashMap<String,String>();
AlipayVo vo = new AlipayVo();
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("支付宝转账");
String json = new Gson().toJson(vo);
// 设置请求参数
AlipayFundTransToaccountTransferRequest alipayRequest = new AlipayFundTransToaccountTransferRequest();
alipayRequest.setBizContent(json);
AlipayFundTransToaccountTransferResponse response=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 (AlipayApiException e) {
e.printStackTrace();
resultMap.put("success", "false");
resultMap.put("des", "转账失败!");
}
return resultMap;
}
}
自己封装的一个单例,所有额配置都在配置文件里面。恩,就是这样
转载自原文链接, 如需删除请联系管理员。
原文链接:java支付宝提现功能,单笔转账到支付宝账户,转载请注明来源!