2 Commits

  1. 67
      cereshop-admin/src/main/java/com/shop/cereshop/admin/controller/BusinessWxpayController.java
  2. 103
      cereshop-admin/src/main/java/com/shop/cereshop/admin/controller/HnaPayController.java
  3. 4
      cereshop-admin/src/main/java/com/shop/cereshop/admin/dao/business/CerePlatformBusinessDAO.java
  4. 20
      cereshop-admin/src/main/java/com/shop/cereshop/admin/dao/bwxpay/CereBusinessWxpayDao.java
  5. 87
      cereshop-admin/src/main/java/com/shop/cereshop/admin/param/business/BusinessHnapayCreateParam.java
  6. 75
      cereshop-admin/src/main/java/com/shop/cereshop/admin/pay/hnapay/HnaPayService.java
  7. 267
      cereshop-admin/src/main/java/com/shop/cereshop/admin/pay/hnapay/impl/HnaPayServiceImpl.java
  8. 4
      cereshop-admin/src/main/java/com/shop/cereshop/admin/service/business/CerePlatformBusinessService.java
  9. 10
      cereshop-admin/src/main/java/com/shop/cereshop/admin/service/business/impl/CerePlatformBusinessServiceImpl.java
  10. 20
      cereshop-admin/src/main/java/com/shop/cereshop/admin/service/bwxpay/CereBusinessWxpayService.java
  11. 40
      cereshop-admin/src/main/java/com/shop/cereshop/admin/service/bwxpay/impl/CereBusinessWxpayServiceImpl.java
  12. 11
      cereshop-admin/src/main/resources/mybatis/mapper/business/CerePlatformBusinessDAO.xml
  13. 19
      cereshop-admin/src/main/resources/mybatis/mapper/bwxpay/CereBusinessWxpayDAO.xml
  14. 7
      cereshop-app/pom.xml
  15. 21
      cereshop-app/src/main/java/com/shop/cereshop/app/dao/bwxpay/CereBusinessWxpayDao.java
  16. 28
      cereshop-app/src/main/java/com/shop/cereshop/app/pay/hnapay/service/impl/HnaPayServiceImpl.java
  17. 21
      cereshop-app/src/main/java/com/shop/cereshop/app/service/bwxpay/CereBusinessWxpayService.java
  18. 42
      cereshop-app/src/main/java/com/shop/cereshop/app/service/bwxpay/impl/CereBusinessWxpayServiceImpl.java
  19. 119
      cereshop-business/src/main/java/com/shop/cereshop/business/controller/HnaPayController.java
  20. 2
      cereshop-business/src/main/java/com/shop/cereshop/business/dao/business/CerePlatformBusinessDAO.java
  21. 96
      cereshop-business/src/main/java/com/shop/cereshop/business/pay/hnapay/HnaPayService.java
  22. 298
      cereshop-business/src/main/java/com/shop/cereshop/business/pay/hnapay/impl/HnaPayServiceImpl.java
  23. 2
      cereshop-business/src/main/java/com/shop/cereshop/business/service/business/CerePlatformBusinessService.java
  24. 4
      cereshop-business/src/main/java/com/shop/cereshop/business/service/business/impl/CerePlatformBusinessServiceImpl.java
  25. 4
      cereshop-business/src/main/resources/mybatis/mapper/business/CerePlatformBusinessDAO.xml
  26. 6
      cereshop-commons/pom.xml
  27. 10
      cereshop-commons/src/main/java/com/shop/cereshop/commons/config/HnaPayConfig.java
  28. 17
      cereshop-commons/src/main/java/com/shop/cereshop/commons/domain/business/CerePlatformBusiness.java
  29. 55
      cereshop-commons/src/main/java/com/shop/cereshop/commons/domain/bwxpay/CereBusinessWxpay.java
  30. 4
      cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/BaseTransForm.java
  31. 2
      cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/F001TransForm.java
  32. 2
      cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/Q001TransForm.java
  33. 2
      cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/Q002TransForm.java
  34. 2
      cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/Q003TransForm.java
  35. 2
      cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/Q004TransForm.java
  36. 2
      cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/Q006TransForm.java
  37. 2
      cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/Q007TransForm.java
  38. 2
      cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/Q008TransForm.java
  39. 2
      cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/Q009TransForm.java
  40. 2
      cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/R001TransForm.java
  41. 2
      cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/R002TransForm.java
  42. 2
      cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/R003TransForm.java
  43. 2
      cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/R004TransForm.java
  44. 2
      cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/R007TransForm.java
  45. 2
      cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/R008TransForm.java
  46. 2
      cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/R009TransForm.java
  47. 2
      cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/R010TransForm.java
  48. 2
      cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/R011TransForm.java
  49. 2
      cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/R012TransForm.java
  50. 2
      cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/R013TransForm.java
  51. 2
      cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/R014TransForm.java
  52. 2
      cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/R015TransForm.java
  53. 2
      cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/T002TransForm.java
  54. 2
      cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/T003TransForm.java
  55. 2
      cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/T004TransForm.java
  56. 3
      cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/T005TransForm.java
  57. 2
      cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/T006TransForm.java
  58. 2
      cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/T007TransForm.java
  59. 2
      cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/T008TransForm.java
  60. 2
      cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/T009TransForm.java
  61. 2
      cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/T010TransForm.java
  62. 2
      cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/T011TransForm.java
  63. 2
      cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/T012TransForm.java
  64. 2
      cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/T013TransForm.java
  65. 2
      cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/T019TransForm.java
  66. 2
      cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/T020TransForm.java
  67. 2
      cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/T021TransForm.java
  68. 2
      cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/T022TransForm.java
  69. 4
      cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/init/InitForm.java
  70. 2
      cereshop-commons/src/main/java/com/shop/cereshop/commons/utils/hnapay/Base64Util.java
  71. 2
      cereshop-commons/src/main/java/com/shop/cereshop/commons/utils/hnapay/HexStringByte.java
  72. 2
      cereshop-commons/src/main/java/com/shop/cereshop/commons/utils/hnapay/HnaPayDateUtils.java
  73. 2
      cereshop-commons/src/main/java/com/shop/cereshop/commons/utils/hnapay/HnapaySign.java
  74. 6
      cereshop-commons/src/main/java/com/shop/cereshop/commons/utils/hnapay/HttpClientUtils.java
  75. 6
      cereshop-commons/src/main/java/com/shop/cereshop/commons/utils/hnapay/HttpUtils.java
  76. 2
      cereshop-commons/src/main/java/com/shop/cereshop/commons/utils/hnapay/HttpsTransport.java
  77. 2
      cereshop-commons/src/main/java/com/shop/cereshop/commons/utils/hnapay/JsonUtils.java
  78. 2
      cereshop-commons/src/main/java/com/shop/cereshop/commons/utils/hnapay/KeyUtils.java
  79. 2
      cereshop-commons/src/main/java/com/shop/cereshop/commons/utils/hnapay/RSAAlgorithms.java
  80. 17
      doc/3.0/update.sql

67
cereshop-admin/src/main/java/com/shop/cereshop/admin/controller/BusinessWxpayController.java

@ -0,0 +1,67 @@
package com.shop.cereshop.admin.controller;
/**
* 描述商家微信配置模块
*
* @author stevenhu
* @version 2025/02/20 14:38
*/
import com.shop.cereshop.admin.annotation.NoRepeatSubmit;
import com.shop.cereshop.admin.annotation.NoRepeatWebLog;
import com.shop.cereshop.admin.param.business.BusinessUpdateParam;
import com.shop.cereshop.admin.service.bwxpay.CereBusinessWxpayService;
import com.shop.cereshop.commons.constant.CoReturnFormat;
import com.shop.cereshop.commons.domain.business.CerePlatformBusiness;
import com.shop.cereshop.commons.domain.business.CerePlatformBusinessUser;
import com.shop.cereshop.commons.domain.bwxpay.CereBusinessWxpay;
import com.shop.cereshop.commons.domain.user.CerePlatformUser;
import com.shop.cereshop.commons.exception.CoBusinessException;
import com.shop.cereshop.commons.result.Result;
import com.shop.cereshop.commons.utils.GsonUtil;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
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.RestController;
import javax.servlet.http.HttpServletRequest;
@RestController
@RequestMapping("bwxpay")
/**
* 注解方式生成日志对象指定topic生成对象类名
*/
@Slf4j(topic = "BusinessWxpayController")
@Api(value = "商家微信配置模块", tags = "商家微信配置模块")
public class BusinessWxpayController {
@Autowired
private CereBusinessWxpayService businessWxpayService;
@PostMapping(value = "save")
@NoRepeatSubmit
@ApiOperation(value = "新建商家微信配置信息")
@NoRepeatWebLog
public Result save(@RequestBody CereBusinessWxpay wxpay, HttpServletRequest request) throws CoBusinessException {
//获取当前登录账户
CerePlatformUser user = (CerePlatformUser) request.getAttribute("user");
businessWxpayService.save(wxpay);
return new Result(user.getUsername(),"新建商家微信配置信息", GsonUtil.objectToGson(wxpay));
}
@PostMapping(value = "update")
@NoRepeatSubmit
@ApiOperation(value = "修改商家")
@NoRepeatWebLog
public Result update(@RequestBody CereBusinessWxpay wxpay, HttpServletRequest request) throws CoBusinessException{
//校验商家名称是否存在
//获取当前登录账户
CerePlatformUser user = (CerePlatformUser) request.getAttribute("user");
businessWxpayService.update(wxpay);
return new Result(user.getUsername(),"修改商家", GsonUtil.objectToGson(wxpay));
}
}

103
cereshop-admin/src/main/java/com/shop/cereshop/admin/controller/HnaPayController.java

