winter 4 лет назад
Родитель
Сommit
218bd927ea
5 измененных файлов: 49 добавлений и 12 удалений
  1. +24
    -4
      mallinkBApi/src/main/java/com/iformall/controller/WxPayBillController.java
  2. +1
    -0
      mallinkService/src/main/java/com/iformall/domain/po/WxPayBill.java
  3. +2
    -1
      mallinkService/src/main/java/com/iformall/service/WxPayBillService.java
  4. +2
    -3
      mallinkService/src/main/java/com/iformall/service/impl/WxBillAllServiceImpl.java
  5. +20
    -4
      mallinkService/src/main/java/com/iformall/service/impl/WxPayBillServiceImpl.java

+ 24
- 4
mallinkBApi/src/main/java/com/iformall/controller/WxPayBillController.java Просмотреть файл

@@ -4,10 +4,12 @@ import com.iformall.common.ErrorCode;
import com.iformall.common.Result; import com.iformall.common.Result;
import com.iformall.common.ResultData; import com.iformall.common.ResultData;
import com.iformall.domain.po.WxAppinfo; import com.iformall.domain.po.WxAppinfo;
import com.iformall.domain.po.WxMerchant;
import com.iformall.domain.po.WxPayBill; import com.iformall.domain.po.WxPayBill;
import com.iformall.enums.EnumPayStatus; import com.iformall.enums.EnumPayStatus;
import com.iformall.enums.EnumPayWay; import com.iformall.enums.EnumPayWay;
import com.iformall.exception.MallinkException; import com.iformall.exception.MallinkException;
import com.iformall.service.WxMerchantService;
import com.iformall.service.WxPayBillService; import com.iformall.service.WxPayBillService;
import com.iformall.utils.IPUtil; import com.iformall.utils.IPUtil;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
@@ -32,8 +34,11 @@ public class WxPayBillController extends BaseController {


@Autowired @Autowired
private WxPayBillService wxPayBillService; private WxPayBillService wxPayBillService;
@Autowired
WxMerchantService wxMerchantService;


@ApiOperation(value = "发起微信小程序支付订单", notes = "{\"billTypeValue\":\"string\",\"billId\":\"string\",\"appId\":\"string\",\"openId\":\"string\",\"bUserId\":\"string\"}")
@ApiOperation(value = "发起微信小程序支付订单", notes = "{\"billTypeValue\":\"string\",\"billId\":\"string\",\"appId\":\"string\",\"openId\":\"string\",\"bUserId\":\"string\",\"merchantId\":\"string\"}")
@RequestMapping(value = "/create", method = RequestMethod.POST) @RequestMapping(value = "/create", method = RequestMethod.POST)
public ResultData _create(@RequestBody Map<String, String> paramMap, HttpServletRequest request) throws Exception { public ResultData _create(@RequestBody Map<String, String> paramMap, HttpServletRequest request) throws Exception {
logger.info("/api/pay/create" + paramMap.toString()); logger.info("/api/pay/create" + paramMap.toString());
@@ -53,7 +58,6 @@ public class WxPayBillController extends BaseController {
String billTypeValueStr = paramMap.get("billTypeValue"); String billTypeValueStr = paramMap.get("billTypeValue");
if (StringUtils.isEmpty(billTypeValueStr)) { if (StringUtils.isEmpty(billTypeValueStr)) {
logger.info("billId不能为空: " + paramMap.toString());
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "billTypeValue不能为空"); return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "billTypeValue不能为空");
} }
@@ -63,11 +67,27 @@ public class WxPayBillController extends BaseController {
} catch (NumberFormatException e) { } catch (NumberFormatException e) {
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "billTypeValue参数不正确"); return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "billTypeValue参数不正确");
} }
String merchantIdStr = paramMap.get("merchantId");
if (StringUtils.isEmpty(merchantIdStr)) {
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "merchantId不能为空");
}
Long merchantId = null;
try {
merchantId = Long.parseLong(merchantIdStr);
} catch (NumberFormatException e) {
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "merchantId参数不正确");
}
WxMerchant wxMerchant = wxMerchantService.getById(merchantId);
if(wxMerchant==null){
return new ResultData(ErrorCode.MERCHANT_INFO_NOT_FOUND);
}


