| @@ -4,10 +4,12 @@ import com.iformall.common.ErrorCode; | |||
| import com.iformall.common.Result; | |||
| import com.iformall.common.ResultData; | |||
| import com.iformall.domain.po.WxAppinfo; | |||
| import com.iformall.domain.po.WxMerchant; | |||
| import com.iformall.domain.po.WxPayBill; | |||
| import com.iformall.enums.EnumPayStatus; | |||
| import com.iformall.enums.EnumPayWay; | |||
| import com.iformall.exception.MallinkException; | |||
| import com.iformall.service.WxMerchantService; | |||
| import com.iformall.service.WxPayBillService; | |||
| import com.iformall.utils.IPUtil; | |||
| import io.swagger.annotations.Api; | |||
| @@ -32,8 +34,11 @@ public class WxPayBillController extends BaseController { | |||
| @Autowired | |||
| 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) | |||
| public ResultData _create(@RequestBody Map<String, String> paramMap, HttpServletRequest request) throws Exception { | |||
| logger.info("/api/pay/create" + paramMap.toString()); | |||
| @@ -53,7 +58,6 @@ public class WxPayBillController extends BaseController { | |||
| String billTypeValueStr = paramMap.get("billTypeValue"); | |||
| if (StringUtils.isEmpty(billTypeValueStr)) { | |||
| logger.info("billId不能为空: " + paramMap.toString()); | |||
| return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "billTypeValue不能为空"); | |||
| } | |||
| @@ -63,11 +67,27 @@ public class WxPayBillController extends BaseController { | |||
| } catch (NumberFormatException e) { | |||
| 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 | |||
| String bUserIdStr = paramMap.get("bUserId"); | |||
| if (StringUtils.isEmpty(bUserIdStr)) { | |||
| logger.info("bUserId不能为空: " + paramMap.toString()); | |||
| return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "bUserId不能为空"); | |||
| } | |||
| @@ -92,7 +112,7 @@ public class WxPayBillController extends BaseController { | |||
| record.updateTenantInfo(getTenantInfo()); | |||
| try { | |||
| 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) { | |||
| logger.error("payment wechat, order create error, req 2: " + record.toString() + ", e:" + e.getMessage()); | |||
| return new ResultData(e.getErrorCode(), e.getMessage()); | |||
| @@ -26,6 +26,7 @@ public class WxPayBill extends TenantEntity { | |||
| private Long billId; | |||
| @io.swagger.annotations.ApiModelProperty(value="用户ID",name="bUserId") | |||
| private Long bUserId; | |||
| @io.swagger.annotations.ApiModelProperty(value="ip地址",name="ip") | |||
| private String ip; | |||
| @io.swagger.annotations.ApiModelProperty(value="支付金额(分)",name="payAmount") | |||
| @@ -2,6 +2,7 @@ package com.iformall.service; | |||
| import com.iformall.common.ResultData; | |||
| import com.iformall.domain.po.WxAppinfo; | |||
| import com.iformall.domain.po.WxMerchant; | |||
| import com.iformall.domain.po.WxPayBill; | |||
| import com.iformall.enums.EnumPayWay; | |||
| @@ -19,7 +20,7 @@ public interface WxPayBillService { | |||
| * @param payWay | |||
| * @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; | |||
| //账单类型 | |||
| wxBillAll.setBillTypeValue(EnumBillQueryType.getRealType(wxBillAll.getBillTypeValue())); | |||
| wxBillAll.setMerchantId(wxMerchant.getId()); | |||
| if (wxBillAll.getBillTypeValue().equals(EnumBillQueryType.RENT.getCode())) { | |||
| wxBillAll.setBillTypeValue(EnumBillQueryType.RENT.getCode()); | |||
| maps = wxBillAllMapper.listRentBillData(wxBillAll); | |||
| @@ -332,9 +333,7 @@ public class WxBillAllServiceImpl implements WxBillAllService { | |||
| map.put("receivePay", settle.getBalance()); | |||
| } | |||
| } | |||
| if (null != wxMerchant) { | |||
| map.put("merchantName", wxMerchant.getName()); | |||
| } | |||
| map.put("merchantName", wxMerchant.getName()); | |||
| if (hasShop) { | |||
| Long shopId = (Long) map.get("shopId"); | |||
| if (null != shopId) { | |||
| @@ -9,6 +9,8 @@ import com.iformall.common.Result; | |||
| import com.iformall.common.ResultData; | |||
| import com.iformall.domain.po.WxAppinfo; | |||
| 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.WxPayBill; | |||
| import com.iformall.domain.vo.WxBillAll; | |||
| @@ -18,6 +20,8 @@ import com.iformall.mapper.*; | |||
| import com.iformall.pay.*; | |||
| import com.iformall.service.WxBillAllService; | |||
| import com.iformall.service.WxBillSettleService; | |||
| import com.iformall.service.WxMerchantBUserService; | |||
| import com.iformall.service.WxMerchantService; | |||
| import com.iformall.service.WxPayBillService; | |||
| import com.iformall.utils.*; | |||
| import org.apache.commons.lang3.StringUtils; | |||
| @@ -61,6 +65,14 @@ public class WxPayBillServiceImpl implements WxPayBillService { | |||
| @Lazy | |||
| @Autowired | |||
| private WxBillSettleService wxBillSettleService; | |||
| @Lazy | |||
| @Autowired | |||
| WxMerchantBUserService wxMerchantBUserService; | |||
| @Lazy | |||
| @Autowired | |||
| WxMerchantService wxMerchantService; | |||
| JSONObject errorMap = JSON.parseObject("{" + | |||
| "\"NOAUTH\":{\"detail\":\"商户无此接口权限\",\"reason\":\"商户未开通此接口权限\",\"resolution\":\"请商户前往申请此接口权限\"}," + | |||
| @@ -92,7 +104,7 @@ public class WxPayBillServiceImpl implements WxPayBillService { | |||
| "\"XML_FORMAT_ERROR\":{\"detail\":\"XML格式错误\t\",\"reason\":\"XML格式错误\",\"reason\":\"请检查XML参数格式是否正确\"}}"); | |||
| @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(); | |||
| EnumPayShare isShare = EnumPayShare.NO; | |||
| @@ -102,7 +114,7 @@ public class WxPayBillServiceImpl implements WxPayBillService { | |||
| wxBillAll.updateTenantInfo(record); | |||
| wxBillAll.setId(record.getBillId()); | |||
| 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) { | |||
| logger.error("pay bill, bill not allow, repaymentReq: " + JSONObject.toJSONString(record) + ", payWay: " + payWay.toString()); | |||
| throw new MallinkException(ErrorCode.BILL_ROUTINE_IS_NOT_FOUND); | |||
| @@ -709,7 +721,9 @@ public class WxPayBillServiceImpl implements WxPayBillService { | |||
| WxBillAll wxBillAll = new WxBillAll(); | |||
| wxBillAll.setId(record.getBillId()); | |||
| 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) { | |||
| Map<String, Object> bill = bills.get(0); | |||
| bill.put("userId", record.getbUserId()); | |||
| @@ -768,7 +782,9 @@ public class WxPayBillServiceImpl implements WxPayBillService { | |||
| WxBillAll wxBillAll = new WxBillAll(); | |||
| wxBillAll.setId(record.getBillId()); | |||
| 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) { | |||
| logger.error("pay handle, bill " + record.getBillId() + " not found , payBillNo : " + record.getPayBillNo()); | |||
| throw new MallinkException(ErrorCode.ORDER_IS_NOT_FIND); | |||