@ -0,0 +1,103 @@
package com.shop.cereshop.admin.controller;
import com.shop.cereshop.admin.annotation.NoRepeatSubmit;
import com.shop.cereshop.admin.annotation.NoRepeatWebLog;
import com.shop.cereshop.admin.param.business.BusinessHnapayCreateParam;
import com.shop.cereshop.admin.pay.hnapay.HnaPayService;
import com.shop.cereshop.admin.service.business.CerePlatformBusinessService;
import com.shop.cereshop.commons.exception.CoBusinessException;
import com.shop.cereshop.commons.result.Result;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
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.RestController;
import org.springframework.web.multipart.MultipartFile;
import java.io.IOException;
import java.io.InputStream;
import java.util.Base64;
import java.util.Map;
/**
* 描述新生支付新账通回调处理
*
* @author stevenhu
* @version 2025/02/14 9:24
*/
@RestController
@RequestMapping("hnaPay")
@Slf4j(topic = "hnaPayController")
@Api(value = "新账通模块", tags = "新账通模块")
public class HnaPayController {
@Autowired
private HnaPayService hnaPayService;
@Autowired
private CerePlatformBusinessService businessService;
/**
* 新账通企业开户
* @param param
* @return
*/
@PostMapping(value = "create")
@NoRepeatSubmit
@ApiOperation(value = "新账通企业开户")
@NoRepeatWebLog
public Result<String> create(@RequestBody BusinessHnapayCreateParam param) throws CoBusinessException {
//新生支付新账通企业开户
Map<String,Object> result = hnaPayService.createEntAccount(param);
String resultCode = String.valueOf(result.get("resultCode"));
String shareParId = "";
if (resultCode.equals("0000")){
shareParId = String.valueOf(result.get("userId"));
String bindCardAgrNo = String.valueOf(result.get("bindCardAgrNo"));
businessService.updateBusinessHnaPay(param.getBusinessId(),shareParId,bindCardAgrNo);
}else {
String errorMsg = String.valueOf(result.get("errorMsg"));
throw new CoBusinessException(errorMsg);
}
return new Result(shareParId);
}
@PostMapping("uploadCertInfo")
@NoRepeatSubmit
@ApiOperation("企业开户资料上送")
@NoRepeatWebLog
public Result<String> uploadCertInfo(MultipartFile file, String businessId, String shareParId, String type) throws CoBusinessException {
String base64 = getBase64(file);
Map<String,Object> result = hnaPayService.uploadEntFile(shareParId, type,base64);
String resultCode = String.valueOf(result.get("resultCode"));
if (resultCode.equals("0000")){
businessService.updateBusinessHnapayState(Long.parseLong(businessId),1);
}else {
String errorMsg = String.valueOf(result.get("errorMsg"));
throw new CoBusinessException(errorMsg);
}
return new Result(base64);
}
private String getBase64(MultipartFile file) {
InputStream in = null;
byte[] data = null;
String base64 = "";
try {
in = file.getInputStream();
data = new byte[in.available()];
in.read(data);
in.close();
base64 = Base64.getEncoder().encodeToString(data);
base64 = base64.replace("\n", "").replace("\r", "");
}catch (IOException e) {
return null;
}
return base64;
}
}

4
cereshop-admin/src/main/java/com/shop/cereshop/admin/dao/business/CerePlatformBusinessDAO.java

@ -69,4 +69,8 @@ public interface CerePlatformBusinessDAO extends BaseMapper<CerePlatformBusiness
List<CerePlatformBusiness> getByIdList(@Param("businessIdList") List<Long> businessIdList);
void updateDomain(BusinessDomainSet domainSet);
void updateBusinessHnaPay(@Param("businessId") Long businessId, @Param("hnaPayId") String hnaPayId, @Param("bindCardAgrNo") String bindCardAgrNo);
void updateBusinessHnapayState(@Param("businessId") Long businessId, @Param("hnapayStatus") Integer hnapayStatus);
}

20
cereshop-admin/src/main/java/com/shop/cereshop/admin/dao/bwxpay/CereBusinessWxpayDao.java

@ -0,0 +1,20 @@
package com.shop.cereshop.admin.dao.bwxpay;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.shop.cereshop.commons.domain.bwxpay.CereBusinessWxpay;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
* 描述
*
* @author stevenhu
* @version 2025/02/20 11:49
*/
@Mapper
public interface CereBusinessWxpayDao extends BaseMapper<CereBusinessWxpay> {
CereBusinessWxpay getByBusinessId(@Param("businessId") Long businessId);
}

87
cereshop-admin/src/main/java/com/shop/cereshop/admin/param/business/BusinessHnapayCreateParam.java

@ -0,0 +1,87 @@
/*
* Copyright (C) 2017-2021
* All rights reserved, Designed By 深圳中科鑫智科技有限公司
* Copyright authorization contact 18814114118
*/
package com.shop.cereshop.admin.param.business;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import javax.validation.constraints.NotBlank;
/**
* 新账通企业开户
*/
@Data
@ApiModel(value = "BusinessHnapayCreateParam", description = "新账通企业开户")
public class BusinessHnapayCreateParam {
private Long businessId;
/**
* 企业名称
*/
@ApiModelProperty(value = "企业名称")
@NotBlank(message = "企业名称不能为空")
private String name;
/**
* 营业执照号
*/
@ApiModelProperty(value = "营业执照号")
@NotBlank(message = "营业执照号")
private String enterpriseCode;
/**
* 执照效期
*/
@ApiModelProperty(value = "执照效期")
@NotBlank(message = "执照效期")
private String validDate;
/**
* 银行卡号
*/
@ApiModelProperty(value = "银行卡号")
@NotBlank(message = "银行卡号")
private String bankCard;
/**
* 银行简码
*/
@ApiModelProperty(value = "银行简码")
@NotBlank(message = "银行简码")
private String bankCode;
/**
* 开户省份
*/
@ApiModelProperty(value = "开户省份")
@NotBlank(message = "开户省份")
private String bankProvince;
/**
* 开户城市
*/
@ApiModelProperty(value = "开户城市")
@NotBlank(message = "开户城市")
private String bankCity;
/**
* 开户城市
*/
@ApiModelProperty(value = "开户支行")
@NotBlank(message = "开户支行")
private String bankBranch;
/**
* 负责人电话
*/
@ApiModelProperty(value = "负责人电话")
@NotBlank(message = "负责人电话")
private String contactPhone;
}

75
cereshop-admin/src/main/java/com/shop/cereshop/admin/pay/hnapay/HnaPayService.java

@ -0,0 +1,75 @@
package com.shop.cereshop.admin.pay.hnapay;
import com.shop.cereshop.admin.param.business.BusinessHnapayCreateParam;
import com.shop.cereshop.admin.pay.PayService;
import com.shop.cereshop.commons.exception.CoBusinessException;
import java.math.BigDecimal;
import java.util.Map;
/**
* 描述
*
* @author stevenhu
* @version 2025/02/18 9:27
*/
public interface HnaPayService extends PayService {
/**
* 企业开户
* @param param
* @return
*/
Map<String,Object> createEntAccount(BusinessHnapayCreateParam param);
/**
* 企业开户上传资料
* @param userId 开户返回的userId
* @param certFileType
* 1-身份证正面企业必传
* 2-身份证反面企业必传
* 3-法人身份证手持非必传
* 4-营业执照企业必传
* 5-其他非必传
* 6-其他非必传
* 7-开户许可证企业必传
* @param base64 上传图片base64为
* @return
*/
Map<String,Object> uploadEntFile(String userId,String certFileType, String base64);
/**
* 企业开户修改
* @param userId 开户返回的userId
* @param certNo 营业执照号(统一社会信用代码)
* @param userName 企业名称
* @param mobile 企业联系人手机号
* @param certValidate 证件有效期 格式YYYYMMDD 永久则输入21990101
* @return
*/
Map<String,Object> modifyEntAccount(String userId, String certNo, String userName, String mobile, String certValidate);
/**
* 企业换卡
* @param userId 开户返回的用户编号
* @param bindCardAgrNo 原绑卡协议号 开户接口返回
* @param mobile 银行预留手机号
* @param cardNo 银行卡号
* @param bankCode 银行简码
* @param province 开户行所属省份
* @param city 开户行所属城市
* @param branch 开户支行
* @return
*/
Map<String,Object> changeEntCard(String userId, String bindCardAgrNo, String mobile, String cardNo, String bankCode, String province, String city, String branch);
/**
* 提现
* @return
* @throws CoBusinessException
*/
String getMoney(Long businessId, String orderFormid,
String tradeType, BigDecimal money) throws CoBusinessException;
}

267
cereshop-admin/src/main/java/com/shop/cereshop/admin/pay/hnapay/impl/HnaPayServiceImpl.java

