|
@@ -5,8 +5,8 @@ import com.caimei.module.base.entity.bo.JsonModel;
|
|
import com.caimei.module.base.entity.bo.Payment;
|
|
import com.caimei.module.base.entity.bo.Payment;
|
|
import com.caimei.module.base.entity.vo.*;
|
|
import com.caimei.module.base.entity.vo.*;
|
|
import com.caimei.module.pay.dao.PayDao;
|
|
import com.caimei.module.pay.dao.PayDao;
|
|
-import com.caimei.module.pay.util.*;
|
|
|
|
import com.caimei.module.pay.service.PayService;
|
|
import com.caimei.module.pay.service.PayService;
|
|
|
|
+import com.caimei.module.pay.util.*;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
@@ -32,12 +32,22 @@ public class PayServiceImpl implements PayService {
|
|
private PayDao payDao;
|
|
private PayDao payDao;
|
|
|
|
|
|
|
|
|
|
- String merAccount = "aa9aee6a148843a6a9e4ea117df4454b"; // 商户标识
|
|
|
|
- //私钥
|
|
|
|
- String merKey = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAM0qCTZFdi1I59/Jeis+8KVhzSNhsRrKiOlHazIVyxNLzUQvFpWN5PlfVKlnJToorURTStfjAv01HD0Z4ZvMauuHhDT0bptiDln928Ld6SzX889X2nsCxl0Q+WzrkFsnT6gotvGnTeQGUgbBV3SQD3IUOwRwxoWYbrZqxtqHFxqRAgMBAAECgYEAvsHx9MMbAToDVmEXtXP8/lh0Cwy/RgDA0d30voni2pslTNtXbVCUcIUBy8y6oVvG1nt3YEmTsuiZy/nvehPT6GV1Gqj8T6lqWQ8KQKsDGlubvh23tzNM90me2TLZEPdNqC5CPRrwYrjght4BXgzu7s2+5FpeYCob1gVNi+w0Jz0CQQD0dXb9Oez+Ybnxb3rCghGWM6cxi8fsqk6MuKaleg53qfXrkgAVH78faeWzRaeSbVOh5+Z9kX5HUeynfM7E/f4nAkEA1tmnvJp4JQaouO1Trzbnkhowjea5daK/tDE8K0hIMHUjAw+c1QTteGOVGBFBHWPkUwkSCd2HKmk4URkp/snMhwJAO32+qF+Jclq8EqqLmHxo5UHKxX7793d2yD5Dp++tR6fgBiUwyfNA4tc1pEwmPLdIbBVwfUyEC70/N39jHoOlbwI/dX6SPJI9IgKCQp+HJEriWQP5iaCjy7E1JVXHkeP1lop4mzPukJAhTbUn1AGbmncGZmKPetWrFYZ1ReR9EtlJAkEA2kBmARWyOTt8fbikImuHr65M+BDgD+2fkuDb5+tqJljNmSqAIRRwcXj1Je6vkzlDJuSw3wlG6iliFtwe0cq7+w=="; // 商户密钥
|
|
|
|
- //公钥
|
|
|
|
|
|
+ /**
|
|
|
|
+ * 商户标识
|
|
|
|
+ */
|
|
|
|
+ String merAccount = "aa9aee6a148843a6a9e4ea117df4454b";
|
|
|
|
+ /**
|
|
|
|
+ * 私钥,商户密钥
|
|
|
|
+ */
|
|
|
|
+ String merKey = "MIICdgIBADANBgkqhkiG9w0BAQEFAASCAmAwggJcAgEAAoGBAM0qCTZFdi1I59/Jeis+8KVhzSNhsRrKiOlHazIVyxNLzUQvFpWN5PlfVKlnJToorURTStfjAv01HD0Z4ZvMauuHhDT0bptiDln928Ld6SzX889X2nsCxl0Q+WzrkFsnT6gotvGnTeQGUgbBV3SQD3IUOwRwxoWYbrZqxtqHFxqRAgMBAAECgYEAvsHx9MMbAToDVmEXtXP8/lh0Cwy/RgDA0d30voni2pslTNtXbVCUcIUBy8y6oVvG1nt3YEmTsuiZy/nvehPT6GV1Gqj8T6lqWQ8KQKsDGlubvh23tzNM90me2TLZEPdNqC5CPRrwYrjght4BXgzu7s2+5FpeYCob1gVNi+w0Jz0CQQD0dXb9Oez+Ybnxb3rCghGWM6cxi8fsqk6MuKaleg53qfXrkgAVH78faeWzRaeSbVOh5+Z9kX5HUeynfM7E/f4nAkEA1tmnvJp4JQaouO1Trzbnkhowjea5daK/tDE8K0hIMHUjAw+c1QTteGOVGBFBHWPkUwkSCd2HKmk4URkp/snMhwJAO32+qF+Jclq8EqqLmHxo5UHKxX7793d2yD5Dp++tR6fgBiUwyfNA4tc1pEwmPLdIbBVwfUyEC70/N39jHoOlbwI/dX6SPJI9IgKCQp+HJEriWQP5iaCjy7E1JVXHkeP1lop4mzPukJAhTbUn1AGbmncGZmKPetWrFYZ1ReR9EtlJAkEA2kBmARWyOTt8fbikImuHr65M+BDgD+2fkuDb5+tqJljNmSqAIRRwcXj1Je6vkzlDJuSw3wlG6iliFtwe0cq7+w==";
|
|
|
|
+ /**
|
|
|
|
+ * 公钥
|
|
|
|
+ */
|
|
String publicKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDNKgk2RXYtSOffyXorPvClYc0jYbEayojpR2syFcsTS81ELxaVjeT5X1SpZyU6KK1EU0rX4wL9NRw9GeGbzGrrh4Q09G6bYg5Z/dvC3eks1/PPV9p7AsZdEPls65BbJ0+oKLbxp03kBlIGwVd0kA9yFDsEcMaFmG62asbahxcakQIDAQAB";
|
|
String publicKey = "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDNKgk2RXYtSOffyXorPvClYc0jYbEayojpR2syFcsTS81ELxaVjeT5X1SpZyU6KK1EU0rX4wL9NRw9GeGbzGrrh4Q09G6bYg5Z/dvC3eks1/PPV9p7AsZdEPls65BbJ0+oKLbxp03kBlIGwVd0kA9yFDsEcMaFmG62asbahxcakQIDAQAB";
|
|
- String merNo = "10001720";//用户编号
|
|
|
|
|
|
+ /**
|
|
|
|
+ * 用户编号
|
|
|
|
+ */
|
|
|
|
+ String merNo = "10001720";
|
|
|
|
|
|
@Override
|
|
@Override
|
|
public JsonModel checkoutCounter(Integer orderId) {
|
|
public JsonModel checkoutCounter(Integer orderId) {
|
|
@@ -76,7 +86,6 @@ public class PayServiceImpl implements PayService {
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
- @Transactional
|
|
|
|
public synchronized JsonModel pay(Payment payment, HttpServletRequest request) {
|
|
public synchronized JsonModel pay(Payment payment, HttpServletRequest request) {
|
|
JsonModel model = JsonModel.newInstance();
|
|
JsonModel model = JsonModel.newInstance();
|
|
JSONObject result = null;
|
|
JSONObject result = null;
|
|
@@ -101,17 +110,22 @@ public class PayServiceImpl implements PayService {
|
|
return model.error("付款金额错误");
|
|
return model.error("付款金额错误");
|
|
}
|
|
}
|
|
try {
|
|
try {
|
|
- long time = System.currentTimeMillis() / 1000; // 时间戳
|
|
|
|
- String orderId = order.getOrderNo() + "#" + time; // 商户订单号
|
|
|
|
- String product = "采美订单" + order.getOrderNo(); //商品名称
|
|
|
|
|
|
+ // 时间戳
|
|
|
|
+ long time = System.currentTimeMillis() / 1000;
|
|
|
|
+ // 商户订单号
|
|
|
|
+ String orderId = order.getOrderNo() + "#" + time;
|
|
|
|
+ //商品名称
|
|
|
|
+ String product = "采美订单" + order.getOrderNo();
|
|
String userType = "ENTERPRISE";
|
|
String userType = "ENTERPRISE";
|
|
- String userIp = IPUtil.getIpAddr(request);//用户IP地址
|
|
|
|
|
|
+ //用户IP地址
|
|
|
|
+ String userIp = IPUtil.getIpAddr(request);
|
|
JSONObject json = new JSONObject();
|
|
JSONObject json = new JSONObject();
|
|
json.put("merAccount", merAccount);
|
|
json.put("merAccount", merAccount);
|
|
json.put("merNo", merNo);
|
|
json.put("merNo", merNo);
|
|
json.put("orderId", orderId);
|
|
json.put("orderId", orderId);
|
|
json.put("time", time);
|
|
json.put("time", time);
|
|
- json.put("amount", payment.getPayAmount());//支付金额
|
|
|
|
|
|
+ //支付金额
|
|
|
|
+ json.put("amount", payment.getPayAmount());
|
|
json.put("product", product);
|
|
json.put("product", product);
|
|
json.put("payWay", payment.getPayWay());
|
|
json.put("payWay", payment.getPayWay());
|
|
json.put("payType", payment.getPayType());
|
|
json.put("payType", payment.getPayType());
|
|
@@ -150,7 +164,7 @@ public class PayServiceImpl implements PayService {
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
- @Transactional
|
|
|
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
public String paymentCallback(String data) throws Exception {
|
|
public String paymentCallback(String data) throws Exception {
|
|
//公钥解密
|
|
//公钥解密
|
|
JSONObject json = PayUtils.decryptDataPublic(data, publicKey);
|
|
JSONObject json = PayUtils.decryptDataPublic(data, publicKey);
|
|
@@ -283,7 +297,8 @@ public class PayServiceImpl implements PayService {
|
|
if (null == order) {
|
|
if (null == order) {
|
|
return model.error("订单不存在");
|
|
return model.error("订单不存在");
|
|
}
|
|
}
|
|
- long time = System.currentTimeMillis() / 1000; // 时间戳
|
|
|
|
|
|
+ // 时间戳
|
|
|
|
+ long time = System.currentTimeMillis() / 1000;
|
|
String linkLogo = RandomCodeGenerator.generateCodeString(4);
|
|
String linkLogo = RandomCodeGenerator.generateCodeString(4);
|
|
try {
|
|
try {
|
|
linkLogo = Md5Util.MD5To16Bit(linkLogo + time);
|
|
linkLogo = Md5Util.MD5To16Bit(linkLogo + time);
|
|
@@ -294,7 +309,7 @@ public class PayServiceImpl implements PayService {
|
|
Date date = new Date();
|
|
Date date = new Date();
|
|
GregorianCalendar calendar = new GregorianCalendar();
|
|
GregorianCalendar calendar = new GregorianCalendar();
|
|
calendar.setTime(date);
|
|
calendar.setTime(date);
|
|
- calendar.add(calendar.DATE, 1);
|
|
|
|
|
|
+ calendar.add(Calendar.DATE, 1);
|
|
orderPayLink.setGenerateTime(date);
|
|
orderPayLink.setGenerateTime(date);
|
|
orderPayLink.setEffectiveTime(calendar.getTime());
|
|
orderPayLink.setEffectiveTime(calendar.getTime());
|
|
orderPayLink.setPayStatus("0");
|
|
orderPayLink.setPayStatus("0");
|