private JSONObject createAliPayOrderNew(T_Goods_Order_Pay goodsOrderPay) {
logger.info("---------------------------------调用支付宝支付接口!");
// 参考url:https://docs.open.alipay.com/54/106370/
// url
String aliPayUrl = systemConfigService.getSystemConfigValue("AliPayUrl");
logger.info("---------------------------------支付url:" + aliPayUrl);
// 私钥
String aliPayPrivateSecret = systemConfigService.getSystemConfigValue("AliPayPrivateSecret");
logger.info("---------------------------------支付私钥:" + aliPayPrivateSecret);
// appId
String aliPayAppId = systemConfigService.getSystemConfigValue("AliPayAppId");
logger.info("---------------------------------支付appid:" + aliPayAppId);
// 回调地址
String aliPayNotifyUrl = systemConfigService.getSystemConfigValue("AliPayNotifyUrl");
logger.info("---------------------------------支付回调url:" + aliPayNotifyUrl);
CertAlipayRequest certAlipayRequest = new CertAlipayRequest();
certAlipayRequest.setServerUrl(aliPayUrl);
certAlipayRequest.setAppId(aliPayAppId);
certAlipayRequest.setPrivateKey(aliPayPrivateSecret);
certAlipayRequest.setFormat("json");
certAlipayRequest.setCharset("utf-8");
certAlipayRequest.setSignType("RSA2");
// 应用公钥证书
certAlipayRequest.setCertPath(FileUtil.createFile(appCrt));
logger.info("---------------------------------应用公钥证书:" + certAlipayRequest.getCertPath());
// 支付宝公钥证书
certAlipayRequest.setAlipayPublicCertPath(FileUtil.createFile(aliPayCrt));
logger.info("---------------------------------支付宝公钥证书:" + certAlipayRequest.getAlipayPublicCertPath());
// 根证书
certAlipayRequest.setRootCertPath(FileUtil.createFile(rootCrt));
logger.info("---------------------------------支付宝根证书:" + certAlipayRequest.getRootCertPath());
JSONObject obj = createAliPayAppOrder(goodsOrderPay, aliPayNotifyUrl, certAlipayRequest);
logger.info("---------------------------------退出支付宝支付接口!");
return obj;
}
// 服务器下jar发布只能通过文件流生成临时文件
public static String createFile(Resource resource) {
// 获取模板下的路径 
String filePath = File.separator + "src" + File.separator
+ "main" + File.separator + "resources"
+ File.separator + "static/";
filePath = filePath.replace("/", File.separator);
// 检查项目运行时的src下的对应路径
filePath = filePath + resource.getFilename();
File file = new File(filePath);
if (file.isFile() && file.exists()) {
return filePath;
}
// 在服务器中将文件流取出来生成文件
try {
FileUtils.copyInputStreamToFile(resource.getInputStream(), file);
} catch (IOException e) {
logger.info(e.getMessage());
}
return filePath;
}
1、APP支付
private JSONObject createAliPayAppOrder(T_Goods_Order_Pay goodsOrderPay, String aliPayNotifyUrl, CertAlipayRequest certAlipayRequest) {
JSONObject obj = new JSONObject();
obj.put("code", 1);
obj.put("msg", "支付失败!");
// 业务参数
AlipayClient alipayClient;
AlipayTradeAppPayResponse response;
AlipayTradeAppPayRequest request = new AlipayTradeAppPayRequest();
AlipayTradeAppPayModel model = new AlipayTradeAppPayModel();
// 商品的标题/交易标题/订单标题/订单关键字等
model.setSubject(goodsOrderPay.getRemark());
// 商户网站唯一订单号
model.setOutTradeNo(goodsOrderPay.getId());
// 订单总金额,单位为元,精确到小数点后两位,取值范围[0.01,100000000]
model.setTotalAmount(goodsOrderPay.getTotalPrice().setScale(2).toPlainString());
logger.info("---------------------------------支付信息:" + JSON.toJSONString(model));
request.setBizModel(model);
request.setNotifyUrl(aliPayNotifyUrl);
try {
alipayClient = new DefaultAlipayClient(certAlipayRequest);
response = alipayClient.sdkExecute(request);
logger.info("---------------------------------支付返回信息:" + JSON.toJSONString(response));
if(response.isSuccess()) {
logger.info("---------------------------------支付宝支付成功!");
obj.put("orderNo", goodsOrderPay.getId());
// 前端只需要body
obj.put("body", response.getBody());
obj.put("code", 0);
obj.put("msg", "支付成功!");
}else {
logger.info("---------------------------------支付宝支付失败!");
obj.put("msg", "支付失败!");
logger.info("---------------------------------msg:" + response.getMsg());
}
return obj;
} catch (AlipayApiException e) {
logger.info("---------------------------------支付宝支付失败!");
obj.put("msg", "支付失败!");
logger.info("---------------------------------msg:" + e.getErrMsg());
}
return obj;
}
2、小程序支付
private JSONObject createAliPaySmallAppOrder(T_Goods_Order_Pay goodsOrderPay, String aliPayNotifyUrl, CertAlipayRequest certAlipayRequest) {
JSONObject obj = new JSONObject();
obj.put("code", 1);
obj.put("msg", "支付失败!");
// 业务参数
AlipayClient alipayClient = null;
AlipayTradeCreateResponse response = null;
AlipayTradeCreateRequest request = new AlipayTradeCreateRequest();
request.setNotifyUrl(alipayNotifyUrl);
request.setBizContent("{" +
"\"out_trade_no\":\"" + goodsOrderPay.getId() + "\"," + // 自定义订单编号
"\"total_amount\":\"" + goodsOrderPay.getTotalPrice().setScale(2).toPlainString() + "\"," + // 金额
"\"subject\":\"" + goodsOrderPay.getRemark() + "\"," + // 备注
"\"buyer_id\":\"" + goodsOrderPay.getOpenid() + "\"" + // openid
"}");
logger.info("---------------------------------支付信息:" + JSON.toJSONString(request));
try {
alipayClient = new DefaultAlipayClient(certAlipayRequest);
response = alipayClient.certificateExecute(request);
logger.info("---------------------------------支付返回信息:" + JSON.toJSONString(response));
if(response.isSuccess() && "10000".equals(response.getCode())) {
returnMap.put("ordno", tmorder.getOrdno());
returnMap.put("tradeNO", response.getTradeNo());
returnMap.put("code", 0);
returnMap.put("msg", "支付成功!");
logger.info("---------------------------------支付宝支付成功!");
}else {
returnMap.put("code", 1);
returnMap.put("msg", response.getMsg());
logger.info("---------------------------------支付宝支付失败!");
}
} catch (AlipayApiException e) {
returnMap.put("code", 1);
returnMap.put("msg", "支付失败!");
logger.info("---------------------------------支付宝支付失败!");
logger.info("---------------------------------msg:" + e.getErrMsg());
}
return obj;
}