@ -0,0 +1,267 @@
package com.shop.cereshop.admin.pay.hnapay.impl;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.google.gson.Gson;
import com.shop.cereshop.admin.dao.order.CereOrderProductDAO;
import com.shop.cereshop.admin.dao.order.CereShopOrderDAO;
import com.shop.cereshop.admin.dao.shop.CereShopBankDAO;
import com.shop.cereshop.admin.page.business.Business;
import com.shop.cereshop.admin.page.business.BusinessGetAll;
import com.shop.cereshop.admin.param.business.BusinessHnapayCreateParam;
import com.shop.cereshop.admin.pay.hnapay.HnaPayService;
import com.shop.cereshop.admin.service.business.CerePlatformBusinessService;
import com.shop.cereshop.admin.service.shop.CerePlatformShopService;
import com.shop.cereshop.commons.config.HnaPayConfig;
import com.shop.cereshop.commons.constant.WxPayEnum;
import com.shop.cereshop.commons.domain.business.CerePlatformBusiness;
import com.shop.cereshop.commons.domain.order.CereOrderParent;
import com.shop.cereshop.commons.domain.order.CereOrderProduct;
import com.shop.cereshop.commons.domain.order.CereShopOrder;
import com.shop.cereshop.commons.domain.shop.CerePlatformShop;
import com.shop.cereshop.commons.domain.shop.CereShopBank;
import com.shop.cereshop.commons.exception.CoBusinessException;
import com.shop.cereshop.commons.request.hnapay.form.*;
import com.shop.cereshop.commons.request.hnapay.init.InitForm;
import com.shop.cereshop.commons.utils.EmptyUtils;
import com.shop.cereshop.commons.utils.hnapay.HttpUtils;
import com.shop.cereshop.commons.utils.hnapay.JsonUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* 描述
*
* @author stevenhu
* @version 2025/02/18 9:29
*/
@Service(value = "HnaPayService")
@Slf4j
public class HnaPayServiceImpl implements HnaPayService {
@Autowired
private CereShopOrderDAO cereShopOrderDAO;
@Autowired
private CereOrderProductDAO cereOrderProductDAO;
@Autowired
private CerePlatformBusinessService cerePlatformBusinessService;
@Autowired
private CerePlatformShopService cerePlatformShopService;
@Autowired
private CereShopBankDAO cereShopBankDAO;
@Override
public Map<String, Object> createEntAccount(BusinessHnapayCreateParam param) {
String result = "";
R001TransForm transForm = new R001TransForm();
transForm.setTranCode("R001");
transForm.initCommonParams("R001");
transForm.setSubmitUrl(InitForm.R001_SUBMIT_URL);
transForm.setMerUserId("ent_" + param.getBusinessId());
transForm.setUserName(param.getName());
transForm.setMobile(param.getContactPhone());
transForm.setCertType("2");
transForm.setCertNo(param.getEnterpriseCode());
transForm.setCertValidate(param.getValidDate());
transForm.setCardNo(param.getBankCard());
transForm.setBankCode(param.getBankCode());
transForm.setProvince(param.getBankProvince());
transForm.setCity(param.getBankCity());
transForm.setBranch(param.getBankBranch());
String notifyServerUrl = HnaPayConfig.CREATE_NOTICE_URL + "/" + param.getBusinessId();
transForm.setNotifyServerUrl(notifyServerUrl);
try {
result = HttpUtils.commonReq(transForm, false);
} catch (Exception e) {
e.printStackTrace();
}
Map<String,Object> responseMap = JsonUtils.jsonToMap(result);
return responseMap;
}
@Override
public Map<String, Object> uploadEntFile(String userId, String certFileType, String base64) {
String result = "";
R003TransForm transForm = new R003TransForm();
transForm.setTranCode("R003");
transForm.initCommonParams("R003");
transForm.setSubmitUrl(InitForm.R003_SUBMIT_URL);
transForm.setUserId(userId);
transForm.setCertFileType(certFileType);
transForm.setCertInfo(base64);
try {
result = HttpUtils.commonReq(transForm, true);
} catch (Exception e) {
e.printStackTrace();
}
Map<String,Object> responseMap = JsonUtils.jsonToMap(result);
return responseMap;
}
@Override
public Map<String, Object> modifyEntAccount(String userId, String certNo, String userName, String mobile, String certValidate) {
String result = "";
R011TransForm transForm = new R011TransForm();
transForm.setTranCode("R011");
transForm.initCommonParams("R011");
transForm.setSubmitUrl(InitForm.R011_SUBMIT_URL);
transForm.setUserId(userId);
transForm.setCertNo(certNo);
transForm.setUserName(userName);
transForm.setMobile(mobile);
transForm.setCertValidate(certValidate);
try {
result = HttpUtils.commonReq(transForm, false);
} catch (Exception e) {
e.printStackTrace();
}
Map<String,Object> responseMap = JsonUtils.jsonToMap(result);
return responseMap;
}
@Override
public Map<String, Object> changeEntCard(String userId, String bindCardAgrNo, String mobile, String cardNo, String bankCode, String province, String city, String branch) {
String result = "";
R002TransForm transForm = new R002TransForm();
transForm.setTranCode("R002");
transForm.initCommonParams("R002");
transForm.setSubmitUrl(InitForm.R002_SUBMIT_URL);
transForm.setUserId(userId);
transForm.setBindCardAgrNo(bindCardAgrNo);
transForm.setMobile(mobile);
transForm.setCardNo(cardNo);
transForm.setBankCode(bankCode);
transForm.setProvince(province);
transForm.setCity(city);
transForm.setBranch(branch);
try {
result = HttpUtils.commonReq(transForm, false);
} catch (Exception e) {
e.printStackTrace();
}
Map<String,Object> responseMap = JsonUtils.jsonToMap(result);
return responseMap;
}
@Override
public Map<String, String> refund(String orderFormId, String outTradeNo, String transactionId, String outRefundNo, BigDecimal total, BigDecimal refund) throws CoBusinessException, Exception {
List<CereShopOrder> orderList = null;
String cereOrderFormId = orderFormId;
String[] split = orderFormId.split("-");
if(!EmptyUtils.isEmpty(split)) {
cereOrderFormId = split[0];
}
//查询是否为父订单编号
CereOrderParent parent = cereShopOrderDAO.findByParentFormid(cereOrderFormId);
if (parent != null) {
//查询所有子订单数据
orderList = cereShopOrderDAO.findByParentId(parent.getParentId());
} else {
//子订单支付回调
orderList = cereShopOrderDAO.findByFormid(cereOrderFormId);
}
//这里理论上只会有一个子订单如果出现多个说明出错了
if(orderList.size() != 1){
throw new CoBusinessException("10000","订单查找出错", "");
}
List<CereOrderProduct> cereOrderProductList = cereOrderProductDAO.findByOrderIds(orderList.stream().map(CereShopOrder::getOrderId).collect(Collectors.toList()));
log.info("cereOrderProductList:" + new Gson().toJson(cereOrderProductList));
List<Long> shopIdList = orderList.stream().map(CereShopOrder::getShopId).distinct().collect(Collectors.toList());
List<CerePlatformShop> cerePlatformShopList = cerePlatformShopService.getByIdList(shopIdList);
List<Long> businessIdList = cerePlatformShopList.stream().map(CerePlatformShop::getBusinessId).distinct().collect(Collectors.toList());
List<CerePlatformBusiness> cerePlatformBusinessList = cerePlatformBusinessService.getByIdList(businessIdList);
String resultStr = "";
T005TransForm transForm = new T005TransForm();
transForm.setTranCode("T005");
transForm.initCommonParams("T005");
transForm.setMerOrderId(outRefundNo);
transForm.setSubmitUrl(InitForm.T005_SUBMIT_URL);
transForm.setSerialId("thee" + System.currentTimeMillis());
transForm.setOrgMerOrderId(outTradeNo);
//transForm.setOrgSubmitTime(orderInfo.getPaySubmitTime());
transForm.setOrderAmount(String.valueOf(total));
transForm.setRefundSource("1");
transForm.setDestType("1");
//退款类型 1:全额退款 2部分退款
transForm.setRefundType("1");
transForm.setRefundAmount(String.valueOf(refund));
transForm.setNotifyUrl(HnaPayConfig.REFUND_NOTICE_URL);
transForm.setRemark("退款备注信息");
//transForm.setDivideRefundDtl("");
try {
resultStr = HttpUtils.commonReq(transForm, false);
} catch (Exception e) {
e.printStackTrace();
}
Map<String,Object> responseMap = JsonUtils.jsonToMap(resultStr);
String resultCode = String.valueOf(responseMap.get("resultCode"));
if (resultCode.equals("0000")){
//成功
Map<String, String> result = new HashMap<>();
result.put("return_msg", WxPayEnum.REFUND_SUCCESS.getCode());
result.put("return_code", WxPayEnum.REFUND_OK.getCode());
return result;
}else {
//失败
String errorMsg = String.valueOf(responseMap.get("errorMsg"));
throw new CoBusinessException(errorMsg);
}
}
@Override
public Map<String, String> refundBond(String transactionId, String outRefundNo, BigDecimal total, BigDecimal refund) throws CoBusinessException, Exception {
throw new CoBusinessException("10000","新生通道保证金退款功能待开发", "");
}
@Override
public String getMoney(Long businessId, String orderFormid, String tradeType, BigDecimal money) throws CoBusinessException {
BusinessGetAll business = cerePlatformBusinessService.getById(businessId);
CereShopBank shopBank = cereShopBankDAO.selectOne(
Wrappers.<CereShopBank>lambdaQuery()
.eq(CereShopBank::getShopId, businessId));
if(shopBank == null){
throw new CoBusinessException("10000","查找不到绑定的银行卡信息", "");
}
String resultStr = "";
T002TransForm transForm = new T002TransForm();
transForm.setTranCode("T002");
transForm.initCommonParams("T002");
transForm.setSubmitUrl(InitForm.T002_SUBMIT_URL);
transForm.setTranAmount(String.valueOf(money));
transForm.setUserId(business.getXsPayId());
transForm.setBindCardAgrNo(shopBank.getCardNumber());
transForm.setNotifyUrl(HnaPayConfig.GETMONEY_NOTICE_URL);
transForm.setPaymentTerminalInfo(HnaPayConfig.IP);
transForm.setDeviceInfo(HnaPayConfig.IP);
try {
resultStr = HttpUtils.commonReq(transForm, false);
} catch (Exception e) {
e.printStackTrace();
}
Map<String,Object> responseMap = JsonUtils.jsonToMap(resultStr);
String resultCode = String.valueOf(responseMap.get("resultCode"));
if (resultCode.equals("0000")){
//成功
return "success";
}else {
//失败
String errorMsg = String.valueOf(responseMap.get("errorMsg"));
throw new CoBusinessException(errorMsg);
}
}
}

4
cereshop-admin/src/main/java/com/shop/cereshop/admin/service/business/CerePlatformBusinessService.java

@ -57,4 +57,8 @@ public interface CerePlatformBusinessService {
List<CerePlatformBusiness> getByIdList(List<Long> businessIdList);
void updateDomain(BusinessDomainSet domainSet);
void updateBusinessHnaPay(Long businessId, String hnaPayId, String bindCardAgrNo);
void updateBusinessHnapayState(Long businessId, Integer hnapayStatus);
}

10
cereshop-admin/src/main/java/com/shop/cereshop/admin/service/business/impl/CerePlatformBusinessServiceImpl.java

@ -280,4 +280,14 @@ public class CerePlatformBusinessServiceImpl implements CerePlatformBusinessServ
public void updateDomain(BusinessDomainSet domainSet) {
cerePlatformBusinessDAO.updateDomain(domainSet);
}
@Override
public void updateBusinessHnaPay(Long businessId, String hnaPayId, String bindCardAgrNo) {
cerePlatformBusinessDAO.updateBusinessHnaPay(businessId,hnaPayId,bindCardAgrNo);
}
@Override
public void updateBusinessHnapayState(Long businessId, Integer hnapayStatus) {
cerePlatformBusinessDAO.updateBusinessHnapayState(businessId,hnapayStatus);
}
}

20
cereshop-admin/src/main/java/com/shop/cereshop/admin/service/bwxpay/CereBusinessWxpayService.java

@ -0,0 +1,20 @@
package com.shop.cereshop.admin.service.bwxpay;
import com.shop.cereshop.commons.domain.buyer.CereBuyerBank;
import com.shop.cereshop.commons.domain.bwxpay.CereBusinessWxpay;
import com.shop.cereshop.commons.exception.CoBusinessException;
/**
* 描述
*
* @author stevenhu
* @version 2025/02/20 14:19
*/
public interface CereBusinessWxpayService {
void save(CereBusinessWxpay record) throws CoBusinessException;
void update(CereBusinessWxpay businessWxpay) throws CoBusinessException;
CereBusinessWxpay getByBusinessId(Long businessId) throws CoBusinessException;
}

40
cereshop-admin/src/main/java/com/shop/cereshop/admin/service/bwxpay/impl/CereBusinessWxpayServiceImpl.java

@ -0,0 +1,40 @@
package com.shop.cereshop.admin.service.bwxpay.impl;
import com.shop.cereshop.admin.dao.bwxpay.CereBusinessWxpayDao;
import com.shop.cereshop.admin.service.bwxpay.CereBusinessWxpayService;
import com.shop.cereshop.commons.domain.bwxpay.CereBusinessWxpay;
import com.shop.cereshop.commons.exception.CoBusinessException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Isolation;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
/**
* 描述
*
* @author stevenhu
* @version 2025/02/20 14:21
*/
@Service
public class CereBusinessWxpayServiceImpl implements CereBusinessWxpayService {
@Autowired
private CereBusinessWxpayDao cereBusinessWxpayDao;
@Override
@Transactional(isolation= Isolation.DEFAULT,propagation= Propagation.REQUIRED,rollbackFor = {CoBusinessException.class, Exception.class})
public void save(CereBusinessWxpay record) throws CoBusinessException {
cereBusinessWxpayDao.insert(record);
}
@Override
public void update(CereBusinessWxpay businessWxpay) throws CoBusinessException {
cereBusinessWxpayDao.updateById(businessWxpay);
}
@Override
public CereBusinessWxpay getByBusinessId(Long businessId) throws CoBusinessException {
return cereBusinessWxpayDao.getByBusinessId(businessId);
}
}

11
cereshop-admin/src/main/resources/mybatis/mapper/business/CerePlatformBusinessDAO.xml

