|
@@ -152,7 +152,7 @@ public class PayServiceImpl implements PayService {
|
|
|
long time = System.currentTimeMillis() / 1000;
|
|
|
JSONObject json = getPayParameter(payment, request, time);
|
|
|
// 商户订单号
|
|
|
- String orderId = order.getOrderNo() + "#" + time;
|
|
|
+ String orderId = order.getOrderNo() + "T" + time;
|
|
|
json.put("orderId", orderId);
|
|
|
//商品名称
|
|
|
String product = "采美订单" + order.getOrderNo();
|
|
@@ -715,7 +715,7 @@ public class PayServiceImpl implements PayService {
|
|
|
long time = System.currentTimeMillis() / 1000;
|
|
|
JSONObject json = getPayParameter(payment, request, time);
|
|
|
// 商户订单号
|
|
|
- String orderId = payment.getProductId() + "#" + time;
|
|
|
+ String orderId = payment.getProductId() + "T" + time;
|
|
|
json.put("orderId", orderId);
|
|
|
//商品名称
|
|
|
String product = "采美订单" + orderId;
|
|
@@ -815,7 +815,7 @@ public class PayServiceImpl implements PayService {
|
|
|
calendar.setTime(new Date());
|
|
|
calendar.add(Calendar.DAY_OF_MONTH, -1);
|
|
|
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
|
- String currentTime = format.format(new Date());
|
|
|
+ String currentTime = format.format(calendar.getTime());
|
|
|
List<OrderRelationVo> orderRelations = payDao.findUnallocatedAccount(currentTime);
|
|
|
if (orderRelations != null && orderRelations.size() > 0) {
|
|
|
for (OrderRelationVo orderRelation : orderRelations) {
|
|
@@ -873,98 +873,103 @@ public class PayServiceImpl implements PayService {
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
- public String delayedSplittingCallback(String data) throws InvalidKeySpecException, NoSuchAlgorithmException {
|
|
|
- //公钥解密
|
|
|
- JSONObject json = PayUtils.decryptDataPublic(data, publicKey);
|
|
|
- log.info("公钥解密>>>>>>" + json);
|
|
|
- //公钥验签
|
|
|
- String signaa = json.getString("sign");
|
|
|
- json.remove("sign");
|
|
|
- String signbb = PayUtils.buildSign(json, publicKey);
|
|
|
- if (!signaa.equals(signbb)) {
|
|
|
- return "验签失败";
|
|
|
- }
|
|
|
- String mbOrderId = json.getString("mbOrderId");
|
|
|
- String status = json.getString("status");
|
|
|
- log.info("分账状态>>>" + status);
|
|
|
- if ("FAILED".equals(status)) {
|
|
|
- return "分账失败";
|
|
|
- }
|
|
|
+ public String delayedSplittingCallback(String data) {
|
|
|
+ try {
|
|
|
+ //公钥解密
|
|
|
+ JSONObject json = PayUtils.decryptDataPublic(data, publicKey);
|
|
|
+ log.info("公钥解密>>>>>>" + json);
|
|
|
+ //公钥验签
|
|
|
+ String signaa = json.getString("sign");
|
|
|
+ json.remove("sign");
|
|
|
+ String signbb = PayUtils.buildSign(json, publicKey);
|
|
|
+ if (!signaa.equals(signbb)) {
|
|
|
+ return "验签失败";
|
|
|
+ }
|
|
|
+ String mbOrderId = json.getString("mbOrderId");
|
|
|
+ String status = json.getString("status");
|
|
|
+ log.info("分账状态>>>" + status);
|
|
|
+ if ("FAILED".equals(status)) {
|
|
|
+ return "分账失败";
|
|
|
+ }
|
|
|
|
|
|
- //修改收款分账状态
|
|
|
- payDao.updateBySplitStatus(mbOrderId);
|
|
|
-
|
|
|
- //子订单是否全部付款
|
|
|
- boolean isPay = true;
|
|
|
- Integer orderId = null;
|
|
|
- List<SplitAccountVo> splitAccountList = payDao.findByMbOrderId(mbOrderId);
|
|
|
- if (splitAccountList != null && splitAccountList.size() > 0) {
|
|
|
- Integer shopOrderId = null;
|
|
|
- String shopOrderNo = "";
|
|
|
- for (SplitAccountVo account : splitAccountList) {
|
|
|
- log.info("保存应付付供应商>>>>" + account.getShopId());
|
|
|
- //本次付供应商金额(分账金额)
|
|
|
- BigDecimal splitAmount = account.getSplitAccount();
|
|
|
- orderId = account.getOrderId();
|
|
|
- Integer shopId = account.getShopId();
|
|
|
- List<ShopOrderVo> shopOrderList = payDao.findShopOrder(Long.valueOf(orderId));
|
|
|
- String payStatus = "";
|
|
|
- for (ShopOrderVo shopOrder : shopOrderList) {
|
|
|
- if (shopId.equals(shopOrder.getShopID())) {
|
|
|
- shopOrderId = shopOrder.getShopOrderID();
|
|
|
- shopOrderNo = shopOrder.getShopOrderNo();
|
|
|
- //已付供应商金额
|
|
|
- BigDecimal paidAmount = payDao.findPaidShop(shopOrderId);
|
|
|
- BigDecimal paidShop = MathUtil.add(paidAmount, splitAmount);
|
|
|
- if (MathUtil.compare(shopOrder.getShouldPayShopAmount(), paidShop) == 0) {
|
|
|
- payStatus = "2";
|
|
|
+ //修改收款分账状态
|
|
|
+ payDao.updateBySplitStatus(mbOrderId);
|
|
|
+
|
|
|
+ //子订单是否全部付款
|
|
|
+ boolean isPay = true;
|
|
|
+ Integer orderId = null;
|
|
|
+ List<SplitAccountVo> splitAccountList = payDao.findByMbOrderId(mbOrderId);
|
|
|
+ if (splitAccountList != null && splitAccountList.size() > 0) {
|
|
|
+ Integer shopOrderId = null;
|
|
|
+ String shopOrderNo = "";
|
|
|
+ for (SplitAccountVo account : splitAccountList) {
|
|
|
+ log.info("保存应付付供应商>>>>" + account.getShopId());
|
|
|
+ //本次付供应商金额(分账金额)
|
|
|
+ BigDecimal splitAmount = account.getSplitAccount();
|
|
|
+ orderId = account.getOrderId();
|
|
|
+ Integer shopId = account.getShopId();
|
|
|
+ List<ShopOrderVo> shopOrderList = payDao.findShopOrder(Long.valueOf(orderId));
|
|
|
+ String payStatus = "";
|
|
|
+ for (ShopOrderVo shopOrder : shopOrderList) {
|
|
|
+ if (shopId.equals(shopOrder.getShopID())) {
|
|
|
+ shopOrderId = shopOrder.getShopOrderID();
|
|
|
+ shopOrderNo = shopOrder.getShopOrderNo();
|
|
|
+ //已付供应商金额
|
|
|
+ BigDecimal paidAmount = payDao.findPaidShop(shopOrderId);
|
|
|
+ BigDecimal paidShop = MathUtil.add(paidAmount, splitAmount);
|
|
|
+ if (MathUtil.compare(shopOrder.getShouldPayShopAmount(), paidShop) == 0) {
|
|
|
+ payStatus = "2";
|
|
|
+ isPay = false;
|
|
|
+ } else {
|
|
|
+ payStatus = "3";
|
|
|
+ }
|
|
|
+ //修改子订单付款状态及付款金额
|
|
|
+ payDao.updateShopOrderByPayStatus(shopOrderId, paidShop, payStatus);
|
|
|
+ } else if (!"3".equals(shopOrder.getPayStatus())) {
|
|
|
isPay = false;
|
|
|
- } else {
|
|
|
- payStatus = "3";
|
|
|
}
|
|
|
- //修改子订单付款状态及付款金额
|
|
|
- payDao.updateShopOrderByPayStatus(shopOrderId, paidShop, payStatus);
|
|
|
- } else if (!"3".equals(shopOrder.getPayStatus())) {
|
|
|
- isPay = false;
|
|
|
}
|
|
|
- }
|
|
|
|
|
|
- SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
|
- String currentTime = format.format(new Date());
|
|
|
- //保存付供应商记录
|
|
|
- PayShopVo payShop = new PayShopVo();
|
|
|
- payShop.setShopID(shopId);
|
|
|
- payShop.setName("线上支付分账");
|
|
|
- payShop.setTotalAmount(splitAmount);
|
|
|
- payShop.setWipePayment(BigDecimal.ZERO);
|
|
|
- payShop.setPayType("6");
|
|
|
- payShop.setStatus("1");
|
|
|
- payShop.setDelFlag("0");
|
|
|
- payShop.setApplyTime(currentTime);
|
|
|
- payShop.setReviewTime(currentTime);
|
|
|
- payShop.setPayTime(currentTime);
|
|
|
- payDao.insertPayShop(payShop);
|
|
|
-
|
|
|
- PayShopRecordVo shopRecord = new PayShopRecordVo();
|
|
|
- shopRecord.setShopID(shopId);
|
|
|
- shopRecord.setShopOrderID(shopOrderId);
|
|
|
- shopRecord.setShopOrderNo(shopOrderNo);
|
|
|
- shopRecord.setPayAmount(splitAmount);
|
|
|
- shopRecord.setWipePayment(BigDecimal.ZERO);
|
|
|
- shopRecord.setPayType("6");
|
|
|
- shopRecord.setPayTime(currentTime);
|
|
|
- shopRecord.setPayShopID(payShop.getId().intValue());
|
|
|
- shopRecord.setStatus("2");
|
|
|
- shopRecord.setDelFlag("0");
|
|
|
- payDao.insertPayShopRecord(shopRecord);
|
|
|
- }
|
|
|
+ SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
|
|
|
+ String currentTime = format.format(new Date());
|
|
|
+ //保存付供应商记录
|
|
|
+ PayShopVo payShop = new PayShopVo();
|
|
|
+ payShop.setShopID(shopId);
|
|
|
+ payShop.setName("线上支付分账");
|
|
|
+ payShop.setTotalAmount(splitAmount);
|
|
|
+ payShop.setWipePayment(BigDecimal.ZERO);
|
|
|
+ payShop.setPayType("6");
|
|
|
+ payShop.setStatus("1");
|
|
|
+ payShop.setDelFlag("0");
|
|
|
+ payShop.setApplyTime(currentTime);
|
|
|
+ payShop.setReviewTime(currentTime);
|
|
|
+ payShop.setPayTime(currentTime);
|
|
|
+ payDao.insertPayShop(payShop);
|
|
|
+
|
|
|
+ PayShopRecordVo shopRecord = new PayShopRecordVo();
|
|
|
+ shopRecord.setShopID(shopId);
|
|
|
+ shopRecord.setShopOrderID(shopOrderId);
|
|
|
+ shopRecord.setShopOrderNo(shopOrderNo);
|
|
|
+ shopRecord.setPayAmount(splitAmount);
|
|
|
+ shopRecord.setWipePayment(BigDecimal.ZERO);
|
|
|
+ shopRecord.setPayType("6");
|
|
|
+ shopRecord.setPayTime(currentTime);
|
|
|
+ shopRecord.setPayShopID(payShop.getId().intValue());
|
|
|
+ shopRecord.setStatus("1");
|
|
|
+ shopRecord.setDelFlag("0");
|
|
|
+ payDao.insertPayShopRecord(shopRecord);
|
|
|
+ }
|
|
|
|
|
|
- //修改主订单修改状态
|
|
|
- if (isPay) {
|
|
|
- payDao.updateOrderByPayStatus(orderId, "3");
|
|
|
- } else {
|
|
|
- payDao.updateOrderByPayStatus(orderId, "2");
|
|
|
+ //修改主订单修改状态
|
|
|
+ if (isPay) {
|
|
|
+ payDao.updateOrderByPayStatus(orderId, "3");
|
|
|
+ } else {
|
|
|
+ payDao.updateOrderByPayStatus(orderId, "2");
|
|
|
+ }
|
|
|
}
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error("分账异步通知异常", e);
|
|
|
+ return "分账失败";
|
|
|
}
|
|
|
return "SUCCESS";
|
|
|
}
|