一、配置文件(支付宝商户配置)
public class AlipayConfig {
// 应用ID,您的APPID,收款账号既是您的APPID对应支付宝账号
public static String app_id = "";
// 商户私钥,您的PKCS8格式RSA2私钥
public static String merchant_private_key = "";
// 支付宝公钥,查看地址:https://openhome.alipay.com/platform/keyManage.htm 对应APPID下的支付宝公钥。
public static String alipay_public_key = "";
// 服务器异步通知页面路径 需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问
public static String notify_url = "";
// 页面跳转同步通知页面路径 需http://格式的完整路径,不能加?id=123这类自定义参数,必须外网可以正常访问
public static String return_url = "";
// 返回格式
public static String json_type = "json";
// 签名方式
public static String sign_type = "RSA2";
// 字符编码格式
public static String charset = "utf-8";
// 支付宝网关
public static String gatewayUrl = "https://openapi.alipay.com/gateway.do";
// 支付宝网关
public static String log_path = "C:\\";
// 商品名称
public static String subject = "";
二、pom文件

三、调取支付宝生成二维码
public static void setLOG() throws AlipayApiException, IOException {
String out_trade_no = "zfb" + new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()) + (int) (Math.random() * 90000 + 10000);
//获得初始化的AlipayClient
AlipayClient alipayClient = new DefaultAlipayClient(AlipayConfig.gatewayUrl, AlipayConfig.app_id, AlipayConfig.merchant_private_key,
AlipayConfig.json_type, AlipayConfig.charset, AlipayConfig.alipay_public_key, AlipayConfig.sign_type);
AlipayTradePrecreateRequest alipayRequest = new AlipayTradePrecreateRequest();
alipayRequest.setReturnUrl(AlipayConfig.return_url);
alipayRequest.setNotifyUrl(AlipayConfig.notify_url);
JSONObject bizContent = new JSONObject();
bizContent.put("out_trade_no", out_trade_no);
System.out.println("三方订单号:" + out_trade_no);
bizContent.put("total_amount", 0.01);
bizContent.put("subject", AlipayConfig.subject);
//5分钟关闭订单(业务所需) 默认2小时关闭
bizContent.put("time_expire", TimeUtils.datToStr(TimeUtils.getChangeTime(new Date(), 5)));
//支付控制台只显示只有花呗、花呗分期支付渠道
// bizContent.put("enable_pay_channels","pcreditpayInstallment,pcredit");
// LOG.info("支付宝支付请求参数:bizContent:" + bizContent.toString());
alipayRequest.setBizContent(bizContent.toString());
AlipayTradePrecreateResponse response = alipayClient.execute(alipayRequest);
if (response.isSuccess()) {
System.out.println(response.getQrCode());
// 生成指定url对应的二维码到文件,宽和高都是300像素
File file = QrCodeUtil.generate(response.getQrCode(), 300, 300, FileUtil.file("d:/qrcode.jpg"));
FileInputStream inputFile = new FileInputStream(file);
byte[] buffer = new byte[(int) file.length()];
inputFile.read(buffer);
inputFile.close();
System.out.println(new BASE64Encoder().encode(buffer));
} else {
System.out.println(response.getMsg() + "," + response.getSubCode());
}
}
四、查询支付宝支付订单状态
/**
*out_trade_no 三方订单号
*/
public static void getOrder(String out_trade_no) throws AlipayApiException {
//获得初始化的AlipayClient
AlipayClient alipayClient = new DefaultAlipayClient(AlipayConfig.gatewayUrl, AlipayConfig.app_id, AlipayConfig.merchant_private_key, AlipayConfig.json_type, AlipayConfig.charset, AlipayConfig.alipay_public_key, AlipayConfig.sign_type);
//设置请求参数
AlipayTradeQueryRequest alipayRequest = new AlipayTradeQueryRequest();
JSONObject bizContent = new JSONObject();
bizContent.put("out_trade_no", out_trade_no);
bizContent.put("trade_no", "");
alipayRequest.setBizContent(bizContent.toString());
AlipayTradeQueryResponse alipayTradeQueryResponse = alipayClient.execute(alipayRequest);
if (alipayTradeQueryResponse.isSuccess()) {
if (alipayTradeQueryResponse.getTradeStatus().equals("TRADE_SUCCESS")) {
System.out.println("支付状态:" + alipayTradeQueryResponse.getTradeStatus());
} else {
System.out.println(alipayTradeQueryResponse.getMsg());
System.out.println(alipayTradeQueryResponse.getTradeStatus());
}
} else {
System.out.println(alipayTradeQueryResponse.getMsg());
}
}
五、关闭支付宝订单
public static Boolean close(String out_trade_no) {
Boolean b = false;
try {
//获得初始化的AlipayClient
AlipayClient alipayClient = new DefaultAlipayClient(AlipayConfig.gatewayUrl, AlipayConfig.app_id, AlipayConfig.merchant_private_key,
AlipayConfig.json_type, AlipayConfig.charset, AlipayConfig.alipay_public_key, AlipayConfig.sign_type);
AlipayTradeCloseRequest request = new AlipayTradeCloseRequest();
JSONObject bizContent = new JSONObject();
bizContent.put("out_trade_no", out_trade_no);
request.setBizContent(bizContent.toString());
AlipayTradeCloseResponse response = alipayClient.execute(request);
if (response.isSuccess()) {
b = true;
System.out.println("支付宝订单关闭成功,三方订单号" + out_trade_no);
} else {
System.out.println("支付宝订单关闭失败,三方订单号" + out_trade_no+"错误码"+response.getSubCode());
}
} catch (AlipayApiException e) {
System.out.println("支付宝订单关闭失败,三方订单号" + out_trade_no);
}
return b;
}
如有疑问请留言评论!!!