@ -318,7 +318,7 @@
SELECT a.business_id, a.business_code, a.business_name, a.business_brief, a.business_phone, a.charge_person_name,
a.charge_person_phone, a.business_adress, a.effective_date, a.effective_year, a.contract_state,
a.authentication_state, a.check_state, a.`state`, a.authen_type, a.create_time, a.update_time,
a.audit_live, a.audit_live_product,a.pc_domain,a.mobile_domain,
a.audit_live, a.audit_live_product,a.pc_domain,a.mobile_domain,a.hna_pay_id, a.bind_card_agr_no,a.hnapay_status,
b.business_user_id, c.password businessPassword
FROM cere_platform_business a
INNER JOIN cere_business_user b ON a.business_id = b.business_id AND b.is_main_user = 1
@ -497,4 +497,13 @@
<update id="updateDomain" parameterType="com.shop.cereshop.admin.page.business.BusinessDomainSet">
update cere_platform_business set pc_domain=#{pcDomain}, mobile_domain=#{mobileDomain} where business_id = #{businessId}
</update>
<update id="updateBusinessHnaPay">
update cere_platform_business set hna_pay_id=#{hnaPayId}, bind_card_agr_no=#{bindCardAgrNo} where business_id = #{businessId}
</update>
<update id="updateBusinessHnapayState">
update cere_platform_business set hnapay_status=#{hnapayStatus} where business_id = #{businessId}
</update>
</mapper>

19
cereshop-admin/src/main/resources/mybatis/mapper/bwxpay/CereBusinessWxpayDAO.xml

@ -0,0 +1,19 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.shop.cereshop.admin.dao.bwxpay.CereBusinessWxpayDao">
<resultMap id="BaseResultMap" type="com.shop.cereshop.commons.domain.bwxpay.CereBusinessWxpay">
<id column="id" jdbcType="BIGINT" property="id"/>
<result column="business_id" jdbcType="BIGINT" property="businessId" />
<result column="app_id" jdbcType="VARCHAR" property="appId" />
<result column="app_app_id" jdbcType="VARCHAR" property="appAppId" />
<result column="mch_id" jdbcType="VARCHAR" property="mchId" />
<result column="cert_url" jdbcType="VARCHAR" property="certUrl" />
<result column="mch_key" jdbcType="VARCHAR" property="mchKey" />
<result column="secret" jdbcType="VARCHAR" property="secret" />
</resultMap>
<select id="getByBusinessId" parameterType="java.lang.Object" resultType="com.shop.cereshop.commons.domain.bwxpay.CereBusinessWxpay">
SELECT * FROM cere_business_wxpay where business_id = #{businessId}
</select>
</mapper>

7
cereshop-app/pom.xml

@ -79,13 +79,6 @@
<version>0.2.1</version>
</dependency>
<dependency>
<groupId>commons-httpclient</groupId>
<artifactId>commons-httpclient</artifactId>
<version>3.1</version>
</dependency>
</dependencies>
<profiles>

21
cereshop-app/src/main/java/com/shop/cereshop/app/dao/bwxpay/CereBusinessWxpayDao.java

@ -0,0 +1,21 @@
package com.shop.cereshop.app.dao.bwxpay;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.shop.cereshop.commons.domain.bwxpay.CereBusinessWxpay;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
/**
* 描述
*
* @author stevenhu
* @version 2025/02/20 11:49
*/
@Mapper
public interface CereBusinessWxpayDao extends BaseMapper<CereBusinessWxpay> {
int insertSelective(CereBusinessWxpay record);
CereBusinessWxpay getByBusinessId(@Param("businessId") Long businessId);
}

28
cereshop-app/src/main/java/com/shop/cereshop/app/pay/hnapay/service/impl/HnaPayServiceImpl.java

@ -1,9 +1,7 @@
package com.shop.cereshop.app.pay.hnapay.service.impl;
import cn.hutool.core.util.ObjectUtil;
import cn.hutool.core.util.StrUtil;
import cn.hutool.json.JSONUtil;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.google.gson.Gson;
@ -11,13 +9,7 @@ import com.shop.cereshop.app.dao.business.CerePlatformBusinessDAO;
import com.shop.cereshop.app.dao.order.CereOrderProductDAO;
import com.shop.cereshop.app.dao.order.CereShopOrderDAO;
import com.shop.cereshop.app.pay.hnapay.domain.DivideAcctDtlVo;
import com.shop.cereshop.app.pay.hnapay.request.form.T005TransForm;
import com.shop.cereshop.app.pay.hnapay.request.form.T006TransForm;
import com.shop.cereshop.app.pay.hnapay.request.form.T009TransForm;
import com.shop.cereshop.app.pay.hnapay.request.init.InitForm;
import com.shop.cereshop.app.pay.hnapay.service.HnaPayService;
import com.shop.cereshop.app.pay.hnapay.utils.HttpUtils;
import com.shop.cereshop.app.pay.hnapay.utils.JsonUtils;
import com.shop.cereshop.app.pay.xs.domain.XsCallBackRequestVo;
import com.shop.cereshop.app.pay.xs.utils.CommonUtils;
import com.shop.cereshop.app.service.business.CerePlatformBusinessService;
@ -33,8 +25,14 @@ import com.shop.cereshop.commons.domain.order.CereOrderProduct;
import com.shop.cereshop.commons.domain.order.CereShopOrder;
import com.shop.cereshop.commons.domain.shop.CerePlatformShop;
import com.shop.cereshop.commons.exception.CoBusinessException;
import com.shop.cereshop.commons.request.hnapay.form.T005TransForm;
import com.shop.cereshop.commons.request.hnapay.form.T006TransForm;
import com.shop.cereshop.commons.request.hnapay.form.T009TransForm;
import com.shop.cereshop.commons.request.hnapay.init.InitForm;
import com.shop.cereshop.commons.utils.EmptyUtils;
import com.shop.cereshop.commons.utils.StringUtils;
import com.shop.cereshop.commons.utils.hnapay.HttpUtils;
import com.shop.cereshop.commons.utils.hnapay.JsonUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
@ -303,7 +301,7 @@ public class HnaPayServiceImpl implements HnaPayService {
}
}
String result = "";
String resultStr = "";
T009TransForm transForm = new T009TransForm();
transForm.setTranCode("T009");
transForm.initCommonParams("T009");
@ -332,11 +330,19 @@ public class HnaPayServiceImpl implements HnaPayService {
transForm.setDivideAcctDtl(this.buildSubMerchantOrderDetails(orderList, cereOrderProductList, cerePlatformShopList, cerePlatformBusinessList));
transForm.setFeeAmountUser("");
try {
result = HttpUtils.commonReq(transForm, false);
resultStr = HttpUtils.commonReq(transForm, false);
} catch (Exception e) {
e.printStackTrace();
}
return null;
Map<String,Object> responseMap = JsonUtils.jsonToMap(resultStr);
String resultCode = String.valueOf(responseMap.get("resultCode"));
if (resultCode.equals("0000")){
String qrCodeUrl = String.valueOf(responseMap.get("qrCodeUrl"));
return qrCodeUrl;
}else {
String errorMsg = String.valueOf(responseMap.get("errorMsg"));
throw new CoBusinessException(errorMsg);
}
}
/**

21
cereshop-app/src/main/java/com/shop/cereshop/app/service/bwxpay/CereBusinessWxpayService.java

@ -0,0 +1,21 @@
package com.shop.cereshop.app.service.bwxpay;
import com.shop.cereshop.commons.domain.buyer.CereBuyerBank;
import com.shop.cereshop.commons.domain.buyer.CereBuyerUser;
import com.shop.cereshop.commons.domain.bwxpay.CereBusinessWxpay;
import com.shop.cereshop.commons.exception.CoBusinessException;
/**
* 描述
*
* @author stevenhu
* @version 2025/02/20 14:19
*/
public interface CereBusinessWxpayService {
void save(CereBusinessWxpay record) throws CoBusinessException;
void update(CereBusinessWxpay businessWxpay) throws CoBusinessException;
CereBuyerBank getByBusinessId(Long businessId) throws CoBusinessException;
}

42
cereshop-app/src/main/java/com/shop/cereshop/app/service/bwxpay/impl/CereBusinessWxpayServiceImpl.java

@ -0,0 +1,42 @@
package com.shop.cereshop.app.service.bwxpay.impl;
import com.shop.cereshop.app.dao.bwxpay.CereBusinessWxpayDao;
import com.shop.cereshop.app.service.bwxpay.CereBusinessWxpayService;
import com.shop.cereshop.commons.domain.buyer.CereBuyerBank;
import com.shop.cereshop.commons.domain.bwxpay.CereBusinessWxpay;
import com.shop.cereshop.commons.exception.CoBusinessException;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Isolation;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
/**
* 描述
*
* @author stevenhu
* @version 2025/02/20 14:21
*/
@Service
public class CereBusinessWxpayServiceImpl implements CereBusinessWxpayService {
@Autowired
private CereBusinessWxpayDao cereBusinessWxpayDao;
@Override
@Transactional(isolation= Isolation.DEFAULT,propagation= Propagation.REQUIRED,rollbackFor = {CoBusinessException.class, Exception.class})
public void save(CereBusinessWxpay record) throws CoBusinessException {
cereBusinessWxpayDao.insert(record);
}
@Override
public void update(CereBusinessWxpay businessWxpay) throws CoBusinessException {
cereBusinessWxpayDao.updateById(businessWxpay);
}
@Override
public CereBuyerBank getByBusinessId(Long businessId) throws CoBusinessException {
cereBusinessWxpayDao.getByBusinessId(businessId);
return null;
}
}

119
cereshop-business/src/main/java/com/shop/cereshop/business/controller/HnaPayController.java

