Browse Source

[分账][新增]:分账模式检查

release_toaliyun_real
Stormeye.Wu 7 years ago
parent
commit
44088730c0
1 changed files with 23 additions and 2 deletions
  1. +23
    -2
      mallinkService/src/main/java/com/simple/service/impl/WxPayOrderServiceImpl.java

+ 23
- 2
mallinkService/src/main/java/com/simple/service/impl/WxPayOrderServiceImpl.java View File

@@ -63,6 +63,8 @@ public class WxPayOrderServiceImpl implements WxPayOrderService {
@Autowired
WxMerchantMapper wxMerchantMapper;

@Autowired
WxProfitSharingReceiverMapper wxProfitSharingReceiverMapper;

JSONObject errorMap = JSON.parseObject("{" +
"\"NOAUTH\":{\"detail\":\"商户无此接口权限\",\"reason\":\"商户未开通此接口权限\",\"resolution\":\"请商户前往申请此接口权限\"}," +
@@ -97,6 +99,8 @@ public class WxPayOrderServiceImpl implements WxPayOrderService {
public ResultData createPayOrder(boolean isReal, WxAppinfo appInfo, WxCUser user, WxPayOrder record, EnumPayWay payWay) {
final IdWorker idworker = IdWorker.get();

boolean isShare = false;

try {
// 1. check 订单
WxOrder order = wxOrderMapper.selectByPrimaryKey(record.getOrderId());
@@ -111,6 +115,21 @@ public class WxPayOrderServiceImpl implements WxPayOrderService {
if (order.getPaymentType() != EnumPayType.PAY_PAYMENT.getCode()) {
return new ResultData(ErrorCode.PAY_ORDER_IS_NOT_PAYMENT);
}
WxPayAccount payAccount = wxPayAccountMapper.selectByPrimaryKey(appInfo.getPayId());
if (payAccount.isShare()) {
isShare = true;
}
// 1.5 check 分账 receive
if (isShare) {
WxProfitSharingReceiver receiver = new WxProfitSharingReceiver();
receiver.setMerchantId(order.getMerchantId());
List<WxProfitSharingReceiver> merList = wxProfitSharingReceiverMapper.findList(receiver);
if (merList.size() > 0) {
isShare = true;
} else {
isShare = false;
}
}
// 2. check 是否有支付订单
Date currentDate = new Date();
List<WxPayOrder> list = wxPayOrderMapper.findList(record);
@@ -131,6 +150,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService {
record.setPayAmount(order.getPayment());
record.setPayVendor(EnumPayWay.PAY_WAY_WEAPP.getCode());
record.setPayOrderStatus(EnumPayStatus.PAY_WAY_WAIT.getCode());
record.setShare(isShare);

int sqlRow = wxPayOrderMapper.insertSelective(record);
if (sqlRow != 1) {
@@ -139,10 +159,11 @@ public class WxPayOrderServiceImpl implements WxPayOrderService {
}
} else {
record = list.get(0);
record.setShare(isShare);
payOrderNo = String.valueOf(record.getId());
}

WxPayAccount payAccount = wxPayAccountMapper.selectByPrimaryKey(appInfo.getPayId());
if (isReal) {
// 微信实际支付
if (payAccount.getType() == EnumPayMode.MCH.getCode()) {
@@ -224,7 +245,7 @@ public class WxPayOrderServiceImpl implements WxPayOrderService {
wxPayOrderSP.setTime_expire(Utility.getDataFormatStringYYYYMMDDHHmmss(futureDate)); // 15分钟后结束
wxPayOrderSP.setSign_type("HMAC-SHA256");
Map<String, String> payOrderMap = BeanUtils.toStringMap(wxPayOrderSP);
if(payAccount.isShare()) {
if(isShare) {
payOrderMap.put("profit_sharing", "Y");
}
wxPayOrderSP.setSign(WxPayment.createSignHMAC(payOrderMap, payAccount.getApiKey()));


Loading…
Cancel
Save