//b_user_id //b_user_id
String bUserIdStr = paramMap.get("bUserId"); String bUserIdStr = paramMap.get("bUserId");
if (StringUtils.isEmpty(bUserIdStr)) { if (StringUtils.isEmpty(bUserIdStr)) {
logger.info("bUserId不能为空: " + paramMap.toString());
return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "bUserId不能为空"); return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "bUserId不能为空");
} }


@@ -92,7 +112,7 @@ public class WxPayBillController extends BaseController {
record.updateTenantInfo(getTenantInfo()); record.updateTenantInfo(getTenantInfo());
try { try {
record.setIp(IPUtil.getIpAddr(request)); record.setIp(IPUtil.getIpAddr(request));
return wxPayBillService.createPayBill(billTypeValue,appInfo, record, EnumPayWay.PAY_WAY_WECHAT);
return wxPayBillService.createPayBill(wxMerchant,billTypeValue,appInfo, record, EnumPayWay.PAY_WAY_WECHAT);
} catch (MallinkException e) { } catch (MallinkException e) {
logger.error("payment wechat, order create error, req 2: " + record.toString() + ", e:" + e.getMessage()); logger.error("payment wechat, order create error, req 2: " + record.toString() + ", e:" + e.getMessage());
return new ResultData(e.getErrorCode(), e.getMessage()); return new ResultData(e.getErrorCode(), e.getMessage());


+ 1
- 0
mallinkService/src/main/java/com/iformall/domain/po/WxPayBill.java Просмотреть файл

@@ -26,6 +26,7 @@ public class WxPayBill extends TenantEntity {
private Long billId; private Long billId;
@io.swagger.annotations.ApiModelProperty(value="用户ID",name="bUserId") @io.swagger.annotations.ApiModelProperty(value="用户ID",name="bUserId")
private Long bUserId; private Long bUserId;
@io.swagger.annotations.ApiModelProperty(value="ip地址",name="ip") @io.swagger.annotations.ApiModelProperty(value="ip地址",name="ip")
private String ip; private String ip;
@io.swagger.annotations.ApiModelProperty(value="支付金额(分)",name="payAmount") @io.swagger.annotations.ApiModelProperty(value="支付金额(分)",name="payAmount")


+ 2
- 1
mallinkService/src/main/java/com/iformall/service/WxPayBillService.java Просмотреть файл

@@ -2,6 +2,7 @@ package com.iformall.service;


import com.iformall.common.ResultData; import com.iformall.common.ResultData;
import com.iformall.domain.po.WxAppinfo; import com.iformall.domain.po.WxAppinfo;
import com.iformall.domain.po.WxMerchant;
import com.iformall.domain.po.WxPayBill; import com.iformall.domain.po.WxPayBill;
import com.iformall.enums.EnumPayWay; import com.iformall.enums.EnumPayWay;


@@ -19,7 +20,7 @@ public interface WxPayBillService {
* @param payWay * @param payWay
* @return * @return
*/ */
ResultData createPayBill(Integer billTypeValue,WxAppinfo appInfo, WxPayBill record, EnumPayWay payWay);
ResultData createPayBill(WxMerchant merchant,Integer billTypeValue,WxAppinfo appInfo, WxPayBill record, EnumPayWay payWay);


/** /**
* 微信支付订单查询 * 微信支付订单查询


+ 2
- 3
mallinkService/src/main/java/com/iformall/service/impl/WxBillAllServiceImpl.java Просмотреть файл

@@ -293,6 +293,7 @@ public class WxBillAllServiceImpl implements WxBillAllService {
List<Map<String, Object>> maps = null; List<Map<String, Object>> maps = null;
//账单类型 //账单类型
wxBillAll.setBillTypeValue(EnumBillQueryType.getRealType(wxBillAll.getBillTypeValue())); wxBillAll.setBillTypeValue(EnumBillQueryType.getRealType(wxBillAll.getBillTypeValue()));
wxBillAll.setMerchantId(wxMerchant.getId());
if (wxBillAll.getBillTypeValue().equals(EnumBillQueryType.RENT.getCode())) { if (wxBillAll.getBillTypeValue().equals(EnumBillQueryType.RENT.getCode())) {
wxBillAll.setBillTypeValue(EnumBillQueryType.RENT.getCode()); wxBillAll.setBillTypeValue(EnumBillQueryType.RENT.getCode());
maps = wxBillAllMapper.listRentBillData(wxBillAll); maps = wxBillAllMapper.listRentBillData(wxBillAll);
@@ -332,9 +333,7 @@ public class WxBillAllServiceImpl implements WxBillAllService {
map.put("receivePay", settle.getBalance()); map.put("receivePay", settle.getBalance());
} }
} }
if (null != wxMerchant) {
map.put("merchantName", wxMerchant.getName());
}
map.put("merchantName", wxMerchant.getName());
if (hasShop) { if (hasShop) {
Long shopId = (Long) map.get("shopId"); Long shopId = (Long) map.get("shopId");
if (null != shopId) { if (null != shopId) {


+ 20
- 4
mallinkService/src/main/java/com/iformall/service/impl/WxPayBillServiceImpl.java Просмотреть файл

@@ -9,6 +9,8 @@ import com.iformall.common.Result;
import com.iformall.common.ResultData; import com.iformall.common.ResultData;
import com.iformall.domain.po.WxAppinfo; import com.iformall.domain.po.WxAppinfo;
import com.iformall.domain.po.WxBillSettle; import com.iformall.domain.po.WxBillSettle;
import com.iformall.domain.po.WxMerchant;
import com.iformall.domain.po.WxMerchantBUser;
import com.iformall.domain.po.WxPayAccountBill; import com.iformall.domain.po.WxPayAccountBill;
import com.iformall.domain.po.WxPayBill; import com.iformall.domain.po.WxPayBill;
import com.iformall.domain.vo.WxBillAll; import com.iformall.domain.vo.WxBillAll;
@@ -18,6 +20,8 @@ import com.iformall.mapper.*;
import com.iformall.pay.*; import com.iformall.pay.*;
import com.iformall.service.WxBillAllService; import com.iformall.service.WxBillAllService;
import com.iformall.service.WxBillSettleService; import com.iformall.service.WxBillSettleService;
import com.iformall.service.WxMerchantBUserService;
import com.iformall.service.WxMerchantService;
import com.iformall.service.WxPayBillService; import com.iformall.service.WxPayBillService;
import com.iformall.utils.*; import com.iformall.utils.*;
import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.StringUtils;
@@ -61,6 +65,14 @@ public class WxPayBillServiceImpl implements WxPayBillService {
@Lazy @Lazy
@Autowired @Autowired
private WxBillSettleService wxBillSettleService; private WxBillSettleService wxBillSettleService;
@Lazy
@Autowired
WxMerchantBUserService wxMerchantBUserService;
@Lazy
@Autowired
WxMerchantService wxMerchantService;


JSONObject errorMap = JSON.parseObject("{" + JSONObject errorMap = JSON.parseObject("{" +
"\"NOAUTH\":{\"detail\":\"商户无此接口权限\",\"reason\":\"商户未开通此接口权限\",\"resolution\":\"请商户前往申请此接口权限\"}," + "\"NOAUTH\":{\"detail\":\"商户无此接口权限\",\"reason\":\"商户未开通此接口权限\",\"resolution\":\"请商户前往申请此接口权限\"}," +
@@ -92,7 +104,7 @@ public class WxPayBillServiceImpl implements WxPayBillService {
"\"XML_FORMAT_ERROR\":{\"detail\":\"XML格式错误\t\",\"reason\":\"XML格式错误\",\"reason\":\"请检查XML参数格式是否正确\"}}"); "\"XML_FORMAT_ERROR\":{\"detail\":\"XML格式错误\t\",\"reason\":\"XML格式错误\",\"reason\":\"请检查XML参数格式是否正确\"}}");


@Override @Override
public ResultData createPayBill(Integer billTypeValue,WxAppinfo appInfo, WxPayBill record, EnumPayWay payWay) {
public ResultData createPayBill(WxMerchant merchant,Integer billTypeValue,WxAppinfo appInfo, WxPayBill record, EnumPayWay payWay) {
final IdWorker idworker = IdWorker.get(); final IdWorker idworker = IdWorker.get();


EnumPayShare isShare = EnumPayShare.NO; EnumPayShare isShare = EnumPayShare.NO;
@@ -102,7 +114,7 @@ public class WxPayBillServiceImpl implements WxPayBillService {
wxBillAll.updateTenantInfo(record); wxBillAll.updateTenantInfo(record);
wxBillAll.setId(record.getBillId()); wxBillAll.setId(record.getBillId());
wxBillAll.setBillTypeValue(billTypeValue); wxBillAll.setBillTypeValue(billTypeValue);
List<Map<String, Object>> bills = wxBillAllService.listBill(wxBillAll,null,true,false,false,false);
List<Map<String, Object>> bills = wxBillAllService.listBill(wxBillAll,merchant,true,false,false,false);
if (bills.size()==0) { if (bills.size()==0) {
logger.error("pay bill, bill not allow, repaymentReq: " + JSONObject.toJSONString(record) + ", payWay: " + payWay.toString()); logger.error("pay bill, bill not allow, repaymentReq: " + JSONObject.toJSONString(record) + ", payWay: " + payWay.toString());
throw new MallinkException(ErrorCode.BILL_ROUTINE_IS_NOT_FOUND); throw new MallinkException(ErrorCode.BILL_ROUTINE_IS_NOT_FOUND);
@@ -709,7 +721,9 @@ public class WxPayBillServiceImpl implements WxPayBillService {
WxBillAll wxBillAll = new WxBillAll(); WxBillAll wxBillAll = new WxBillAll();
wxBillAll.setId(record.getBillId()); wxBillAll.setId(record.getBillId());
wxBillAll.setBillTypeValue(record.getBillTypeValue()); wxBillAll.setBillTypeValue(record.getBillTypeValue());
List<Map<String, Object>> bills = wxBillAllService.listBill(wxBillAll, null,false, false, false, false);
WxMerchantBUser buser = wxMerchantBUserService.getById(record.getbUserId());
WxMerchant wxMerchant = wxMerchantService.getById(buser.getMerchantId());
List<Map<String, Object>> bills = wxBillAllService.listBill(wxBillAll, wxMerchant,false, false, false, false);
if (bills.size() > 0) { if (bills.size() > 0) {
Map<String, Object> bill = bills.get(0); Map<String, Object> bill = bills.get(0);
bill.put("userId", record.getbUserId()); bill.put("userId", record.getbUserId());
@@ -768,7 +782,9 @@ public class WxPayBillServiceImpl implements WxPayBillService {
WxBillAll wxBillAll = new WxBillAll(); WxBillAll wxBillAll = new WxBillAll();
wxBillAll.setId(record.getBillId()); wxBillAll.setId(record.getBillId());
wxBillAll.setBillTypeValue(record.getBillTypeValue()); wxBillAll.setBillTypeValue(record.getBillTypeValue());
List<Map<String, Object>> bills = wxBillAllService.listBill(wxBillAll, null,false, false, false, false);
WxMerchantBUser buser = wxMerchantBUserService.getById(record.getbUserId());
WxMerchant wxMerchant = wxMerchantService.getById(buser.getMerchantId());
List<Map<String, Object>> bills = wxBillAllService.listBill(wxBillAll, wxMerchant,false, false, false, false);
if (bills.size()==0) { if (bills.size()==0) {
logger.error("pay handle, bill " + record.getBillId() + " not found , payBillNo : " + record.getPayBillNo()); logger.error("pay handle, bill " + record.getBillId() + " not found , payBillNo : " + record.getPayBillNo());
throw new MallinkException(ErrorCode.ORDER_IS_NOT_FIND); throw new MallinkException(ErrorCode.ORDER_IS_NOT_FIND);


Загрузка…
Отмена
Сохранить