@ -0,0 +1,119 @@
package com.shop.cereshop.business.controller;
import com.alibaba.fastjson.JSONObject;
import com.google.gson.Gson;
import com.shop.cereshop.business.pay.hnapay.HnaPayService;
import com.shop.cereshop.business.pay.xs.domain.XsCallBackRequestVo;
import com.shop.cereshop.business.service.after.CereOrderAfterService;
import com.shop.cereshop.business.service.business.CerePlatformBusinessService;
import com.shop.cereshop.commons.constant.IntegerEnum;
import com.shop.cereshop.commons.utils.SpringUtil;
import com.shop.cereshop.commons.utils.StringUtils;
import io.swagger.annotations.Api;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
/**
* 描述新生支付新账通回调处理
*
* @author stevenhu
* @version 2025/02/14 9:24
*/
@RestController
@RequestMapping("extend/hnaPay")
@Slf4j(topic = "hnaPayController")
@Api(value = "新账通模块", tags = "新账通模块")
public class HnaPayController {
@Autowired
private HnaPayService hnaPayService;
@Autowired
private CerePlatformBusinessService businessService;
/**
* 退款通知回调
* @throws Exception
*/
@PostMapping("refund/notify")
public String refundNotify(@RequestParam(name = "msg") String msg) throws Exception {
log.info("refundNotify:" + msg);
try {
XsCallBackRequestVo xsCallBackRequestVo = hnaPayService.parseCallBackRequestVo(msg);
log.info(new Gson().toJson(xsCallBackRequestVo));
String status = xsCallBackRequestVo.getContent().getString("status");
//2成功 3失败
if(StringUtils.equals(status, "1")){
log.info("退款回调成功");
//截取订单编号
JSONObject content = xsCallBackRequestVo.getContent();
String merOrderId = content.getString("merOrderId");
String oldMerOrderId = content.getString("orgMerOrderId");
String oldDealId = content.getString("oldDealId");
CereOrderAfterService afterService = SpringUtil.getBean(CereOrderAfterService.class);
afterService.handleRefundSuc(merOrderId, oldDealId, oldMerOrderId, IntegerEnum.ORDER_PAY_XS.getCode());
// //处理支付成功后的其他逻辑
// cereShopOrderService.handleRefundWxLog(orderFormId, dealId, merOrderId);
}
} catch (Exception e) {
e.printStackTrace();
}
return "success";
}
/**
* 企业开户审核结果通知
* @param businessId
* @param msg
* @return
* @throws Exception
*/
@PostMapping("/hnaPay/create/notify/{businessId}")
public String onCreateNotify(@PathVariable String businessId, @RequestParam(name = "msg") String msg) {
log.info("onCreateNotify:" + msg);
return "200";
}
/**
* 企业上送资料审核结果通知
* @param businessId
* @param msg
* @return
* @throws Exception
*/
@PostMapping("/hnaPay/examine/notify/{businessId}")
public String onExamineNotify(@PathVariable String businessId, @RequestParam(name = "msg") String msg) {
log.info("onExamineNotify:" + msg);
try {
XsCallBackRequestVo xsCallBackRequestVo = hnaPayService.parseCallBackRequestVo(msg);
log.info(new Gson().toJson(xsCallBackRequestVo));
String status = xsCallBackRequestVo.getContent().getString("status");
//2成功 3失败
if(StringUtils.equals(status, "1")){
JSONObject content = xsCallBackRequestVo.getContent();
String auditResult = content.getString("auditResult");
if (auditResult.equals("1")){
//审核通过
businessService.updateBusinessHnapayState(Long.valueOf(businessId), 2);
}else {
//不通过原因
String rejectReason = content.getString("rejectReason");
//不通过证件类型列表,
//列出审批不通过证件类型多个以英文逗号,分隔 1,2,4,7
//1身份证正面
//2身份证反面
//4营业执照
//7开户许可证
String certTypeList = content.getString("certTypeList");
}
}
} catch (Exception e) {
e.printStackTrace();
}
return "200";
}
}

2
cereshop-business/src/main/java/com/shop/cereshop/business/dao/business/CerePlatformBusinessDAO.java

@ -51,4 +51,6 @@ public interface CerePlatformBusinessDAO extends BaseMapper<CerePlatformBusiness
List<CerePlatformBusiness> selectAll();
List<CerePlatformBusiness> getByIdList(@Param("businessIdList") List<Long> businessIdList);
void updateBusinessHnapayState(@Param("businessId") Long businessId, @Param("hnapayStatus") Integer hnapayStatus);
}

96
cereshop-business/src/main/java/com/shop/cereshop/business/pay/hnapay/HnaPayService.java

@ -0,0 +1,96 @@
package com.shop.cereshop.business.pay.hnapay;
import com.shop.cereshop.business.pay.PayService;
import com.shop.cereshop.business.pay.xs.domain.XsCallBackRequestVo;
import com.shop.cereshop.commons.exception.CoBusinessException;
import java.math.BigDecimal;
import java.util.Map;
/**
* 描述
*
* @author stevenhu
* @version 2025/02/18 9:27
*/
public interface HnaPayService extends PayService {
/**
* 解析新生支付的回调接口
* @param msg
* @return
* @throws Exception
*/
XsCallBackRequestVo parseCallBackRequestVo(String msg) throws Exception;
/**
* 企业开户
* @param entId 企业id
* @param userName 企业名称
* @param mobile 企业联系人手机号
* @param certNo 营业执照号(统一社会信用代码)
* @param certValidate 证件有效期 格式YYYYMMDD 永久则输入21990101
* @param cardNo 银行卡号
* @param bankCode 银行简码
* @param province 开户行所属省份
* @param city 开户行所属城市
* @param branch 开户支行
* @return
*/
Map<String,Object> createEntAccount(Long entId, String userName, String mobile, String certNo, String certValidate, String cardNo,
String bankCode, String province, String city, String branch);
/**
* 企业开户上传资料
* @param userId 开户返回的userId
* @param certFileType
* 1-身份证正面企业必传
* 2-身份证反面企业必传
* 3-法人身份证手持非必传
* 4-营业执照企业必传
* 5-其他非必传
* 6-其他非必传
* 7-开户许可证企业必传
* @param base64 上传图片base64为
* @return
*/
Map<String,Object> uploadEntFile(String userId,String certFileType, String base64);
/**
* 企业开户修改
* @param userId 开户返回的userId
* @param certNo 营业执照号(统一社会信用代码)
* @param userName 企业名称
* @param mobile 企业联系人手机号
* @param certValidate 证件有效期 格式YYYYMMDD 永久则输入21990101
* @return
*/
Map<String,Object> modifyEntAccount(String userId, String certNo, String userName, String mobile, String certValidate);
/**
* 企业换卡
* @param userId 开户返回的用户编号
* @param bindCardAgrNo 原绑卡协议号 开户接口返回
* @param mobile 银行预留手机号
* @param cardNo 银行卡号
* @param bankCode 银行简码
* @param province 开户行所属省份
* @param city 开户行所属城市
* @param branch 开户支行
* @return
*/
Map<String,Object> changeEntCard(String userId, String bindCardAgrNo, String mobile, String cardNo, String bankCode, String province, String city, String branch);
/**
* 提现
* @return
* @throws CoBusinessException
*/
String getMoney(Long businessId, String orderFormid,
String tradeType, BigDecimal money) throws CoBusinessException;
}

298
cereshop-business/src/main/java/com/shop/cereshop/business/pay/hnapay/impl/HnaPayServiceImpl.java

