2 Commits
c9086999b6
...
c2a36b2c8e
Author | SHA1 | Message | Date |
---|---|---|---|
|
c2a36b2c8e |
管理端商家列表加入新账通支付接入功能
|
4 months ago |
|
47774470f1 |
新账通接入
|
5 months ago |
130 changed files with 5276 additions and 3839 deletions
-
67cereshop-admin/src/main/java/com/shop/cereshop/admin/controller/BusinessWxpayController.java
-
103cereshop-admin/src/main/java/com/shop/cereshop/admin/controller/HnaPayController.java
-
4cereshop-admin/src/main/java/com/shop/cereshop/admin/dao/business/CerePlatformBusinessDAO.java
-
20cereshop-admin/src/main/java/com/shop/cereshop/admin/dao/bwxpay/CereBusinessWxpayDao.java
-
87cereshop-admin/src/main/java/com/shop/cereshop/admin/param/business/BusinessHnapayCreateParam.java
-
75cereshop-admin/src/main/java/com/shop/cereshop/admin/pay/hnapay/HnaPayService.java
-
267cereshop-admin/src/main/java/com/shop/cereshop/admin/pay/hnapay/impl/HnaPayServiceImpl.java
-
4cereshop-admin/src/main/java/com/shop/cereshop/admin/service/business/CerePlatformBusinessService.java
-
10cereshop-admin/src/main/java/com/shop/cereshop/admin/service/business/impl/CerePlatformBusinessServiceImpl.java
-
20cereshop-admin/src/main/java/com/shop/cereshop/admin/service/bwxpay/CereBusinessWxpayService.java
-
40cereshop-admin/src/main/java/com/shop/cereshop/admin/service/bwxpay/impl/CereBusinessWxpayServiceImpl.java
-
11cereshop-admin/src/main/resources/mybatis/mapper/business/CerePlatformBusinessDAO.xml
-
19cereshop-admin/src/main/resources/mybatis/mapper/bwxpay/CereBusinessWxpayDAO.xml
-
7cereshop-app/pom.xml
-
21cereshop-app/src/main/java/com/shop/cereshop/app/dao/bwxpay/CereBusinessWxpayDao.java
-
28cereshop-app/src/main/java/com/shop/cereshop/app/pay/hnapay/service/impl/HnaPayServiceImpl.java
-
21cereshop-app/src/main/java/com/shop/cereshop/app/service/bwxpay/CereBusinessWxpayService.java
-
42cereshop-app/src/main/java/com/shop/cereshop/app/service/bwxpay/impl/CereBusinessWxpayServiceImpl.java
-
119cereshop-business/src/main/java/com/shop/cereshop/business/controller/HnaPayController.java
-
2cereshop-business/src/main/java/com/shop/cereshop/business/dao/business/CerePlatformBusinessDAO.java
-
96cereshop-business/src/main/java/com/shop/cereshop/business/pay/hnapay/HnaPayService.java
-
298cereshop-business/src/main/java/com/shop/cereshop/business/pay/hnapay/impl/HnaPayServiceImpl.java
-
2cereshop-business/src/main/java/com/shop/cereshop/business/service/business/CerePlatformBusinessService.java
-
4cereshop-business/src/main/java/com/shop/cereshop/business/service/business/impl/CerePlatformBusinessServiceImpl.java
-
4cereshop-business/src/main/resources/mybatis/mapper/business/CerePlatformBusinessDAO.xml
-
6cereshop-commons/pom.xml
-
10cereshop-commons/src/main/java/com/shop/cereshop/commons/config/HnaPayConfig.java
-
17cereshop-commons/src/main/java/com/shop/cereshop/commons/domain/business/CerePlatformBusiness.java
-
55cereshop-commons/src/main/java/com/shop/cereshop/commons/domain/bwxpay/CereBusinessWxpay.java
-
4cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/BaseTransForm.java
-
2cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/F001TransForm.java
-
2cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/Q001TransForm.java
-
2cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/Q002TransForm.java
-
2cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/Q003TransForm.java
-
2cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/Q004TransForm.java
-
2cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/Q006TransForm.java
-
2cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/Q007TransForm.java
-
2cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/Q008TransForm.java
-
2cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/Q009TransForm.java
-
2cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/R001TransForm.java
-
2cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/R002TransForm.java
-
2cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/R003TransForm.java
-
2cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/R004TransForm.java
-
2cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/R007TransForm.java
-
2cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/R008TransForm.java
-
2cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/R009TransForm.java
-
2cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/R010TransForm.java
-
2cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/R011TransForm.java
-
2cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/R012TransForm.java
-
2cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/R013TransForm.java
-
2cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/R014TransForm.java
-
2cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/R015TransForm.java
-
2cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/T002TransForm.java
-
2cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/T003TransForm.java
-
2cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/T004TransForm.java
-
3cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/T005TransForm.java
-
2cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/T006TransForm.java
-
2cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/T007TransForm.java
-
2cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/T008TransForm.java
-
2cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/T009TransForm.java
-
2cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/T010TransForm.java
-
2cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/T011TransForm.java
-
2cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/T012TransForm.java
-
2cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/T013TransForm.java
-
2cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/T019TransForm.java
-
2cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/T020TransForm.java
-
2cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/T021TransForm.java
-
2cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/form/T022TransForm.java
-
4cereshop-commons/src/main/java/com/shop/cereshop/commons/request/hnapay/init/InitForm.java
-
2cereshop-commons/src/main/java/com/shop/cereshop/commons/utils/hnapay/Base64Util.java
-
2cereshop-commons/src/main/java/com/shop/cereshop/commons/utils/hnapay/HexStringByte.java
-
2cereshop-commons/src/main/java/com/shop/cereshop/commons/utils/hnapay/HnaPayDateUtils.java
-
2cereshop-commons/src/main/java/com/shop/cereshop/commons/utils/hnapay/HnapaySign.java
-
6cereshop-commons/src/main/java/com/shop/cereshop/commons/utils/hnapay/HttpClientUtils.java
-
6cereshop-commons/src/main/java/com/shop/cereshop/commons/utils/hnapay/HttpUtils.java
-
2cereshop-commons/src/main/java/com/shop/cereshop/commons/utils/hnapay/HttpsTransport.java
-
2cereshop-commons/src/main/java/com/shop/cereshop/commons/utils/hnapay/JsonUtils.java
-
2cereshop-commons/src/main/java/com/shop/cereshop/commons/utils/hnapay/KeyUtils.java
-
2cereshop-commons/src/main/java/com/shop/cereshop/commons/utils/hnapay/RSAAlgorithms.java
-
17doc/3.0/update.sql
@ -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)); |
|||
} |
|||
} |
@ -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; |
|||
} |
|||
} |
@ -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); |
|||
|
|||
} |
@ -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; |
|||
|
|||
} |
@ -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; |
|||
} |
@ -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); |
|||
} |
|||
} |
|||
} |
@ -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; |
|||
} |
@ -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); |
|||
} |
|||
} |
@ -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> |
@ -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); |
|||
|
|||
} |
@ -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; |
|||
} |
@ -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; |
|||
} |
|||
} |
@ -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"; |
|||
} |
|||
|
|||
} |
@ -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; |
|||
|
|||
} |
@ -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); |
|||
} |
|||
} |
|||
} |
@ -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; |
|||
|
|||
} |
@ -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; |
@ -1,4 +1,4 @@ |
|||
package com.shop.cereshop.app.pay.hnapay.request.form; |
|||
package com.shop.cereshop.commons.request.hnapay.form; |
|||
|
|||
import lombok.Data; |
|||
|
@ -1,4 +1,4 @@ |
|||
package com.shop.cereshop.app.pay.hnapay.request.form; |
|||
package com.shop.cereshop.commons.request.hnapay.form; |
|||
|
|||
import lombok.Data; |
|||
|
@ -1,4 +1,4 @@ |
|||
package com.shop.cereshop.app.pay.hnapay.request.form; |
|||
package com.shop.cereshop.commons.request.hnapay.form; |
|||
|
|||
import lombok.Data; |
|||
|
@ -1,4 +1,4 @@ |
|||
package com.shop.cereshop.app.pay.hnapay.request.form; |
|||
package com.shop.cereshop.commons.request.hnapay.form; |
|||
|
|||
import lombok.Data; |
|||
|
@ -1,4 +1,4 @@ |
|||
package com.shop.cereshop.app.pay.hnapay.request.form; |
|||
package com.shop.cereshop.commons.request.hnapay.form; |
|||
|
|||
import lombok.Data; |
|||
|
@ -1,4 +1,4 @@ |
|||
package com.shop.cereshop.app.pay.hnapay.request.form; |
|||
package com.shop.cereshop.commons.request.hnapay.form; |
|||
|
|||
import lombok.Data; |
|||
|
@ -1,4 +1,4 @@ |
|||
package com.shop.cereshop.app.pay.hnapay.request.form; |
|||
package com.shop.cereshop.commons.request.hnapay.form; |
|||
|
|||
import lombok.Data; |
|||
|
@ -1,4 +1,4 @@ |
|||
package com.shop.cereshop.app.pay.hnapay.request.form; |
|||
package com.shop.cereshop.commons.request.hnapay.form; |
|||
|
|||
import lombok.Data; |
|||
|
@ -1,4 +1,4 @@ |
|||
package com.shop.cereshop.app.pay.hnapay.request.form; |
|||
package com.shop.cereshop.commons.request.hnapay.form; |
|||
|
|||
import lombok.Data; |
|||
|
@ -1,4 +1,4 @@ |
|||
package com.shop.cereshop.app.pay.hnapay.request.form; |
|||
package com.shop.cereshop.commons.request.hnapay.form; |
|||
|
|||
import lombok.Data; |
|||
|
@ -1,4 +1,4 @@ |
|||
package com.shop.cereshop.app.pay.hnapay.request.form; |
|||
package com.shop.cereshop.commons.request.hnapay.form; |
|||
|
|||
import lombok.Data; |
|||
|
@ -1,4 +1,4 @@ |
|||
package com.shop.cereshop.app.pay.hnapay.request.form; |
|||
package com.shop.cereshop.commons.request.hnapay.form; |
|||
|
|||
import lombok.Data; |
|||
|
@ -1,4 +1,4 @@ |
|||
package com.shop.cereshop.app.pay.hnapay.request.form; |
|||
package com.shop.cereshop.commons.request.hnapay.form; |
|||
|
|||
import lombok.Data; |
|||
|
@ -1,4 +1,4 @@ |
|||
package com.shop.cereshop.app.pay.hnapay.request.form; |
|||
package com.shop.cereshop.commons.request.hnapay.form; |
|||
|
|||
import lombok.Data; |
|||
|
@ -1,4 +1,4 @@ |
|||
package com.shop.cereshop.app.pay.hnapay.request.form; |
|||
package com.shop.cereshop.commons.request.hnapay.form; |
|||
|
|||
import lombok.Data; |
|||
|
@ -1,4 +1,4 @@ |
|||
package com.shop.cereshop.app.pay.hnapay.request.form; |
|||
package com.shop.cereshop.commons.request.hnapay.form; |
|||
|
|||
import lombok.Data; |
|||
|
@ -1,4 +1,4 @@ |
|||
package com.shop.cereshop.app.pay.hnapay.request.form; |
|||
package com.shop.cereshop.commons.request.hnapay.form; |
|||
|
|||
import lombok.Data; |
|||
|
@ -1,4 +1,4 @@ |
|||
package com.shop.cereshop.app.pay.hnapay.request.form; |
|||
package com.shop.cereshop.commons.request.hnapay.form; |
|||
|
|||
import lombok.Data; |
|||
|
@ -1,4 +1,4 @@ |
|||
package com.shop.cereshop.app.pay.hnapay.request.form; |
|||
package com.shop.cereshop.commons.request.hnapay.form; |
|||
|
|||
import lombok.Data; |
|||
|
@ -1,4 +1,4 @@ |
|||
package com.shop.cereshop.app.pay.hnapay.request.form; |
|||
package com.shop.cereshop.commons.request.hnapay.form; |
|||
|
|||
import lombok.Data; |
|||
|
@ -1,4 +1,4 @@ |
|||
package com.shop.cereshop.app.pay.hnapay.request.form; |
|||
package com.shop.cereshop.commons.request.hnapay.form; |
|||
|
|||
import lombok.Data; |
|||
|
@ -1,4 +1,4 @@ |
|||
package com.shop.cereshop.app.pay.hnapay.request.form; |
|||
package com.shop.cereshop.commons.request.hnapay.form; |
|||
|
|||
import lombok.Data; |
|||
|
@ -1,4 +1,4 @@ |
|||
package com.shop.cereshop.app.pay.hnapay.request.form; |
|||
package com.shop.cereshop.commons.request.hnapay.form; |
|||
|
|||
import lombok.Data; |
|||
|
@ -1,4 +1,4 @@ |
|||
package com.shop.cereshop.app.pay.hnapay.request.form; |
|||
package com.shop.cereshop.commons.request.hnapay.form; |
|||
|
|||
import lombok.Data; |
|||
|
@ -1,4 +1,4 @@ |
|||
package com.shop.cereshop.app.pay.hnapay.request.form; |
|||
package com.shop.cereshop.commons.request.hnapay.form; |
|||
|
|||
import lombok.Data; |
|||
|
@ -1,4 +1,4 @@ |
|||
package com.shop.cereshop.app.pay.hnapay.request.form; |
|||
package com.shop.cereshop.commons.request.hnapay.form; |
|||
|
|||
import lombok.Data; |
|||
|
@ -1,4 +1,4 @@ |
|||
package com.shop.cereshop.app.pay.hnapay.request.form; |
|||
package com.shop.cereshop.commons.request.hnapay.form; |
|||
|
|||
import lombok.Data; |
|||
|
@ -1,4 +1,4 @@ |
|||
package com.shop.cereshop.app.pay.hnapay.request.form; |
|||
package com.shop.cereshop.commons.request.hnapay.form; |
|||
|
|||
import lombok.Data; |
|||
|
@ -1,4 +1,4 @@ |
|||
package com.shop.cereshop.app.pay.hnapay.request.form; |
|||
package com.shop.cereshop.commons.request.hnapay.form; |
|||
|
|||
import lombok.Data; |
|||
|
@ -1,4 +1,4 @@ |
|||
package com.shop.cereshop.app.pay.hnapay.request.form; |
|||
package com.shop.cereshop.commons.request.hnapay.form; |
|||
|
|||
import lombok.Data; |
|||
|
@ -1,4 +1,4 @@ |
|||
package com.shop.cereshop.app.pay.hnapay.request.form; |
|||
package com.shop.cereshop.commons.request.hnapay.form; |
|||
|
|||
import lombok.Data; |
|||
|
@ -1,4 +1,4 @@ |
|||
package com.shop.cereshop.app.pay.hnapay.request.form; |
|||
package com.shop.cereshop.commons.request.hnapay.form; |
|||
|
|||
import lombok.Data; |
|||
|
@ -1,4 +1,4 @@ |
|||
package com.shop.cereshop.app.pay.hnapay.request.form; |
|||
package com.shop.cereshop.commons.request.hnapay.form; |
|||
|
|||
import lombok.Data; |
|||
|
@ -1,4 +1,4 @@ |
|||
package com.shop.cereshop.app.pay.hnapay.request.form; |
|||
package com.shop.cereshop.commons.request.hnapay.form; |
|||
|
|||
import lombok.Data; |
|||
|
@ -1,4 +1,4 @@ |
|||
package com.shop.cereshop.app.pay.hnapay.request.form; |
|||
package com.shop.cereshop.commons.request.hnapay.form; |
|||
|
|||
import lombok.Data; |
|||
|
@ -1,4 +1,4 @@ |
|||
package com.shop.cereshop.app.pay.hnapay.request.form; |
|||
package com.shop.cereshop.commons.request.hnapay.form; |
|||
|
|||
import lombok.Data; |
|||
|
@ -1,4 +1,4 @@ |
|||
package com.shop.cereshop.app.pay.hnapay.request.form; |
|||
package com.shop.cereshop.commons.request.hnapay.form; |
|||
|
|||
import lombok.Data; |
|||
|
@ -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; |
|||
|
@ -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; |
@ -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; |
@ -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; |
Write
Preview
Loading…
Cancel
Save
Reference in new issue