package com.yeshi.fanli.util.alipay;
|
|
import java.net.URLEncoder;
|
import java.util.HashMap;
|
import java.util.Map;
|
|
import com.alibaba.fastjson.JSON;
|
import com.alipay.api.AlipayClient;
|
import com.alipay.api.DefaultAlipayClient;
|
import com.alipay.api.request.AlipayTradeQueryRequest;
|
import com.alipay.api.request.AlipayTradeWapPayRequest;
|
import com.alipay.api.response.AlipayTradeQueryResponse;
|
import com.yeshi.fanli.util.StringUtil;
|
|
public class AlipayApi {
|
|
/**
|
* 创建支付请求
|
* @param map
|
* @return
|
* @throws Exception
|
*/
|
public static String tradeWapPayRequest(Map<String, String> map, String payNotify, String backUrl) throws Exception{
|
AlipayTradeWapPayRequest alipayRequest = new AlipayTradeWapPayRequest();
|
// 前台回调地址
|
alipayRequest.setReturnUrl(backUrl);
|
// 成功付款回调
|
alipayRequest.setNotifyUrl(payNotify);
|
|
alipayRequest.setBizContent(URLEncoder.encode(JSON.toJSONString(map), "UTF-8"));
|
|
return AlipayWapConfig.getInstance().pageExecute(alipayRequest).getBody();
|
}
|
|
|
|
/**
|
* 查询是否交易完成
|
* @param outTradeNo
|
* @param tradeNo
|
* @param orgPid
|
* @param queryOptions
|
* @return
|
* @throws Exception
|
*/
|
public static boolean tradeQuery (String outTradeNo, String tradeNo, String orgPid, String queryOptions) throws Exception {
|
// 订单支付时传入的商户订单号,和支付宝交易号不能同时为空
|
if (StringUtil.isNullOrEmpty(outTradeNo) || StringUtil.isNullOrEmpty(outTradeNo)) {
|
return false;
|
}
|
|
// 待请求参数数组
|
Map<String, String> map = new HashMap<String, String>();
|
if (!StringUtil.isNullOrEmpty(outTradeNo))
|
map.put("out_trade_no", outTradeNo);
|
if (!StringUtil.isNullOrEmpty(tradeNo))
|
map.put("trade_no", tradeNo);
|
if (!StringUtil.isNullOrEmpty(orgPid))
|
map.put("org_pid", orgPid);
|
if (!StringUtil.isNullOrEmpty(queryOptions))
|
map.put("query_options", queryOptions);
|
|
|
AlipayTradeQueryRequest request = new AlipayTradeQueryRequest();
|
request.setBizContent(URLEncoder.encode(JSON.toJSONString(map), "UTF-8"));
|
|
// 支付宝查询
|
AlipayClient alipayClient = new DefaultAlipayClient("https://openapi.alipay.com/gateway.do", AlipayWapConfig.APP_ID,
|
AlipayWapConfig.APP_PRIVATE_KEY, AlipayWapConfig.PARAM_TYPE, AlipayWapConfig.CHARSET,
|
AlipayWapConfig.ALIPAY_PUBLIC_KEY, AlipayWapConfig.SIGNTYPE);
|
|
AlipayTradeQueryResponse response = alipayClient.execute(request);
|
if(response.isSuccess()){
|
// 相应成功
|
if ("TRADE_SUCCESS".equals(response.getTradeStatus())) {
|
return true; // 交易支付成功
|
} else if ("TRADE_FINISHED".equals(response.getTradeStatus())) {
|
return true; // (交易结束,不可退款)
|
}
|
}
|
return false;
|
}
|
|
|
|
}
|