@ -0,0 +1,298 @@
package com.shop.cereshop.business.pay.hnapay.impl;
import cn.hutool.core.util.StrUtil;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.serializer.SerializerFeature;
import com.google.gson.Gson;
import com.shop.cereshop.business.dao.order.CereOrderProductDAO;
import com.shop.cereshop.business.dao.order.CereShopOrderDAO;
import com.shop.cereshop.business.dao.shop.CereShopBankDAO;
import com.shop.cereshop.business.page.business.Business;
import com.shop.cereshop.business.page.shop.ShopBankDetail;
import com.shop.cereshop.business.pay.hnapay.HnaPayService;
import com.shop.cereshop.business.pay.xs.domain.XsCallBackRequestVo;
import com.shop.cereshop.business.pay.xs.utils.CommonUtils;
import com.shop.cereshop.business.service.business.CerePlatformBusinessService;
import com.shop.cereshop.business.service.shop.CerePlatformShopService;
import com.shop.cereshop.commons.config.HnaPayConfig;
import com.shop.cereshop.commons.constant.WxPayEnum;
import com.shop.cereshop.commons.domain.business.CerePlatformBusiness;
import com.shop.cereshop.commons.domain.order.CereOrderParent;
import com.shop.cereshop.commons.domain.order.CereOrderProduct;
import com.shop.cereshop.commons.domain.order.CereShopOrder;
import com.shop.cereshop.commons.domain.shop.CerePlatformShop;
import com.shop.cereshop.commons.exception.CoBusinessException;
import com.shop.cereshop.commons.request.hnapay.form.T002TransForm;
import com.shop.cereshop.commons.request.hnapay.form.T005TransForm;
import com.shop.cereshop.commons.request.hnapay.init.InitForm;
import com.shop.cereshop.commons.utils.EmptyUtils;
import com.shop.cereshop.commons.utils.hnapay.HttpUtils;
import com.shop.cereshop.commons.utils.hnapay.JsonUtils;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.math.BigDecimal;
import java.util.Base64;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
/**
* 描述
*
* @author stevenhu
* @version 2025/02/18 9:29
*/
@Service(value = "HnaPayService")
@Slf4j
public class HnaPayServiceImpl implements HnaPayService {
@Autowired
private CereShopOrderDAO cereShopOrderDAO;
@Autowired
private CereOrderProductDAO cereOrderProductDAO;
@Autowired
private CerePlatformBusinessService cerePlatformBusinessService;
@Autowired
private CerePlatformShopService cerePlatformShopService;
@Autowired
private CereShopBankDAO cereShopBankDAO;
@Override
public XsCallBackRequestVo parseCallBackRequestVo(String msg) throws Exception {
//base64 decode
String msgStr = new String(Base64.getDecoder().decode(msg));
//LinkedHashMap json字符串转map时保持字段顺序不变
JSONObject headContentMap = JSONObject.parseObject(msgStr);
String resSign = headContentMap.getString("sign");
headContentMap.remove("sign");
//headContentMap 转为json字符串时保留字段值为null的字段
SerializerFeature[] serializerFeatures = new SerializerFeature[]{SerializerFeature.WriteMapNullValue};
String headContentJson = JSONObject.toJSONString(headContentMap,serializerFeatures);
CommonUtils.verifySignature(headContentJson, resSign);
JSONObject head = headContentMap.getJSONObject("head");
JSONObject content = headContentMap.getJSONObject("content");
String responseCode = content.getString("responseCode");
if(StrUtil.isNotBlank(responseCode) && StrUtil.isNotBlank(responseCode) && !StrUtil.equals(responseCode, "0")
&& !StrUtil.equals(responseCode, "0000") && !StrUtil.equals(responseCode, "0001")){
String errorMsg = content.getString("responseDesc");
throw new CoBusinessException(responseCode, errorMsg);
}
XsCallBackRequestVo xsCallBackRequestVo = new XsCallBackRequestVo();
xsCallBackRequestVo.setHead(head);
xsCallBackRequestVo.setContent(content);
return xsCallBackRequestVo;
}
@Override
public Map<String, Object> createEntAccount(Long entId, String userName, String mobile, String certNo, String certValidate, String cardNo, String bankCode, String province, String city, String branch) {
return null;
}
@Override
public Map<String, Object> uploadEntFile(String userId, String certFileType, String base64) {
return null;
}
@Override
public Map<String, Object> modifyEntAccount(String userId, String certNo, String userName, String mobile, String certValidate) {
return null;
}
@Override
public Map<String, Object> changeEntCard(String userId, String bindCardAgrNo, String mobile, String cardNo, String bankCode, String province, String city, String branch) {
return null;
}
@Override
public Map<String, String> refund(String orderFormId, String outTradeNo, String transactionId, String outRefundNo, BigDecimal total, BigDecimal refund, Long afterId) throws CoBusinessException, Exception {
List<CereShopOrder> orderList = null;
String cereOrderFormId = orderFormId;
String[] split = orderFormId.split("-");
if(!EmptyUtils.isEmpty(split)) {
cereOrderFormId = split[0];
}
//查询是否为父订单编号
CereOrderParent parent = cereShopOrderDAO.findByParentFormid(cereOrderFormId);
if (parent != null) {
//查询所有子订单数据
orderList = cereShopOrderDAO.findByParentId(parent.getParentId());
} else {
//子订单支付回调
orderList = cereShopOrderDAO.findByFormid(cereOrderFormId);
}
//这里理论上只会有一个子订单如果出现多个说明出错了
if(orderList.size() != 1){
throw new CoBusinessException("10000","订单查找出错", "");
}
List<CereOrderProduct> cereOrderProductList = cereOrderProductDAO.findByOrderIds(orderList.stream().map(CereShopOrder::getOrderId).collect(Collectors.toList()));
log.info("cereOrderProductList:" + new Gson().toJson(cereOrderProductList));
List<Long> shopIdList = orderList.stream().map(CereShopOrder::getShopId).distinct().collect(Collectors.toList());
List<CerePlatformShop> cerePlatformShopList = cerePlatformShopService.getByIdList(shopIdList);
List<Long> businessIdList = cerePlatformShopList.stream().map(CerePlatformShop::getBusinessId).distinct().collect(Collectors.toList());
List<CerePlatformBusiness> cerePlatformBusinessList = cerePlatformBusinessService.getByIdList(businessIdList);
String resultStr = "";
T005TransForm transForm = new T005TransForm();
transForm.setTranCode("T005");
transForm.initCommonParams("T005");
transForm.setMerOrderId(outRefundNo);
transForm.setSubmitUrl(InitForm.T005_SUBMIT_URL);
transForm.setSerialId("thee" + System.currentTimeMillis());
transForm.setOrgMerOrderId(outTradeNo);
//transForm.setOrgSubmitTime(orderInfo.getPaySubmitTime());
transForm.setOrderAmount(String.valueOf(total));
transForm.setRefundSource("1");
transForm.setDestType("1");
//退款类型 1:全额退款 2部分退款
transForm.setRefundType("1");
transForm.setRefundAmount(String.valueOf(refund));
transForm.setNotifyUrl(HnaPayConfig.REFUND_NOTICE_URL);
transForm.setRemark("退款备注信息");
//transForm.setDivideRefundDtl("");
try {
resultStr = HttpUtils.commonReq(transForm, false);
} catch (Exception e) {
e.printStackTrace();
}
Map<String,Object> responseMap = JsonUtils.jsonToMap(resultStr);
String resultCode = String.valueOf(responseMap.get("resultCode"));
if (resultCode.equals("0000")){
//成功
Map<String, String> result = new HashMap<>();
result.put("return_msg", WxPayEnum.REFUND_SUCCESS.getCode());
result.put("return_code", WxPayEnum.REFUND_OK.getCode());
return result;
}else {
//失败
String errorMsg = String.valueOf(responseMap.get("errorMsg"));
throw new CoBusinessException(errorMsg);
}
}
//获取保证金
@Override
public String getCollectionCode(String orderFormid, BigDecimal money, String ip, String tradeType) throws CoBusinessException, Exception {
return null;
}
@Override
public Map<String, String> orderRefund(String orderFormId, String outTradeNo, String transactionId, String outRefundNo, BigDecimal total, BigDecimal refund) throws CoBusinessException, Exception {
List<CereShopOrder> orderList = null;
String cereOrderFormId = orderFormId;
String[] split = orderFormId.split("-");
if(!EmptyUtils.isEmpty(split)) {
cereOrderFormId = split[0];
}
//查询是否为父订单编号
CereOrderParent parent = cereShopOrderDAO.findByParentFormid(cereOrderFormId);
if (parent != null) {
//查询所有子订单数据
orderList = cereShopOrderDAO.findByParentId(parent.getParentId());
} else {
//子订单支付回调
orderList = cereShopOrderDAO.findByFormid(cereOrderFormId);
}
//这里理论上只会有一个子订单如果出现多个说明出错了
if(orderList.size() != 1){
throw new CoBusinessException("10000","订单查找出错", "");
}
List<CereOrderProduct> cereOrderProductList = cereOrderProductDAO.findByOrderIds(orderList.stream().map(CereShopOrder::getOrderId).collect(Collectors.toList()));
log.info("cereOrderProductList:" + new Gson().toJson(cereOrderProductList));
List<Long> shopIdList = orderList.stream().map(CereShopOrder::getShopId).distinct().collect(Collectors.toList());
List<CerePlatformShop> cerePlatformShopList = cerePlatformShopService.getByIdList(shopIdList);
List<Long> businessIdList = cerePlatformShopList.stream().map(CerePlatformShop::getBusinessId).distinct().collect(Collectors.toList());
List<CerePlatformBusiness> cerePlatformBusinessList = cerePlatformBusinessService.getByIdList(businessIdList);
String resultStr = "";
T005TransForm transForm = new T005TransForm();
transForm.setTranCode("T005");
transForm.initCommonParams("T005");
transForm.setMerOrderId(outRefundNo);
transForm.setSubmitUrl(InitForm.T005_SUBMIT_URL);
transForm.setSerialId("thee" + System.currentTimeMillis());
transForm.setOrgMerOrderId(outTradeNo);
//transForm.setOrgSubmitTime(orderInfo.getPaySubmitTime());
transForm.setOrderAmount(String.valueOf(total));
transForm.setRefundSource("1");
transForm.setDestType("1");
//退款类型 1:全额退款 2部分退款
transForm.setRefundType("1");
transForm.setRefundAmount(String.valueOf(refund));
transForm.setNotifyUrl(HnaPayConfig.REFUND_NOTICE_URL);
transForm.setRemark("退款备注信息");
//transForm.setDivideRefundDtl("");
try {
resultStr = HttpUtils.commonReq(transForm, false);
} catch (Exception e) {
e.printStackTrace();
}
Map<String,Object> responseMap = JsonUtils.jsonToMap(resultStr);
String resultCode = String.valueOf(responseMap.get("resultCode"));
if (resultCode.equals("0000")){
//成功
Map<String, String> result = new HashMap<>();
result.put("return_msg", WxPayEnum.REFUND_SUCCESS.getCode());
result.put("return_code", WxPayEnum.REFUND_OK.getCode());
return result;
}else {
//失败
String errorMsg = String.valueOf(responseMap.get("errorMsg"));
throw new CoBusinessException(errorMsg);
}
}
@Override
public String getMoney(Long businessId, String orderFormid, String tradeType, BigDecimal money) throws CoBusinessException {
Business business = cerePlatformBusinessService.getById(businessId);
ShopBankDetail shopBankDetail = cereShopBankDAO.getByShopId(businessId);
if(shopBankDetail == null){
throw new CoBusinessException("10000","查找不到绑定的银行卡信息", "");
}
String resultStr = "";
T002TransForm transForm = new T002TransForm();
transForm.setTranCode("T002");
transForm.initCommonParams("T002");
transForm.setSubmitUrl(InitForm.T002_SUBMIT_URL);
transForm.setTranAmount(String.valueOf(money));
transForm.setUserId(business.getXsPayId());
transForm.setBindCardAgrNo(shopBankDetail.getCardNumber());
transForm.setNotifyUrl(HnaPayConfig.GETMONEY_NOTICE_URL);
transForm.setPaymentTerminalInfo(HnaPayConfig.IP);
transForm.setDeviceInfo(HnaPayConfig.IP);
try {
resultStr = HttpUtils.commonReq(transForm, false);
} catch (Exception e) {
e.printStackTrace();
}
Map<String,Object> responseMap = JsonUtils.jsonToMap(resultStr);
String resultCode = String.valueOf(responseMap.get("resultCode"));
if (resultCode.equals("0000")){
//成功
return "success";
}else {
//失败
String errorMsg = String.valueOf(responseMap.get("errorMsg"));
throw new CoBusinessException(errorMsg);
}
}
}

2
cereshop-business/src/main/java/com/shop/cereshop/business/service/business/CerePlatformBusinessService.java

@ -51,4 +51,6 @@ public interface CerePlatformBusinessService {
List<HotProductDTO> selectHotProductForExport(IndexParam param);
List<CerePlatformBusiness> getByIdList(List<Long> businessIdList);
void updateBusinessHnapayState(Long businessId, Integer hnapayStatus);
}

4
cereshop-business/src/main/java/com/shop/cereshop/business/service/business/impl/CerePlatformBusinessServiceImpl.java

@ -417,4 +417,8 @@ public class CerePlatformBusinessServiceImpl implements CerePlatformBusinessServ
return cerePlatformBusinessDAO.getByIdList(businessIdList);
}
@Override
public void updateBusinessHnapayState(Long businessId, Integer hnapayStatus) {
cerePlatformBusinessDAO.updateBusinessHnapayState(businessId,hnapayStatus);
}
}

4
cereshop-business/src/main/resources/mybatis/mapper/business/CerePlatformBusinessDAO.xml

@ -392,4 +392,8 @@
</foreach>
)
</select>
<update id="updateBusinessHnapayState">
update cere_platform_business set hnapay_status=#{hnapayStatus} where business_id = #{businessId}
</update>
</mapper>

6
cereshop-commons/pom.xml

@ -28,6 +28,12 @@
</dependency>
<dependency>
<groupId>commons-httpclient</groupId>
<artifactId>commons-httpclient</artifactId>
<version>3.1</version>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-extension</artifactId>
</dependency>

10
cereshop-commons/src/main/java/com/shop/cereshop/commons/config/HnaPayConfig.java

@ -57,6 +57,14 @@ public class HnaPayConfig {
public static String APP_NOTICE_URL = "http://36.138.125.206/ceres-app-api/extend/hnaPay/pay/notify";
// 退款回调地址
public static String REFUND_NOTICE_URL = "http://36.138.125.206/ceres-app-api/extend/hnaPay/refund/notify";
public static String REFUND_NOTICE_URL = "http://36.138.125.206/ceres-business-api/extend/hnaPay/refund/notify";
//企业开户审核结果通知
public static String CREATE_NOTICE_URL = "http://36.138.125.206/ceres-business-api/extend/hnaPay/create/notify";
//企业上送资料审核结果通知(该异步通知接收地址在商户后台-安全中心设置)
public static String EXAMINE_NOTICE_URL = "http://36.138.125.206/ceres-business-api/extend/hnaPay/examine/notify";
public static String GETMONEY_NOTICE_URL = "http://36.138.125.206/ceres-business-api/extend/hnaPay/getmoney/notify";
}

17
cereshop-commons/src/main/java/com/shop/cereshop/commons/domain/business/CerePlatformBusiness.java

