|
@@ -797,7 +797,6 @@ public class CmReturnedPurchaseService extends CrudService<CmReturnedPurchaseDao
|
|
}
|
|
}
|
|
List<CmReceiptOrderRelation> relationList = cmReceiptOrderRelationDao.findByOrderID(orderId.toString());
|
|
List<CmReceiptOrderRelation> relationList = cmReceiptOrderRelationDao.findByOrderID(orderId.toString());
|
|
if (null != relationList && relationList.size() > 0) {
|
|
if (null != relationList && relationList.size() > 0) {
|
|
- Integer userId = cmReceiptOrderRelationDao.findUserId(orderId);
|
|
|
|
for (CmReceiptOrderRelation orderRelation : relationList) {
|
|
for (CmReceiptOrderRelation orderRelation : relationList) {
|
|
JSONObject json = new JSONObject();
|
|
JSONObject json = new JSONObject();
|
|
json.put("merAccount", merAccount);
|
|
json.put("merAccount", merAccount);
|
|
@@ -827,16 +826,6 @@ public class CmReturnedPurchaseService extends CrudService<CmReturnedPurchaseDao
|
|
String msg = result.getString("msg");
|
|
String msg = result.getString("msg");
|
|
logger.info("第三方退款失败>>>>>>>msg:" + msg);
|
|
logger.info("第三方退款失败>>>>>>>msg:" + msg);
|
|
throw new Exception("第三方退款失败!");
|
|
throw new Exception("第三方退款失败!");
|
|
- }else{
|
|
|
|
- //存cm_online_refund
|
|
|
|
- CmOnlineRefundVo cmOnlineRefundVo = new CmOnlineRefundVo();
|
|
|
|
- cmOnlineRefundVo.setUserId(userId);
|
|
|
|
- cmOnlineRefundVo.setOrderId(orderId.toString());
|
|
|
|
- cmOnlineRefundVo.setAmount(orderRelation.getAssociateAmount().toString());
|
|
|
|
- cmOnlineRefundVo.setRefundType("1");
|
|
|
|
- cmOnlineRefundVo.setMborderId(orderRelation.getMbOrderId());
|
|
|
|
- cmOnlineRefundVo.setOrderRequestNo(merchantRefundNo);
|
|
|
|
- cmReceiptOrderRelationDao.insertOnlineRefund(cmOnlineRefundVo);
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
//cdr表payway为3余额支付,查是否有线上余额支付
|
|
//cdr表payway为3余额支付,查是否有线上余额支付
|
|
@@ -844,8 +833,8 @@ public class CmReturnedPurchaseService extends CrudService<CmReturnedPurchaseDao
|
|
//查当前单线上余额支付总金额
|
|
//查当前单线上余额支付总金额
|
|
Double onlineMoneyPay = cmReceiptOrderRelationDao.findOnlineMoneyPay(orderId);
|
|
Double onlineMoneyPay = cmReceiptOrderRelationDao.findOnlineMoneyPay(orderId);
|
|
if (null != onlineMoneyPay && onlineMoneyPay >= 0.01) {
|
|
if (null != onlineMoneyPay && onlineMoneyPay >= 0.01) {
|
|
- logger.info("线上余额退现金==============orderId==>"+orderId);
|
|
|
|
//根据userid查产生线上余额的唯一请求单号,发起退款请求
|
|
//根据userid查产生线上余额的唯一请求单号,发起退款请求
|
|
|
|
+ Integer userId = cmReceiptOrderRelationDao.findUserId(orderId);
|
|
//用户名下未分帐的线上余额订单mborderid
|
|
//用户名下未分帐的线上余额订单mborderid
|
|
List<String> mborderIds = cmReceiptOrderRelationDao.findMborderId(userId);
|
|
List<String> mborderIds = cmReceiptOrderRelationDao.findMborderId(userId);
|
|
//用户名下线上退款回线上余额的原mborderid
|
|
//用户名下线上退款回线上余额的原mborderid
|
|
@@ -854,49 +843,14 @@ public class CmReturnedPurchaseService extends CrudService<CmReturnedPurchaseDao
|
|
if (onlineMoneyPay > 0) {
|
|
if (onlineMoneyPay > 0) {
|
|
//该单线上余额
|
|
//该单线上余额
|
|
Double money = cmReceiptOrderRelationDao.findMoney(s);
|
|
Double money = cmReceiptOrderRelationDao.findMoney(s);
|
|
- //实际退款=待支付总线上余额>该笔退款金额,则退全额,否则退待支付
|
|
|
|
|
|
+ //待支付总线上余额>该笔退款金额,则退全额,否则退待支付
|
|
Double refundMoney = MathUtil.compare(onlineMoneyPay, money) > 0 ? money : onlineMoneyPay;
|
|
Double refundMoney = MathUtil.compare(onlineMoneyPay, money) > 0 ? money : onlineMoneyPay;
|
|
- //退款
|
|
|
|
- // 当前时间戳
|
|
|
|
- long time = System.currentTimeMillis() / 1000;
|
|
|
|
- json.put("time", time);
|
|
|
|
- //商户退款流水号,由商户自行生成,必须唯一 orderid+余额退现+orid
|
|
|
|
- String merchantRefundNo = orderId + "YETX" + orderRelation.getId();
|
|
|
|
- json.put("merchantRefundNo", merchantRefundNo);
|
|
|
|
- //退款金额,单位分,必须大于0
|
|
|
|
- int refundAmt = (int) (refundMoney * 100);
|
|
|
|
- json.put("refundAmt", refundAmt);
|
|
|
|
- //退款原因
|
|
|
|
- String refundCause = "用户主动退款";
|
|
|
|
- json.put("refundCause", refundCause);
|
|
|
|
- //平台交易订单号
|
|
|
|
- json.put("mbOrderId", s);
|
|
|
|
- String sign = PayUtils.buildSign(json, merKey);
|
|
|
|
- json.put("sign", sign);
|
|
|
|
- String data = PayUtils.buildDataPrivate(json, merKey);
|
|
|
|
- JSONObject result = PayUtils.httpPost("https://platform.mhxxkj.com/paygateway/mbrefund/orderRefund/v1", merAccount, data);
|
|
|
|
- String code = result.getString("code");
|
|
|
|
- if (!"000000".equals(code)) {
|
|
|
|
- String msg = result.getString("msg");
|
|
|
|
- logger.info("余额退现失败>>>>>>>msg:" + msg);
|
|
|
|
- throw new Exception("第三方退款失败!");
|
|
|
|
- }else{
|
|
|
|
- //存cm_online_refund
|
|
|
|
- CmOnlineRefundVo cmOnlineRefundVo = new CmOnlineRefundVo();
|
|
|
|
- cmOnlineRefundVo.setUserId(userId);
|
|
|
|
- cmOnlineRefundVo.setOrderId(orderId.toString());
|
|
|
|
- cmOnlineRefundVo.setAmount(refundMoney.toString());
|
|
|
|
- cmOnlineRefundVo.setRefundType("2");
|
|
|
|
- cmOnlineRefundVo.setMborderId(s);
|
|
|
|
- cmOnlineRefundVo.setOrderRequestNo(merchantRefundNo);
|
|
|
|
- cmReceiptOrderRelationDao.insertOnlineRefund(cmOnlineRefundVo);
|
|
|
|
- }
|
|
|
|
- //应付减已退
|
|
|
|
|
|
+ String payType=cmReceiptOrderRelationDao.findPayTypeByOrderRequestNo(s);
|
|
|
|
+ //todo 退款
|
|
|
|
+
|
|
|
|
+
|
|
onlineMoneyPay = MathUtil.sub(onlineMoneyPay, money).doubleValue();
|
|
onlineMoneyPay = MathUtil.sub(onlineMoneyPay, money).doubleValue();
|
|
}
|
|
}
|
|
- if(onlineMoneyPay<=0){
|
|
|
|
- break;
|
|
|
|
- }
|
|
|
|
}
|
|
}
|
|
}
|
|
}
|
|
if(onlineMoneyPay<=0){
|
|
if(onlineMoneyPay<=0){
|