public void alyunPay() {
AlipayTradePagePayModel model = new AlipayTradePagePayModel();
model.setOutTradeNo(outTradeNo);
model.setTotalAmount(String.format("%.2f", usePlatFee));
model.setSubject(subject);
String rootPath = "";
ApAlipayPayDTO payDTO = new ApAlipayPayDTO();
payDTO.setNotifyUrl(rootPath + "/lm/payment/aliPayNotify");
ApAlipayPayDTO apEntity = aliyunPayService.aliyunPay(payDTO, model);
LmPayResultDTO lprEntity = new LmPayResultDTO();
String code = apEntity.getQrCode();
public void aliPayNotify(HttpServletRequest request, HttpServletResponse response) {
Map<String, String> params = RequestUtils.getAllParam(request);
try {
boolean flag = AlipaySignature.rsaCheckV1(params, AliyunPayConstants.ALIPAY_PUBLIC_KEY, AliyunPayConstants.CHARSET, AliyunPayConstants.SIGN_TYPE);
if (flag) {
String out_trade_no = params.get("out_trade_no");
if ("TRADE_SUCCESS".equalsIgnoreCase(params.get("trade_status"))) {
response.getOutputStream().write("success".getBytes());
} else {
}
} else {
response.getOutputStream().write("failure".getBytes());
}
} catch (AlipayApiException e) {
logger.error("【支付宝支付--异步回调】回调失败,阿里云接口调用错误,原因为:{}", e.getMessage());
} catch (Exception e) {
logger.error("【支付宝支付--异步回调】回调失败,原因为:{}", e.getMessage());
}
}
public static Map<String, String> getAllParam(HttpServletRequest request) {
Map<String, String> params = new HashMap();
Map<String, String[]> requestParams = request.getParameterMap();
Iterator iter = requestParams.keySet().iterator();
while (iter.hasNext()) {
String name = (String) iter.next();
String[] values = requestParams.get(name);
String valueStr = "";
for (int i = 0; i < values.length; ++i) {
valueStr = i == values.length - 1 ? valueStr + values[i] : valueStr + values[i] + ",";
}
params.put(name, valueStr);
}
return params;
}
public class AliyunPayService extends BaseService {
private Map<String, String> map = new HashMap<String, String>();
public Map<String, String> init() {
map.put("url", AliyunPayConstants.URL);
map.put("appid", AliyunPayConstants.APPID);
map.put("privateKey", AliyunPayConstants.APP_PRIVATE_KEY);
map.put("format", AliyunPayConstants.FORMAT);
map.put("charset", AliyunPayConstants.CHARSET);
map.put("publicKey", AliyunPayConstants.ALIPAY_PUBLIC_KEY);
map.put("signType", AliyunPayConstants.SIGN_TYPE);
return map;
}
public ApAlipayPayDTO aliyunPay(ApAlipayPayDTO payDTO, AlipayTradePagePayModel model) {
ApAlipayPayDTO reDTO = new ApAlipayPayDTO();
if (map.size() == 0) {
init();
}
AlipayClient alipayClient = new DefaultAlipayClient(map.get("url"), map.get("appid"), map.get("privateKey"),
map.get("format"), map.get("charset"), map.get("publicKey"), map.get("signType"));
AlipayTradePrecreateRequest request = new AlipayTradePrecreateRequest();
request.setNotifyUrl(payDTO.getNotifyUrl());
request.setBizModel(model);
AlipayTradePrecreateResponse response = null;
try {
response = alipayClient.execute(request);
} catch (AlipayApiException e) {
e.printStackTrace();
}
String msg= "";
if (response.isSuccess()) {
reDTO.setOutTradeNo(response.getOutTradeNo());
reDTO.setQrCode(response.getQrCode());
reDTO.setSubject(model.getSubject());
reDTO.setTotalAmount(model.getTotalAmount());
System.out.println("调用成功");
} else {
System.out.println("调用失败");
}
return reDTO;
}
public Map<String, String> aliyunQuery(String outTradeNo, String transactionId) {
if (map.size() == 0) {
init();
}
AlipayClient alipayClient = new DefaultAlipayClient(map.get("url"), map.get("appid"), map.get("privateKey"),
map.get("format"), map.get("charset"), map.get("publicKey"), map.get("signType"));
AlipayTradeQueryRequest request = new AlipayTradeQueryRequest();
AlipayTradeQueryModel model = new AlipayTradeQueryModel();
if(transactionId == null || transactionId.length() == 0){
model.setOutTradeNo(outTradeNo);
}else {
model.setTradeNo(transactionId);
}
request.setBizModel(model);
AlipayTradeQueryResponse response = null;
try {
response = alipayClient.execute(request);
} catch (AlipayApiException e) {
e.printStackTrace();
}
System.err.println(response.getBody());
System.err.println(response.isSuccess());
Map<String, String> map = new HashMap<String, String>();
if(response.isSuccess()){
if("WAIT_BUYER_PAY".equals(response.getTradeStatus())){
map.put("tradeStatus", "WAIT_BUYER_PAY");
map.put("returnValue", "交易创建,等待买家付款");
}else if("TRADE_CLOSED".equals(response.getTradeStatus())){
map.put("tradeStatus", "TRADE_CLOSED");
map.put("returnValue", "未付款交易超时关闭,或支付完成后全额退款");
}else if("TRADE_SUCCESS".equals(response.getTradeStatus())){
map.put("tradeStatus", "TRADE_SUCCESS");
map.put("returnValue", "支付成功");
}else if("TRADE_FINISHED".equals(response.getTradeStatus())){
map.put("tradeStatus", "TRADE_FINISHED");
map.put("returnValue", "交易结束,不可退款");
}else {
map.put("tradeStatus", response.getSubCode());
map.put("returnValue", "未知状态");
}
} else {
map.put("tradeStatus", response.getSubCode());
map.put("returnValue", response.getSubMsg());
}
return map;
}
}