@ -203,6 +203,23 @@ public class CerePlatformBusiness implements Serializable {
@ApiModelProperty(value = "移动端商城域名")
private String mobileDomain;
/**
* 新账通支付商户Id/分账方id
*/
@ApiModelProperty(value = "新账通支付商户Id/分账方id")
private String hnaPayId;
/**
* 新账通支付绑卡协议号
*/
@ApiModelProperty(value = "新账通支付绑卡协议号")
private String bindCardAgrNo;
/**
* 新账通开户审核状态0-待上传 1-审核中 2-审核通过 3-审核拒绝
*/
@ApiModelProperty(value = "新账通开户审核状态")
private String hnapayStatus;
private static final long serialVersionUID = 1L;

55
cereshop-commons/src/main/java/com/shop/cereshop/commons/domain/bwxpay/CereBusinessWxpay.java

@ -0,0 +1,55 @@
package com.shop.cereshop.commons.domain.bwxpay;
import lombok.Data;
import java.io.Serializable;
/**
* 描述
*
* @author stevenhu
* @version 2025/02/20 11:12
*/
@Data
public class CereBusinessWxpay implements Serializable {
/**
* 主键Id
*/
private Long id;
/**
* 商家id
*/
private Long businessId;
/**
* 支付小程序appid
*/
private String appId;
/**
* 支付APP端的appid
*/
private String AppAppId;
/**
* 商户号
*/
private String mchId;
/**
* 证书路径
*/
private String certUrl;
/**
* 商户秘钥
*/
private String mchKey;
/**
* 私钥
*/
private String secret;
}

4
cereshop-app/src/main/java/com/shop/cereshop/app/pay/hnapay/request/form/BaseTransForm.java → cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/BaseTransForm.java

@ -1,9 +1,9 @@
package com.shop.cereshop.app.pay.hnapay.request.form;
package com.shop.cereshop.commons.request.hnapay.form;
import com.alibaba.fastjson.JSONObject;
import com.shop.cereshop.app.pay.hnapay.utils.HnaPayDateUtils;
import com.shop.cereshop.commons.config.HnaPayConfig;
import com.shop.cereshop.commons.utils.hnapay.HnaPayDateUtils;
import lombok.Data;
import java.io.Serializable;

2
cereshop-app/src/main/java/com/shop/cereshop/app/pay/hnapay/request/form/F001TransForm.java → cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/F001TransForm.java

@ -1,4 +1,4 @@
package com.shop.cereshop.app.pay.hnapay.request.form;
package com.shop.cereshop.commons.request.hnapay.form;
import lombok.Data;

2
cereshop-app/src/main/java/com/shop/cereshop/app/pay/hnapay/request/form/Q001TransForm.java → cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/Q001TransForm.java

@ -1,4 +1,4 @@
package com.shop.cereshop.app.pay.hnapay.request.form;
package com.shop.cereshop.commons.request.hnapay.form;
import lombok.Data;

2
cereshop-app/src/main/java/com/shop/cereshop/app/pay/hnapay/request/form/Q002TransForm.java → cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/Q002TransForm.java

@ -1,4 +1,4 @@
package com.shop.cereshop.app.pay.hnapay.request.form;
package com.shop.cereshop.commons.request.hnapay.form;
import lombok.Data;

2
cereshop-app/src/main/java/com/shop/cereshop/app/pay/hnapay/request/form/Q003TransForm.java → cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/Q003TransForm.java

@ -1,4 +1,4 @@
package com.shop.cereshop.app.pay.hnapay.request.form;
package com.shop.cereshop.commons.request.hnapay.form;
import lombok.Data;

2
cereshop-app/src/main/java/com/shop/cereshop/app/pay/hnapay/request/form/Q004TransForm.java → cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/Q004TransForm.java

@ -1,4 +1,4 @@
package com.shop.cereshop.app.pay.hnapay.request.form;
package com.shop.cereshop.commons.request.hnapay.form;
import lombok.Data;

2
cereshop-app/src/main/java/com/shop/cereshop/app/pay/hnapay/request/form/Q006TransForm.java → cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/Q006TransForm.java

@ -1,4 +1,4 @@
package com.shop.cereshop.app.pay.hnapay.request.form;
package com.shop.cereshop.commons.request.hnapay.form;
import lombok.Data;

2
cereshop-app/src/main/java/com/shop/cereshop/app/pay/hnapay/request/form/Q007TransForm.java → cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/Q007TransForm.java

@ -1,4 +1,4 @@
package com.shop.cereshop.app.pay.hnapay.request.form;
package com.shop.cereshop.commons.request.hnapay.form;
import lombok.Data;

2
cereshop-app/src/main/java/com/shop/cereshop/app/pay/hnapay/request/form/Q008TransForm.java → cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/Q008TransForm.java

@ -1,4 +1,4 @@
package com.shop.cereshop.app.pay.hnapay.request.form;
package com.shop.cereshop.commons.request.hnapay.form;
import lombok.Data;

2
cereshop-app/src/main/java/com/shop/cereshop/app/pay/hnapay/request/form/Q009TransForm.java → cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/Q009TransForm.java

@ -1,4 +1,4 @@
package com.shop.cereshop.app.pay.hnapay.request.form;
package com.shop.cereshop.commons.request.hnapay.form;
import lombok.Data;

2
cereshop-app/src/main/java/com/shop/cereshop/app/pay/hnapay/request/form/R001TransForm.java → cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/R001TransForm.java

@ -1,4 +1,4 @@
package com.shop.cereshop.app.pay.hnapay.request.form;
package com.shop.cereshop.commons.request.hnapay.form;
import lombok.Data;

2
cereshop-app/src/main/java/com/shop/cereshop/app/pay/hnapay/request/form/R002TransForm.java → cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/R002TransForm.java

@ -1,4 +1,4 @@
package com.shop.cereshop.app.pay.hnapay.request.form;
package com.shop.cereshop.commons.request.hnapay.form;
import lombok.Data;

2
cereshop-app/src/main/java/com/shop/cereshop/app/pay/hnapay/request/form/R003TransForm.java → cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/R003TransForm.java

@ -1,4 +1,4 @@
package com.shop.cereshop.app.pay.hnapay.request.form;
package com.shop.cereshop.commons.request.hnapay.form;
import lombok.Data;

2
cereshop-app/src/main/java/com/shop/cereshop/app/pay/hnapay/request/form/R004TransForm.java → cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/R004TransForm.java

@ -1,4 +1,4 @@
package com.shop.cereshop.app.pay.hnapay.request.form;
package com.shop.cereshop.commons.request.hnapay.form;
import lombok.Data;

2
cereshop-app/src/main/java/com/shop/cereshop/app/pay/hnapay/request/form/R007TransForm.java → cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/R007TransForm.java

@ -1,4 +1,4 @@
package com.shop.cereshop.app.pay.hnapay.request.form;
package com.shop.cereshop.commons.request.hnapay.form;
import lombok.Data;

2
cereshop-app/src/main/java/com/shop/cereshop/app/pay/hnapay/request/form/R008TransForm.java → cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/R008TransForm.java

@ -1,4 +1,4 @@
package com.shop.cereshop.app.pay.hnapay.request.form;
package com.shop.cereshop.commons.request.hnapay.form;
import lombok.Data;

2
cereshop-app/src/main/java/com/shop/cereshop/app/pay/hnapay/request/form/R009TransForm.java → cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/R009TransForm.java

@ -1,4 +1,4 @@
package com.shop.cereshop.app.pay.hnapay.request.form;
package com.shop.cereshop.commons.request.hnapay.form;
import lombok.Data;

2
cereshop-app/src/main/java/com/shop/cereshop/app/pay/hnapay/request/form/R010TransForm.java → cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/R010TransForm.java

@ -1,4 +1,4 @@
package com.shop.cereshop.app.pay.hnapay.request.form;
package com.shop.cereshop.commons.request.hnapay.form;
import lombok.Data;

2
cereshop-app/src/main/java/com/shop/cereshop/app/pay/hnapay/request/form/R011TransForm.java → cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/R011TransForm.java

@ -1,4 +1,4 @@
package com.shop.cereshop.app.pay.hnapay.request.form;
package com.shop.cereshop.commons.request.hnapay.form;
import lombok.Data;

2
cereshop-app/src/main/java/com/shop/cereshop/app/pay/hnapay/request/form/R012TransForm.java → cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/R012TransForm.java

@ -1,4 +1,4 @@
package com.shop.cereshop.app.pay.hnapay.request.form;
package com.shop.cereshop.commons.request.hnapay.form;
import lombok.Data;

2
cereshop-app/src/main/java/com/shop/cereshop/app/pay/hnapay/request/form/R013TransForm.java → cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/R013TransForm.java

@ -1,4 +1,4 @@
package com.shop.cereshop.app.pay.hnapay.request.form;
package com.shop.cereshop.commons.request.hnapay.form;
import lombok.Data;

2
cereshop-app/src/main/java/com/shop/cereshop/app/pay/hnapay/request/form/R014TransForm.java → cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/R014TransForm.java

@ -1,4 +1,4 @@
package com.shop.cereshop.app.pay.hnapay.request.form;
package com.shop.cereshop.commons.request.hnapay.form;
import lombok.Data;

2
cereshop-app/src/main/java/com/shop/cereshop/app/pay/hnapay/request/form/R015TransForm.java → cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/R015TransForm.java

@ -1,4 +1,4 @@
package com.shop.cereshop.app.pay.hnapay.request.form;
package com.shop.cereshop.commons.request.hnapay.form;
import lombok.Data;

2
cereshop-app/src/main/java/com/shop/cereshop/app/pay/hnapay/request/form/T002TransForm.java → cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/T002TransForm.java

@ -1,4 +1,4 @@
package com.shop.cereshop.app.pay.hnapay.request.form;
package com.shop.cereshop.commons.request.hnapay.form;
import lombok.Data;

2
cereshop-app/src/main/java/com/shop/cereshop/app/pay/hnapay/request/form/T003TransForm.java → cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/T003TransForm.java

@ -1,4 +1,4 @@
package com.shop.cereshop.app.pay.hnapay.request.form;
package com.shop.cereshop.commons.request.hnapay.form;
import lombok.Data;

2
cereshop-app/src/main/java/com/shop/cereshop/app/pay/hnapay/request/form/T004TransForm.java → cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/T004TransForm.java

@ -1,4 +1,4 @@
package com.shop.cereshop.app.pay.hnapay.request.form;
package com.shop.cereshop.commons.request.hnapay.form;
import lombok.Data;

3
cereshop-app/src/main/java/com/shop/cereshop/app/pay/hnapay/request/form/T005TransForm.java → cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/T005TransForm.java

@ -1,4 +1,4 @@
package com.shop.cereshop.app.pay.hnapay.request.form;
package com.shop.cereshop.commons.request.hnapay.form;
import lombok.Data;
@ -27,6 +27,7 @@ public class T005TransForm extends BaseTransForm {
private String refundAmount;//商户退款金额
private String notifyUrl;//异步通知地址
private String remark;//备注
private String divideRefundDtl;//担保下单退款明细,担保下单外扣部分退款时必填
@Override
public String getEncryptJsonStr() {

2
cereshop-app/src/main/java/com/shop/cereshop/app/pay/hnapay/request/form/T006TransForm.java → cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/T006TransForm.java

@ -1,4 +1,4 @@
package com.shop.cereshop.app.pay.hnapay.request.form;
package com.shop.cereshop.commons.request.hnapay.form;
import lombok.Data;

2
cereshop-app/src/main/java/com/shop/cereshop/app/pay/hnapay/request/form/T007TransForm.java → cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/T007TransForm.java

@ -1,4 +1,4 @@
package com.shop.cereshop.app.pay.hnapay.request.form;
package com.shop.cereshop.commons.request.hnapay.form;
import lombok.Data;

2
cereshop-app/src/main/java/com/shop/cereshop/app/pay/hnapay/request/form/T008TransForm.java → cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/T008TransForm.java

@ -1,4 +1,4 @@
package com.shop.cereshop.app.pay.hnapay.request.form;
package com.shop.cereshop.commons.request.hnapay.form;
import lombok.Data;

2
cereshop-app/src/main/java/com/shop/cereshop/app/pay/hnapay/request/form/T009TransForm.java → cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/T009TransForm.java

@ -1,4 +1,4 @@
package com.shop.cereshop.app.pay.hnapay.request.form;
package com.shop.cereshop.commons.request.hnapay.form;
import lombok.Data;

2
cereshop-app/src/main/java/com/shop/cereshop/app/pay/hnapay/request/form/T010TransForm.java → cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/T010TransForm.java

@ -1,4 +1,4 @@
package com.shop.cereshop.app.pay.hnapay.request.form;
package com.shop.cereshop.commons.request.hnapay.form;
import lombok.Data;

2
cereshop-app/src/main/java/com/shop/cereshop/app/pay/hnapay/request/form/T011TransForm.java → cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/T011TransForm.java

@ -1,4 +1,4 @@
package com.shop.cereshop.app.pay.hnapay.request.form;
package com.shop.cereshop.commons.request.hnapay.form;
import lombok.Data;

2
cereshop-app/src/main/java/com/shop/cereshop/app/pay/hnapay/request/form/T012TransForm.java → cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/T012TransForm.java

@ -1,4 +1,4 @@
package com.shop.cereshop.app.pay.hnapay.request.form;
package com.shop.cereshop.commons.request.hnapay.form;
import lombok.Data;

2
cereshop-app/src/main/java/com/shop/cereshop/app/pay/hnapay/request/form/T013TransForm.java → cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/T013TransForm.java

@ -1,4 +1,4 @@
package com.shop.cereshop.app.pay.hnapay.request.form;
package com.shop.cereshop.commons.request.hnapay.form;
import lombok.Data;

2
cereshop-app/src/main/java/com/shop/cereshop/app/pay/hnapay/request/form/T019TransForm.java → cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/T019TransForm.java

@ -1,4 +1,4 @@
package com.shop.cereshop.app.pay.hnapay.request.form;
package com.shop.cereshop.commons.request.hnapay.form;
import lombok.Data;

2
cereshop-app/src/main/java/com/shop/cereshop/app/pay/hnapay/request/form/T020TransForm.java → cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/T020TransForm.java

@ -1,4 +1,4 @@
package com.shop.cereshop.app.pay.hnapay.request.form;
package com.shop.cereshop.commons.request.hnapay.form;
import lombok.Data;

2
cereshop-app/src/main/java/com/shop/cereshop/app/pay/hnapay/request/form/T021TransForm.java → cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/T021TransForm.java

@ -1,4 +1,4 @@
package com.shop.cereshop.app.pay.hnapay.request.form;
package com.shop.cereshop.commons.request.hnapay.form;
import lombok.Data;

2
cereshop-app/src/main/java/com/shop/cereshop/app/pay/hnapay/request/form/T022TransForm.java → cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/T022TransForm.java

@ -1,4 +1,4 @@
package com.shop.cereshop.app.pay.hnapay.request.form;
package com.shop.cereshop.commons.request.hnapay.form;
import lombok.Data;

4
cereshop-app/src/main/java/com/shop/cereshop/app/pay/hnapay/request/init/InitForm.java → cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/init/InitForm.java

@ -1,7 +1,7 @@
package com.shop.cereshop.app.pay.hnapay.request.init;
package com.shop.cereshop.commons.request.hnapay.init;
import com.shop.cereshop.app.pay.hnapay.request.form.*;
import com.shop.cereshop.commons.request.hnapay.form.*;
import java.util.Map;

2
cereshop-app/src/main/java/com/shop/cereshop/app/pay/hnapay/utils/Base64Util.java → cereshop-commons/src/main/java/com/shop/cereshop/commons/utils/hnapay/Base64Util.java

@ -3,7 +3,7 @@
* www.hnapay.com
*/
package com.shop.cereshop.app.pay.hnapay.utils;
package com.shop.cereshop.commons.utils.hnapay;
import java.util.Base64;

2
cereshop-app/src/main/java/com/shop/cereshop/app/pay/hnapay/utils/HexStringByte.java → cereshop-commons/src/main/java/com/shop/cereshop/commons/utils/hnapay/HexStringByte.java

@ -3,7 +3,7 @@
* www.hnapay.com
*/
package com.shop.cereshop.app.pay.hnapay.utils;
package com.shop.cereshop.commons.utils.hnapay;
/**
* 十六进制转换

2
cereshop-app/src/main/java/com/shop/cereshop/app/pay/hnapay/utils/HnaPayDateUtils.java → cereshop-commons/src/main/java/com/shop/cereshop/commons/utils/hnapay/HnaPayDateUtils.java

@ -1,4 +1,4 @@
package com.shop.cereshop.app.pay.hnapay.utils;
package com.shop.cereshop.commons.utils.hnapay;
import java.text.ParseException;
import java.text.SimpleDateFormat;

2
cereshop-app/src/main/java/com/shop/cereshop/app/pay/hnapay/utils/HnapaySign.java → cereshop-commons/src/main/java/com/shop/cereshop/commons/utils/hnapay/HnapaySign.java

@ -3,7 +3,7 @@
* www.hnapay.com
*/
package com.shop.cereshop.app.pay.hnapay.utils;
package com.shop.cereshop.commons.utils.hnapay;
import com.shop.cereshop.commons.config.HnaPayConfig;
import com.shop.cereshop.commons.exception.CoBusinessException;

6
cereshop-app/src/main/java/com/shop/cereshop/app/pay/hnapay/utils/HttpClientUtils.java → cereshop-commons/src/main/java/com/shop/cereshop/commons/utils/hnapay/HttpClientUtils.java

@ -3,10 +3,10 @@
* www.hnapay.com
*/
package com.shop.cereshop.app.pay.hnapay.utils;
import com.shop.cereshop.commons.exception.CoBusinessException;
package com.shop.cereshop.commons.utils.hnapay;
import org.apache.commons.httpclient.*;
import com.shop.cereshop.commons.exception.CoBusinessException;
import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler;
import org.apache.commons.httpclient.methods.ByteArrayRequestEntity;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.methods.PostMethod;

6
cereshop-app/src/main/java/com/shop/cereshop/app/pay/hnapay/utils/HttpUtils.java → cereshop-commons/src/main/java/com/shop/cereshop/commons/utils/hnapay/HttpUtils.java

@ -1,8 +1,8 @@
package com.shop.cereshop.app.pay.hnapay.utils;
package com.shop.cereshop.commons.utils.hnapay;
import com.shop.cereshop.app.pay.hnapay.request.form.BaseTransForm;
import com.shop.cereshop.app.pay.hnapay.request.init.InitForm;
import com.shop.cereshop.commons.config.HnaPayConfig;
import com.shop.cereshop.commons.request.hnapay.form.BaseTransForm;
import com.shop.cereshop.commons.request.hnapay.init.InitForm;
import com.shop.cereshop.commons.utils.Base64Util;
import org.apache.http.HttpEntity;
import org.apache.http.NameValuePair;

2
cereshop-app/src/main/java/com/shop/cereshop/app/pay/hnapay/utils/HttpsTransport.java → cereshop-commons/src/main/java/com/shop/cereshop/commons/utils/hnapay/HttpsTransport.java

@ -3,7 +3,7 @@
* www.hnapay.com
*/
package com.shop.cereshop.app.pay.hnapay.utils;
package com.shop.cereshop.commons.utils.hnapay;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.*;

2
cereshop-app/src/main/java/com/shop/cereshop/app/pay/hnapay/utils/JsonUtils.java → cereshop-commons/src/main/java/com/shop/cereshop/commons/utils/hnapay/JsonUtils.java

@ -3,7 +3,7 @@
* www.hnapay.com
*/
package com.shop.cereshop.app.pay.hnapay.utils;
package com.shop.cereshop.commons.utils.hnapay;
import com.alibaba.fastjson.JSONArray;
import com.fasterxml.jackson.core.JsonGenerationException;

2
cereshop-app/src/main/java/com/shop/cereshop/app/pay/hnapay/utils/KeyUtils.java → cereshop-commons/src/main/java/com/shop/cereshop/commons/utils/hnapay/KeyUtils.java

@ -1,4 +1,4 @@
package com.shop.cereshop.app.pay.hnapay.utils;
package com.shop.cereshop.commons.utils.hnapay;
import com.shop.cereshop.commons.config.HnaPayConfig;
import com.shop.cereshop.commons.exception.CoBusinessException;

2
cereshop-app/src/main/java/com/shop/cereshop/app/pay/hnapay/utils/RSAAlgorithms.java → cereshop-commons/src/main/java/com/shop/cereshop/commons/utils/hnapay/RSAAlgorithms.java

@ -3,7 +3,7 @@
* www.hnapay.com
*/
package com.shop.cereshop.app.pay.hnapay.utils;
package com.shop.cereshop.commons.utils.hnapay;
import com.shop.cereshop.commons.config.HnaPayConfig;
import com.shop.cereshop.commons.exception.CoBusinessException;

17
doc/3.0/update.sql

@ -303,3 +303,20 @@ ALTER TABLE `cere_platform_membership`
-- 会员等级表增加商家表关联Id
ALTER TABLE `cere_platform_member_level`
ADD COLUMN `business_id` bigint(20) DEFAULT 0 COMMENT '商家Id';
CREATE TABLE `cere_business_wxpay` (
`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT 'id',
`business_id` bigint(20) NULL DEFAULT 0 COMMENT '商家Id',
`app_id` varchar(100) NULL COMMENT '支付小程序appid',
`app_app_id` varchar(100) NULL COMMENT '支付APP端的appid',
`mch_id` varchar(100) NULL COMMENT '商户号',
`cert_url` varchar(256) NULL COMMENT '证书路径',
`mch_key` text NULL COMMENT '商户秘钥',
`secret` text NULL COMMENT '私钥',
PRIMARY KEY (`id`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '商家微信支付配置信息' ROW_FORMAT = DYNAMIC;
ALTER TABLE cere_platform_business ADD hna_pay_id varchar(256) DEFAULT '' COMMENT '新账通支付商户Id/分账方id';
ALTER TABLE cere_platform_business ADD bind_card_agr_no varchar(30) DEFAULT '' COMMENT '新账通支付绑卡协议号';
ALTER TABLE cere_platform_business ADD COLUMN hnapay_status tinyint(1) UNSIGNED NULL DEFAULT 0 COMMENT '0-待上传 1-审核中 2-审核通过 3-审核拒绝' AFTER bind_card_agr_no;
Loading…
Cancel
Save