| @@ -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()); | ||||
| @@ -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,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); | |||||
| /** | /** | ||||
| * 微信支付订单查询 | * 微信支付订单查询 | ||||
| @@ -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) { | ||||
| @@ -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); | ||||