|
|
@@ -337,48 +337,43 @@ public class StoreOrderScrmController extends AppBaseController {
|
|
|
return R.ok().put("data", dtos);
|
|
|
}
|
|
|
|
|
|
- @Login
|
|
|
- @ApiOperation("创建订单")
|
|
|
- @PostMapping("/create")
|
|
|
- public R create(@Validated @RequestBody FsStoreOrderCreateParam param, HttpServletRequest request) {
|
|
|
- String userId = getUserId();
|
|
|
- param.setIsUserApp(false);
|
|
|
- return orderService.createOrder(Long.parseLong(getUserId()), param);
|
|
|
- }
|
|
|
// @Login
|
|
|
// @ApiOperation("创建订单")
|
|
|
// @PostMapping("/create")
|
|
|
-// public R create(@Validated @RequestBody FsStoreOrderCreateParam param, HttpServletRequest request){
|
|
|
-// String userId=getUserId();
|
|
|
-// return orderService.createOrder(Long.parseLong(getUserId()),param);
|
|
|
+// public R create(@Validated @RequestBody FsStoreOrderCreateParam param, HttpServletRequest request) {
|
|
|
+// String userId = getUserId();
|
|
|
+// param.setIsUserApp(false);
|
|
|
+// return orderService.createOrder(Long.parseLong(getUserId()), param);
|
|
|
// }
|
|
|
-@Login
|
|
|
-@ApiOperation("创建订单")
|
|
|
-@PostMapping("/create")
|
|
|
-public List<R> create(@Validated @RequestBody FsStoreOrderCreateGroupStoreParam param, HttpServletRequest request) {
|
|
|
- List<R> res = new ArrayList<>();
|
|
|
- String combinationOrderId = IdUtil.randomUUID();
|
|
|
- List<String> orderKeys = param.getOrderKeys();
|
|
|
-
|
|
|
- List<String> createOrderKeys = null;
|
|
|
- if (param.getCreateOrderKey()==null){
|
|
|
- createOrderKeys = orderKeys;
|
|
|
- } else {
|
|
|
- createOrderKeys = Arrays.asList(param.getCreateOrderKey().split(","));
|
|
|
- }
|
|
|
- for (int i = 0; i < orderKeys.size(); i++) {
|
|
|
- FsStoreOrderCreateParam fsStoreOrderCreateParam = new FsStoreOrderCreateParam();
|
|
|
- BeanUtils.copyProperties(param, fsStoreOrderCreateParam);
|
|
|
- //备注
|
|
|
- fsStoreOrderCreateParam.setMark(param.getMark().get(i));
|
|
|
- fsStoreOrderCreateParam.setOrderKey(orderKeys.get(i));
|
|
|
- fsStoreOrderCreateParam.setCombinationOrderId(combinationOrderId);
|
|
|
- fsStoreOrderCreateParam.setCreateOrderKey(createOrderKeys.get(i));
|
|
|
- R order = orderService.createOrder(Long.parseLong(getUserId()), fsStoreOrderCreateParam);
|
|
|
- res.add(order);
|
|
|
+ @Login
|
|
|
+ @ApiOperation("创建订单")
|
|
|
+ @PostMapping("/create")
|
|
|
+ public List<R> create(@Validated @RequestBody FsStoreOrderCreateGroupStoreParam param, HttpServletRequest request) {
|
|
|
+ String userId = getUserId();
|
|
|
+ List<R> res = new ArrayList<>();
|
|
|
+ String combinationOrderId = IdUtil.randomUUID();
|
|
|
+ List<String> orderKeys = param.getOrderKeys();
|
|
|
+
|
|
|
+ List<String> createOrderKeys = null;
|
|
|
+ if (param.getCreateOrderKey()==null){
|
|
|
+ createOrderKeys = orderKeys;
|
|
|
+ } else {
|
|
|
+ createOrderKeys = Arrays.asList(param.getCreateOrderKey().split(","));
|
|
|
+ }
|
|
|
+ for (int i = 0; i < orderKeys.size(); i++) {
|
|
|
+ FsStoreOrderCreateParam fsStoreOrderCreateParam = new FsStoreOrderCreateParam();
|
|
|
+ BeanUtils.copyProperties(param, fsStoreOrderCreateParam);
|
|
|
+ param.setIsUserApp(false);
|
|
|
+ //备注
|
|
|
+ fsStoreOrderCreateParam.setMark(param.getMark().get(i));
|
|
|
+ fsStoreOrderCreateParam.setOrderKey(orderKeys.get(i));
|
|
|
+ fsStoreOrderCreateParam.setCombinationOrderId(combinationOrderId);
|
|
|
+ fsStoreOrderCreateParam.setCreateOrderKey(createOrderKeys.get(i));
|
|
|
+ R order = orderService.createOrder(Long.parseLong(getUserId()), fsStoreOrderCreateParam);
|
|
|
+ res.add(order);
|
|
|
+ }
|
|
|
+ return res;
|
|
|
}
|
|
|
- return res;
|
|
|
-}
|
|
|
|
|
|
@Login
|
|
|
@ApiOperation("支付")
|
|
|
@@ -539,12 +534,16 @@ public List<R> create(@Validated @RequestBody FsStoreOrderCreateGroupStoreParam
|
|
|
//新增的支付详情id
|
|
|
ArrayList<Long> paymentIds = new ArrayList<>();
|
|
|
for (FsStoreOrderScrm order : orders) {
|
|
|
- if (order == null) {
|
|
|
+ if(order==null){
|
|
|
return R.error("订单不存在");
|
|
|
}
|
|
|
- if (order.getStatus() != OrderInfoEnum.STATUS_0.getValue()) {
|
|
|
+ if(order.getStatus()!= OrderInfoEnum.STATUS_0.getValue()){
|
|
|
return R.error("订单状态不正确");
|
|
|
}
|
|
|
+ String orderId=redisCache.getCacheObject("isPaying:"+order.getId());
|
|
|
+ if(StringUtils.isNotEmpty(orderId)&&orderId.equals(order.getId().toString())){
|
|
|
+ return R.error("正在支付中...");
|
|
|
+ }
|
|
|
FsUserScrm user = userService.selectFsUserById(order.getUserId());
|
|
|
|
|
|
fsUser = user;
|
|
|
@@ -574,8 +573,13 @@ public List<R> create(@Validated @RequestBody FsStoreOrderCreateGroupStoreParam
|
|
|
} else if (param.getPayType().equals(3)) {
|
|
|
//货到付款
|
|
|
order.setPayType("3");
|
|
|
- order.setPayDelivery(order.getPayPrice());
|
|
|
- order.setPayMoney(BigDecimal.ZERO);
|
|
|
+ BigDecimal amount=redisCache.getCacheObject("orderAmount:"+order.getId());
|
|
|
+ BigDecimal payMoney = BigDecimal.ZERO;
|
|
|
+ if (amount != null){
|
|
|
+ payMoney=amount;
|
|
|
+ }
|
|
|
+ order.setPayMoney(payMoney);
|
|
|
+ order.setPayDelivery(order.getPayPrice().subtract(payMoney) );
|
|
|
}
|
|
|
orderService.updateFsStoreOrder(order);
|
|
|
}
|
|
|
@@ -583,27 +587,28 @@ public List<R> create(@Validated @RequestBody FsStoreOrderCreateGroupStoreParam
|
|
|
return R.error("用户OPENID不存在");
|
|
|
}
|
|
|
|
|
|
- if (order.getPayType().equals("1") || order.getPayType().equals("2")) {
|
|
|
+ if((order.getPayType().equals("1")||order.getPayType().equals("2")||order.getPayType().equals("3")) && order.getPayMoney().compareTo(new BigDecimal(0))>0){
|
|
|
+ String json = configService.selectConfigByKey(STORE_PAY_CONF);
|
|
|
+ FsPayConfigScrm fsPayConfig = JSON.parseObject(json, FsPayConfigScrm.class);
|
|
|
+ FsStorePaymentScrm storePayment=new FsStorePaymentScrm();
|
|
|
+ storePayment.setCompanyId(order.getCompanyId());
|
|
|
+ storePayment.setCompanyUserId(order.getCompanyUserId());
|
|
|
+ storePayment.setPayMode(fsPayConfig.getType());
|
|
|
+ storePayment.setStatus(0);
|
|
|
+ storePayment.setPayCode(payCode);
|
|
|
String paySubCode = IdUtil.getSnowflake(0, 0).nextIdStr();
|
|
|
- FsStorePaymentScrm payment = new FsStorePaymentScrm();
|
|
|
- payment.setCompanyId(order.getCompanyId());
|
|
|
- payment.setCompanyUserId(order.getCompanyUserId());
|
|
|
- payment.setStatus(0);
|
|
|
- payment.setPayCode(payCode);
|
|
|
- payment.setPaySubCode(paySubCode);
|
|
|
- payment.setPayMoney(order.getPayMoney());
|
|
|
- payment.setCreateTime(new Date());
|
|
|
- payment.setPayTypeCode("weixin");
|
|
|
- payment.setBusinessType(2);
|
|
|
- payment.setRemark("商城订单支付");
|
|
|
- payment.setOpenId(order.getRealName());
|
|
|
- payment.setUserId(fsUser.getUserId());
|
|
|
- //换成唯一标识
|
|
|
-// storePayment.setBusinessOrderId(order.getId().toString());
|
|
|
- payment.setBusinessOrderId(order.getCombinationOrderId());
|
|
|
- payment.setOrderId(order.getId());
|
|
|
- fsStorePaymentMapper.insertFsStorePayment(payment);
|
|
|
- paymentIds.add(payment.getPaymentId());
|
|
|
+ storePayment.setPaySubCode(paySubCode);
|
|
|
+ storePayment.setPayMoney(order.getPayMoney());
|
|
|
+ storePayment.setCreateTime(new Date());
|
|
|
+ storePayment.setPayTypeCode("weixin");
|
|
|
+ storePayment.setBusinessType(2);
|
|
|
+ storePayment.setRemark("商城订单支付");
|
|
|
+ storePayment.setOpenId(user.getRealName());
|
|
|
+ storePayment.setUserId(user.getUserId());
|
|
|
+ storePayment.setBusinessOrderId(order.getCombinationOrderId());
|
|
|
+ storePayment.setOrderId(order.getId());
|
|
|
+ fsStorePaymentMapper.insertFsStorePayment(storePayment);
|
|
|
+ paymentIds.add(storePayment.getPaymentId());
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -613,12 +618,15 @@ public List<R> create(@Validated @RequestBody FsStoreOrderCreateGroupStoreParam
|
|
|
fsStoreOrder.setPayMoney(payMoneyTotal);
|
|
|
fsStoreOrder.setRealName(orders.get(0).getRealName());
|
|
|
fsStoreOrder.setCombinationOrderId(orders.get(0).getCombinationOrderId());
|
|
|
+
|
|
|
if (fsUser != null && StringUtils.isNotEmpty(fsUser.getMaOpenId())) {
|
|
|
-// String payCode = IdUtil.getSnowflake(0, 0).nextIdStr();
|
|
|
- if (fsStoreOrder.getPayType().equals("1") || fsStoreOrder.getPayType().equals("2")) {
|
|
|
+ if ((fsStoreOrder.getPayType().equals("1")||fsStoreOrder.getPayType().equals("2")||fsStoreOrder.getPayType().equals("3")) && fsStoreOrder.getPayMoney().compareTo(new BigDecimal(0))>0) {
|
|
|
+ String json = configService.selectConfigByKey(STORE_PAY_CONF);
|
|
|
+ FsPayConfigScrm fsPayConfig = JSON.parseObject(json, FsPayConfigScrm.class);
|
|
|
FsStorePaymentScrm storePayment = new FsStorePaymentScrm();
|
|
|
storePayment.setCompanyId(fsStoreOrder.getCompanyId());
|
|
|
storePayment.setCompanyUserId(fsStoreOrder.getCompanyUserId());
|
|
|
+ storePayment.setPayMode(fsPayConfig.getType());
|
|
|
storePayment.setStatus(0);
|
|
|
storePayment.setPayCode(payCode);
|
|
|
storePayment.setPayMoney(fsStoreOrder.getPayMoney());
|
|
|
@@ -629,64 +637,90 @@ public List<R> create(@Validated @RequestBody FsStoreOrderCreateGroupStoreParam
|
|
|
storePayment.setOpenId(fsStoreOrder.getRealName());
|
|
|
storePayment.setUserId(fsUser.getUserId());
|
|
|
|
|
|
- //支付
|
|
|
- HuiFuCreateOrder o = new HuiFuCreateOrder();
|
|
|
- o.setTradeType("T_MINIAPP");
|
|
|
- o.setOpenid(fsUser.getMaOpenId());
|
|
|
- o.setReqSeqId("store-" + storePayment.getPayCode());
|
|
|
- o.setTransAmt(storePayment.getPayMoney().toString());
|
|
|
- o.setGoodsDesc("商城订单支付");
|
|
|
- HuifuCreateOrderResult result = huiFuService.createOrder(o);
|
|
|
- //创建订单
|
|
|
- if (result.getBank_code() != null && result.getBank_code().equals("00000000")) {
|
|
|
- for (Long paymentId : paymentIds) {
|
|
|
- FsStorePaymentScrm mt = new FsStorePaymentScrm();
|
|
|
- mt.setPaymentId(paymentId);
|
|
|
- mt.setTradeNo(result.getHf_seq_id());
|
|
|
- fsStorePaymentMapper.updateFsStorePayment(mt);
|
|
|
- }
|
|
|
|
|
|
- String mes = result.getPay_info();
|
|
|
- JSONObject payInfo = JSONUtil.parseObj(mes);
|
|
|
- FsHuiFuPayInfo fsHuiFuPayInfo = new FsHuiFuPayInfo();
|
|
|
- if (payInfo.get("timeStamp") != null) {
|
|
|
- fsHuiFuPayInfo.setTimeStamp(payInfo.get("timeStamp").toString());
|
|
|
- }
|
|
|
- if (payInfo.get("package") != null) {
|
|
|
- fsHuiFuPayInfo.setPackageStr(payInfo.get("package").toString());
|
|
|
- }
|
|
|
- if (payInfo.get("paySign") != null) {
|
|
|
- fsHuiFuPayInfo.setPaySign(payInfo.get("paySign").toString());
|
|
|
+ if (fsPayConfig.getType().equals("hf")){
|
|
|
+ HuiFuCreateOrder o = new HuiFuCreateOrder();
|
|
|
+ o.setTradeType("T_MINIAPP");
|
|
|
+ o.setOpenid(fsUser.getMaOpenId());
|
|
|
+ o.setReqSeqId("store-"+storePayment.getPayCode());
|
|
|
+ o.setTransAmt(storePayment.getPayMoney().toString());
|
|
|
+ o.setGoodsDesc("商城订单支付");
|
|
|
+ HuifuCreateOrderResult result = huiFuService.createOrder(o);
|
|
|
+ if(result.getResp_code()!=null&&(result.getResp_code().equals("00000000")||result.getResp_code().equals("00000100"))){
|
|
|
|
|
|
- }
|
|
|
- if (payInfo.get("appId") != null) {
|
|
|
- fsHuiFuPayInfo.setAppId(payInfo.get("appId").toString());
|
|
|
+ for (Long paymentId : paymentIds) {
|
|
|
+ FsStorePaymentScrm mt = new FsStorePaymentScrm();
|
|
|
+ mt.setPaymentId(paymentId);
|
|
|
+ mt.setTradeNo(result.getHf_seq_id());
|
|
|
+ fsStorePaymentMapper.updateFsStorePayment(mt);
|
|
|
+ FsStorePaymentScrm fsStorePaymentScrm = fsStorePaymentMapper.selectFsStorePaymentById(paymentId);
|
|
|
+ redisCache.setCacheObject("isPaying:"+fsStorePaymentScrm.getOrderId(),fsStorePaymentScrm.getOrderId().toString(),1, TimeUnit.MINUTES);
|
|
|
+ Map<String, Object> resultMap = JSON.parseObject(result.getPay_info(), new TypeReference<Map<String, Object>>() {});
|
|
|
+ String s = (String) resultMap.get("package");
|
|
|
+ resultMap.put("packageValue",s);
|
|
|
+ }
|
|
|
|
|
|
- }
|
|
|
- if (payInfo.get("signType") != null) {
|
|
|
- fsHuiFuPayInfo.setSignType(payInfo.get("signType").toString());
|
|
|
+ String mes = result.getPay_info();
|
|
|
+ JSONObject payInfo = JSONUtil.parseObj(mes);
|
|
|
+ FsHuiFuPayInfo fsHuiFuPayInfo = new FsHuiFuPayInfo();
|
|
|
+ if (payInfo.get("timeStamp") != null) {
|
|
|
+ fsHuiFuPayInfo.setTimeStamp(payInfo.get("timeStamp").toString());
|
|
|
+ }
|
|
|
+ if (payInfo.get("package") != null) {
|
|
|
+ fsHuiFuPayInfo.setPackageStr(payInfo.get("package").toString());
|
|
|
+ }
|
|
|
+ if (payInfo.get("paySign") != null) {
|
|
|
+ fsHuiFuPayInfo.setPaySign(payInfo.get("paySign").toString());
|
|
|
|
|
|
- }
|
|
|
- if (payInfo.get("nonceStr") != null) {
|
|
|
- fsHuiFuPayInfo.setNonceStr(payInfo.get("nonceStr").toString());
|
|
|
- }
|
|
|
+ }
|
|
|
+ if (payInfo.get("appId") != null) {
|
|
|
+ fsHuiFuPayInfo.setAppId(payInfo.get("appId").toString());
|
|
|
+
|
|
|
+ }
|
|
|
+ if (payInfo.get("signType") != null) {
|
|
|
+ fsHuiFuPayInfo.setSignType(payInfo.get("signType").toString());
|
|
|
+
|
|
|
+ }
|
|
|
+ if (payInfo.get("nonceStr") != null) {
|
|
|
+ fsHuiFuPayInfo.setNonceStr(payInfo.get("nonceStr").toString());
|
|
|
+ }
|
|
|
|
|
|
|
|
|
// return R.ok().put("payType",param.getPayType()).put("result",result.getPay_info());
|
|
|
- return R.ok().put("payType", param.getPayType()).put("result", fsHuiFuPayInfo);
|
|
|
- } else {
|
|
|
- return R.error(result.getResp_desc());
|
|
|
- }
|
|
|
- } else if (fsStoreOrder.getPayType().equals("3")) {
|
|
|
- for (FsStoreOrderScrm order : orders) {
|
|
|
- //货到付款
|
|
|
- orderService.payConfirm(2, order.getId(), null, null, null, null);
|
|
|
- return R.ok().put("payType", param.getPayType());
|
|
|
+ return R.ok().put("payType", param.getPayType()).put("result", fsHuiFuPayInfo);
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ return R.error(result.getResp_desc());
|
|
|
+ }
|
|
|
+ }else if (fsPayConfig.getType().equals("wx")){
|
|
|
+ WxPayConfig payConfig = new WxPayConfig();
|
|
|
+ payConfig.setAppId(fsPayConfig.getAppId());
|
|
|
+ payConfig.setMchId(fsPayConfig.getWxMchId());
|
|
|
+ payConfig.setMchKey(fsPayConfig.getWxMchKey());
|
|
|
+ payConfig.setSubAppId(org.apache.commons.lang3.StringUtils.trimToNull(null));
|
|
|
+ payConfig.setSubMchId(org.apache.commons.lang3.StringUtils.trimToNull(null));
|
|
|
+ payConfig.setKeyPath(fsPayConfig.getKeyPath());
|
|
|
+ payConfig.setNotifyUrl(fsPayConfig.getNotifyUrlScrm());
|
|
|
+ wxPayService.setConfig(payConfig);
|
|
|
+ WxPayUnifiedOrderRequest orderRequest = new WxPayUnifiedOrderRequest();
|
|
|
+ orderRequest.setOpenid(fsUser.getMaOpenId());//公众号支付提供用户openid
|
|
|
+ orderRequest.setBody("商城订单支付");
|
|
|
+ orderRequest.setOutTradeNo("store-" + storePayment.getPayCode());
|
|
|
+ orderRequest.setTotalFee(WxPayUnifiedOrderRequest.yuanToFen(storePayment.getPayMoney().toString()));//测试
|
|
|
+ //orderRequest.setTotalFee(WxPayUnifiedOrderRequest.yuanToFen(money));//测试
|
|
|
+ orderRequest.setTradeType("JSAPI");
|
|
|
+ orderRequest.setSpbillCreateIp(IpUtils.getIpAddr(ServletUtils.getRequest()));
|
|
|
+ //调用统一下单接口,获取"预支付交易会话标识"
|
|
|
+ try {
|
|
|
+ WxPayMpOrderResult orderResult = wxPayService.createOrder(orderRequest);
|
|
|
+ return R.ok().put("result", orderResult).put("type", "wx").put("isPay", 0).put("payType",param.getPayType());
|
|
|
+ } catch (WxPayException e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ throw new CustomException("支付失败" + e.getMessage());
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
}
|
|
|
-
|
|
|
-
|
|
|
}
|
|
|
return R.error("用户OPENID不存在");
|
|
|
|