| @@ -146,8 +146,7 @@ public class TtCouponGoodsController extends DouyinBaseController { | |||
| } | |||
| try { | |||
| //boolean isSaas = this.isGoodLifeSaas(); | |||
| boolean isSaas = true; | |||
| boolean isSaas = this.isGoodLifeSaas(); | |||
| return ttCouponGoodsService.productSave(coupon,isSaas); | |||
| } catch (Exception e) { | |||
| logger.error("product save error.",e); | |||
| @@ -38,89 +38,89 @@ public class WxPayBillController extends BaseController { | |||
| @Autowired | |||
| WxMerchantService wxMerchantService; | |||
| @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()); | |||
| //bill参数不能为空 | |||
| String billIdStr = paramMap.get("billId"); | |||
| if (StringUtils.isEmpty(billIdStr)) { | |||
| logger.info("billId不能为空: " + paramMap.toString()); | |||
| return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "billId不能为空"); | |||
| } | |||
| //bill参数要为Long | |||
| Long billId; | |||
| try { | |||
| billId = Long.valueOf(billIdStr); | |||
| } catch (NumberFormatException e) { | |||
| return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "billId参数不正确"); | |||
| } | |||
| String billTypeValueStr = paramMap.get("billTypeValue"); | |||
| if (StringUtils.isEmpty(billTypeValueStr)) { | |||
| return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "billTypeValue不能为空"); | |||
| } | |||
| Integer billTypeValue = null; | |||
| try { | |||
| billTypeValue = Integer.parseInt(billTypeValueStr); | |||
| } 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)) { | |||
| return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "bUserId不能为空"); | |||
| } | |||
| //b_user_id参数要为Long | |||
| Long bUserId; | |||
| try { | |||
| bUserId = Long.valueOf(bUserIdStr); | |||
| } catch (NumberFormatException e) { | |||
| return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "bUserId参数不正确"); | |||
| } | |||
| //appid | |||
| String appid = paramMap.get("appId"); | |||
| //openid | |||
| String openid = paramMap.get("openId"); | |||
| //获取小程序配置信息 | |||
| WxAppinfo appInfo = getAppInfo(appid,getTenantInfo().getTenantId()); | |||
| //支付账单参数 | |||
| WxPayBill record = new WxPayBill(); | |||
| record.setBillId(billId); | |||
| record.setOpenId(openid); | |||
| record.setbUserId(bUserId); | |||
| record.updateTenantInfo(getTenantInfo()); | |||
| try { | |||
| record.setIp(IPUtil.getIpAddr(request)); | |||
| 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()); | |||
| } catch (Exception e) { | |||
| logger.error("payment wechat, order create error, req 3: " + record.toString() + ", e:" + e.getMessage()); | |||
| return new ResultData(ErrorCode.PAY_ORDER_ERROR, e.getMessage()); | |||
| } | |||
| } | |||
| // @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()); | |||
| // //bill参数不能为空 | |||
| // String billIdStr = paramMap.get("billId"); | |||
| // if (StringUtils.isEmpty(billIdStr)) { | |||
| // logger.info("billId不能为空: " + paramMap.toString()); | |||
| // return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "billId不能为空"); | |||
| // } | |||
| // //bill参数要为Long | |||
| // Long billId; | |||
| // try { | |||
| // billId = Long.valueOf(billIdStr); | |||
| // } catch (NumberFormatException e) { | |||
| // return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "billId参数不正确"); | |||
| // } | |||
| // | |||
| // String billTypeValueStr = paramMap.get("billTypeValue"); | |||
| // if (StringUtils.isEmpty(billTypeValueStr)) { | |||
| // return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "billTypeValue不能为空"); | |||
| // } | |||
| // | |||
| // Integer billTypeValue = null; | |||
| // try { | |||
| // billTypeValue = Integer.parseInt(billTypeValueStr); | |||
| // } 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)) { | |||
| // return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "bUserId不能为空"); | |||
| // } | |||
| // | |||
| // //b_user_id参数要为Long | |||
| // Long bUserId; | |||
| // try { | |||
| // bUserId = Long.valueOf(bUserIdStr); | |||
| // } catch (NumberFormatException e) { | |||
| // return new ResultData(ErrorCode.SYS_PARAMETER_NOT_NULL.getCode(), "bUserId参数不正确"); | |||
| // } | |||
| // //appid | |||
| // String appid = paramMap.get("appId"); | |||
| // //openid | |||
| // String openid = paramMap.get("openId"); | |||
| // //获取小程序配置信息 | |||
| // WxAppinfo appInfo = getAppInfo(appid,getTenantInfo().getTenantId()); | |||
| // //支付账单参数 | |||
| // WxPayBill record = new WxPayBill(); | |||
| // record.setBillId(billId); | |||
| // record.setOpenId(openid); | |||
| // record.setbUserId(bUserId); | |||
| // record.updateTenantInfo(getTenantInfo()); | |||
| // try { | |||
| // record.setIp(IPUtil.getIpAddr(request)); | |||
| // 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()); | |||
| // } catch (Exception e) { | |||
| // logger.error("payment wechat, order create error, req 3: " + record.toString() + ", e:" + e.getMessage()); | |||
| // return new ResultData(ErrorCode.PAY_ORDER_ERROR, e.getMessage()); | |||
| // } | |||
| // } | |||
| @ApiOperation(value = "更新支付订单状态", notes = "{\"payBillId\":\"string\",\"billId\":\"string\",\"status\":integer,\"reason\":\"string\"}") | |||
| @PostMapping("/updatePayBill") | |||
| @@ -1,6 +1,7 @@ | |||
| package com.iformall.controller.callback; | |||
| import com.alibaba.fastjson.JSON; | |||
| import com.iformall.common.ErrorCode; | |||
| import com.iformall.controller.base.BaseController; | |||
| import com.iformall.domain.po.msg.FmInsideNotifyBillPaidSuccessMsg; | |||
| import com.iformall.domain.po.msg.FmInsideNotifyCarPaidSuccessMsg; | |||
| @@ -29,6 +30,8 @@ import org.slf4j.LoggerFactory; | |||
| import org.springframework.beans.factory.annotation.Autowired; | |||
| import org.springframework.http.MediaType; | |||
| import org.springframework.web.bind.annotation.PathVariable; | |||
| import org.springframework.web.bind.annotation.PostMapping; | |||
| import org.springframework.web.bind.annotation.RequestBody; | |||
| import org.springframework.web.bind.annotation.RequestMapping; | |||
| import org.springframework.web.bind.annotation.ResponseBody; | |||
| import org.springframework.web.bind.annotation.RestController; | |||
| @@ -39,6 +42,7 @@ import java.io.IOException; | |||
| import java.io.InputStream; | |||
| import java.nio.charset.Charset; | |||
| import java.util.Date; | |||
| import java.util.HashMap; | |||
| import java.util.Map; | |||
| import java.util.SortedMap; | |||
| import java.util.TreeMap; | |||
| @@ -70,8 +74,20 @@ public class WxPayBillController extends BaseController { | |||
| @Autowired | |||
| private FmInsideNotifyBillPaidSuccessMsgServiceImpl fmInsideNotifyBillPaidSuccessMsgServiceImpl; | |||
| private void handleCallBack(String tenantId,EnumMsgRecordType msgType,EnumBillPayChannel payChannel,EnumBillPayWay payWay,Map params) throws Exception { | |||
| FmInsideNotifyBillPaidSuccessMsg refundSuccessMsg = new FmInsideNotifyBillPaidSuccessMsg(); | |||
| refundSuccessMsg.setTenantId(tenantId); | |||
| refundSuccessMsg.setMsgType(msgType.getCode()); | |||
| refundSuccessMsg.setDelayTimeLevel(3); | |||
| refundSuccessMsg.setPayChannel(payChannel.getCode()); | |||
| refundSuccessMsg.setPayWay(payWay.getCode()); | |||
| refundSuccessMsg.setJsonMsg(JSON.toJSONString(params)); | |||
| fmInsideNotifyBillPaidSuccessMsgServiceImpl.send(refundSuccessMsg); | |||
| //mqBaseProducer.sendMessage(refundSuccessMsg, EnumMsgMqTopic.DEFAULT.getCode(), EnumMsgMqTag.DEFAULT.getCode(), EnumMsgMqKey.DEFAULT.getCode()); | |||
| } | |||
| @RequestMapping(value = "/wx/paid/{tenantId}") | |||
| public String parkInCallback(@PathVariable String tenantId,HttpServletRequest request) { | |||
| public String wxPaidCallback(@PathVariable String tenantId,HttpServletRequest request) { | |||
| Map<String, String> paramMap = null; | |||
| String response = ""; | |||
| String xml = ""; | |||
| @@ -79,18 +95,7 @@ public class WxPayBillController extends BaseController { | |||
| xml = IOUtils.toString(request.getInputStream(), Charset.forName("UTF-8")); | |||
| paramMap = WxPayment.xmlToMap(xml); | |||
| paramMap.put("tenantId", tenantId); | |||
| String jsonMsg = JSON.toJSONString(paramMap); | |||
| FmInsideNotifyBillPaidSuccessMsg refundSuccessMsg = new FmInsideNotifyBillPaidSuccessMsg(); | |||
| refundSuccessMsg.setTenantId(tenantId); | |||
| refundSuccessMsg.setMsgType(EnumMsgRecordType.BILL_PAID.getCode()); | |||
| refundSuccessMsg.setDelayTimeLevel(3); | |||
| refundSuccessMsg.setPayChannel(EnumBillPayChannel.WX_MINI_PROGRAM.getCode()); | |||
| refundSuccessMsg.setPayWay(EnumBillPayWay.WECHAT_PAY.getCode()); | |||
| refundSuccessMsg.setJsonMsg(jsonMsg); | |||
| //mqBaseProducer.sendMessage(refundSuccessMsg, EnumMsgMqTopic.DEFAULT.getCode(), EnumMsgMqTag.DEFAULT.getCode(), EnumMsgMqKey.DEFAULT.getCode()); | |||
| fmInsideNotifyBillPaidSuccessMsgServiceImpl.send(refundSuccessMsg); | |||
| handleCallBack(tenantId, EnumMsgRecordType.BILL_PAID, EnumBillPayChannel.WX_MINI_PROGRAM, EnumBillPayWay.WECHAT_PAY, paramMap); | |||
| logger.info("billPaid wxpay, notify success, req : " + xml + ", resp: " + response.toString()); | |||
| SortedMap resultMap = new TreeMap(); | |||
| resultMap.put("return_code", "SUCCESS"); | |||
| @@ -117,6 +122,33 @@ public class WxPayBillController extends BaseController { | |||
| return XmlUtil.getRequestXml(resultMap); | |||
| } | |||
| } | |||
| @PostMapping(value = "/jianhang/paid/{tenantId}") | |||
| public String jianhangPaidCallback(@PathVariable String tenantId,HttpServletRequest request) { | |||
| try { | |||
| EnumBillPayWay payWay = null; | |||
| String payway_real = request.getParameter("ACC_TYPE"); | |||
| if ("AL".equals(payway_real.toUpperCase())) { | |||
| payWay = EnumBillPayWay.ALIPAY; | |||
| }else if ("WX".equals(payway_real.toUpperCase())) { | |||
| payWay = EnumBillPayWay.WECHAT_PAY; | |||
| }else { | |||
| payWay = EnumBillPayWay.BANK; | |||
| } | |||
| Map paramMap = new HashMap(); | |||
| paramMap.put("SUCCESS", request.getParameter("SUCCESS")); | |||
| paramMap.put("PAYMENT", request.getParameter("PAYMENT")); | |||
| paramMap.put("REMARK1", request.getParameter("REMARK1")); | |||
| paramMap.put("REMARK2", request.getParameter("REMARK2")); | |||
| paramMap.put("ORDERID", request.getParameter("ORDERID")); | |||
| handleCallBack(tenantId, EnumMsgRecordType.BILL_PAID, EnumBillPayChannel.BANK_JIANSHE_MA, payWay, paramMap); | |||
| return "success"; | |||
| } catch (Exception e) { | |||
| logger.error("jianhangPaidCallback error",e); | |||
| throw new MallinkException(ErrorCode.API_KEY_NOT_FOUND.getCode(),e.getMessage()); | |||
| } | |||
| } | |||
| @@ -13,5 +13,5 @@ public interface PayBillAdapterService { | |||
| public Object createPay(WxPayAccountBill wxPayAccountBill,WxMerchantBUser buser,WxBillBaseEntity billdetail,Double money,Map<String,String> params); | |||
| //支付通知处理 | |||
| public void paidCallBack(String tenantId,EnumBillPayWay payWay,Map<String, String> paramMap); | |||
| public void paidCallBack(String tenantId,EnumBillPayWay payWay,Map paramMap); | |||
| } | |||
| @@ -15,6 +15,7 @@ import com.iformall.common.IdWorker; | |||
| import com.iformall.domain.po.WxMerchantBUser; | |||
| import com.iformall.domain.po.WxPayAccountBill; | |||
| import com.iformall.domain.po.base.WxBillBaseEntity; | |||
| import com.iformall.enums.EnumBillAllType; | |||
| import com.iformall.enums.EnumBillPayWay; | |||
| import com.iformall.service.payBill.PayBillAdapterService; | |||
| import com.iformall.service.payBill.impl.entity.JianHangMaRequest; | |||
| @@ -77,9 +78,19 @@ public class JianHangMaServiceImpl extends PayBillBaseService implements PayBill | |||
| } | |||
| @Override | |||
| public void paidCallBack(String tenantId,EnumBillPayWay payWay, Map<String, String> paramMap) { | |||
| public void paidCallBack(String tenantId,EnumBillPayWay payWay, Map paramMap) { | |||
| String success = (String) paramMap.get("SUCCESS"); | |||
| if ("Y".equals(success.toUpperCase())) { | |||
| String money = (String) paramMap.get("PAYMENT"); | |||
| String remark1 = (String) paramMap.get("REMARK1"); | |||
| String[] remark1_args = remark1.split("_"); | |||
| Integer billType = Integer.parseInt(remark1_args[0]); | |||
| Long billId = Long.parseLong(remark1_args[1]); | |||
| Long merchantBUserId = Long.parseLong((String)paramMap.get("REMARK2")); | |||
| String orderId = (String) paramMap.get("ORDERID"); | |||
| this.updateBillPaid(tenantId, merchantBUserId, EnumBillAllType.getEnum(billType), billId, | |||
| money, payWay, "商户单号"+orderId); | |||
| } | |||
| } | |||
| } | |||
| @@ -81,23 +81,23 @@ public class WxMiniProgramServiceImpl extends PayBillBaseService implements PayB | |||
| } | |||
| @Override | |||
| public void paidCallBack(String tenantId,EnumBillPayWay payWay, Map<String, String> paramMap) { | |||
| public void paidCallBack(String tenantId,EnumBillPayWay payWay, Map paramMap) { | |||
| log.debug("handleWxBillPaidCallBack."+JSON.toJSONString(paramMap)); | |||
| //支付返回消息 | |||
| String returnCode = paramMap.get("return_code"); | |||
| String returnCode = (String)paramMap.get("return_code"); | |||
| if ("SUCCESS".equals(returnCode)) { | |||
| String resultCode = paramMap.get("result_code"); | |||
| String resultCode = (String)paramMap.get("result_code"); | |||
| if ("SUCCESS".equals(resultCode)) { | |||
| //判断支付金额是否大于0 | |||
| String cashFeeStr = paramMap.get("cash_fee"); | |||
| String cashFeeStr = (String)paramMap.get("cash_fee"); | |||
| Integer cashFee = Integer.parseInt(cashFeeStr); | |||
| if (cashFee > 0 ) { | |||
| try { | |||
| //String payOrderNo = paramMap.get("out_trade_no"); | |||
| String time_end = paramMap.get("time_end"); | |||
| String transcationId = paramMap.get("transaction_id"); | |||
| String time_end = (String)paramMap.get("time_end"); | |||
| String transcationId = (String)paramMap.get("transaction_id"); | |||
| String attach = paramMap.get("attach"); | |||
| String attach = (String)paramMap.get("attach"); | |||
| if (!StringUtils.isBlank(attach)) { | |||
| String[] attrs = attach.split(","); | |||
| if (attrs.length == 3) { | |||
| @@ -120,11 +120,11 @@ public class WxMiniProgramServiceImpl extends PayBillBaseService implements PayB | |||
| } | |||
| } | |||
| }else { | |||
| String errorMsg = paramMap.get("err_code_des"); | |||
| String errorMsg = (String)paramMap.get("err_code_des"); | |||
| throw new MallinkException(ErrorCode.API_KEY_NOT_FOUND.getCode(),errorMsg); | |||
| } | |||
| }else { | |||
| String errorMsg = paramMap.get("return_msg"); | |||
| String errorMsg = (String)paramMap.get("return_msg"); | |||
| throw new MallinkException(ErrorCode.API_KEY_NOT_FOUND.getCode(),errorMsg); | |||
| } | |||
| } | |||