后台提交到三方更改资料
This commit is contained in:
parent
5ebb6f1472
commit
3f0179a95f
|
|
@ -18,6 +18,7 @@ import org.springframework.boot.web.client.RestTemplateBuilder;
|
|||
import org.springframework.context.ApplicationContext;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.context.annotation.ComponentScan;
|
||||
import org.springframework.context.annotation.ImportResource;
|
||||
import org.springframework.context.support.PropertySourcesPlaceholderConfigurer;
|
||||
import org.springframework.scheduling.annotation.EnableScheduling;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
|
|
|||
|
|
@ -9,6 +9,7 @@ import com.chaozhanggui.common.system.config.RespBody;
|
|||
import com.chaozhanggui.dao.system.dao.TbPlussBankCodeSxfMapper;
|
||||
import com.chaozhanggui.dao.system.entity.*;
|
||||
import com.chaozhanggui.dao.system.entity.DTO.AccountDTO;
|
||||
import com.chaozhanggui.merchant.service.sxf.SxfMerchantAuditService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
|
|
@ -34,6 +35,8 @@ public class MerchantInfoController {
|
|||
private SxfMccInfoService sxfMccInfoService;
|
||||
@Resource
|
||||
private AccountService accountService;
|
||||
@Resource
|
||||
private SxfMerchantAuditService sxfMerchantAuditService;
|
||||
|
||||
|
||||
/**
|
||||
|
|
@ -60,6 +63,16 @@ public class MerchantInfoController {
|
|||
return merchantInfoService.updatePromoterInformation(userApp);
|
||||
}
|
||||
|
||||
/**
|
||||
* 更改实名认证信息随行付测试
|
||||
* @return
|
||||
*/
|
||||
@PostMapping("/updateSxf")
|
||||
public RespBody updateSxf(){
|
||||
// sxfMerchantAuditService.updateMerchantIdCard("399230310653864",);
|
||||
return new RespBody("000000");
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改商户相关信息
|
||||
* @param merchantBaseInfo
|
||||
|
|
|
|||
|
|
@ -11,6 +11,7 @@ import com.chaozhanggui.dao.system.entity.*;
|
|||
import com.chaozhanggui.dao.system.entity.DTO.AccountDTO;
|
||||
import com.chaozhanggui.dao.system.entity.VO.AccountVO;
|
||||
import com.chaozhanggui.dao.system.entity.VO.MerchantBaseVO;
|
||||
import com.chaozhanggui.merchant.service.MerchantService;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
|
@ -55,6 +56,8 @@ public class MerchantInfoService {
|
|||
private TbPlussAreaCityMapper areaCityMapper;
|
||||
@Resource
|
||||
private TbPlussBankCodeSxfMapper bankCodeSxfMapper;
|
||||
@Resource
|
||||
private MerchantService merchantService;
|
||||
|
||||
|
||||
|
||||
|
|
@ -177,7 +180,6 @@ public class MerchantInfoService {
|
|||
}
|
||||
LambdaQueryWrapper<TbPlussBankCodeSxf> sxfQueryWrapper = new LambdaQueryWrapper<TbPlussBankCodeSxf>()
|
||||
.eq(StringUtils.isNotEmpty(userApp.getBankCard().getContactline()), TbPlussBankCodeSxf::getCnapsCode, userApp.getBankCard().getContactline())
|
||||
.eq(StringUtils.isNotEmpty(userApp.getBankCard().getBranchname()), TbPlussBankCodeSxf::getCnapsName, userApp.getBankCard().getBranchname())
|
||||
.last("limit 1");
|
||||
TbPlussBankCodeSxf bankCodeSxf = bankCodeSxfMapper.selectOne(sxfQueryWrapper);
|
||||
if (bankCodeSxf == null) {
|
||||
|
|
@ -210,8 +212,8 @@ public class MerchantInfoService {
|
|||
appUser.setLoginname(userApp.getLoginname());
|
||||
appUser.setUsername(userApp.getUsername());
|
||||
appUser.setUserid(userApp.getUserid());
|
||||
// userAppMapper.updateByPrimaryKey(appUser);
|
||||
// userInfoMapper.updateByPrimaryKey(userInfo);
|
||||
userAppMapper.updateByPrimaryKey(appUser);
|
||||
userInfoMapper.updateByPrimaryKey(userInfo);
|
||||
return new RespBody("000000");
|
||||
}
|
||||
|
||||
|
|
@ -302,14 +304,10 @@ public class MerchantInfoService {
|
|||
bankCardMapper.updateByPrimaryKeySelective(account.getBankCard());
|
||||
idCardMapper.updateByPrimaryKeySelective(account.getIdcard());
|
||||
|
||||
// merchantService.updateMerchantBase(account.);
|
||||
return new RespBody("000000");
|
||||
|
||||
}
|
||||
|
||||
// public RespBody channelAuditInfo(Integer userId){
|
||||
// TbPlussMerchantBaseInfo merchantBaseInfo = merchantBaseInfoMapper.selectByUserId(String.valueOf(userId));
|
||||
// if(merchantBaseInfo != null) {
|
||||
// List<TbPlussMerchantChannelStatus> merchantCodeList = merchantChannelStatusMapper.getByMerchantCodeList(merchantBaseInfo.getMerchantcode());
|
||||
// merchantCodeList
|
||||
// }
|
||||
// }
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -8,7 +8,7 @@ server:
|
|||
# 指定日志级别 把springboot的所有日志修改成为debug
|
||||
logging:
|
||||
level:
|
||||
root: info
|
||||
root: debug
|
||||
mybatis:
|
||||
configuration:
|
||||
map-underscore-to-camel-case: true
|
||||
|
|
@ -33,3 +33,15 @@ alipay-config:
|
|||
alipayRootCertPath: /home/www/service/key/alipayRootCert.crt
|
||||
|
||||
|
||||
parameter:
|
||||
ZY_ALI_APP_ID: 2021003175619219
|
||||
domain: https://ky.sxczgkj.cn
|
||||
#随行付相关
|
||||
alipayChannel: 2088441721243954
|
||||
|
||||
sxf:
|
||||
domain: https://openapi.tianquetech.com
|
||||
orgId: "02668880"
|
||||
publicKey: MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAjo1+KBcvwDSIo+nMYLeOJ19Ju4ii0xH66ZxFd869EWFWk/EJa3xIA2+4qGf/Ic7m7zi/NHuCnfUtUDmUdP0JfaZiYwn+1Ek7tYAOc1+1GxhzcexSJLyJlR2JLMfEM+rZooW4Ei7q3a8jdTWUNoak/bVPXnLEVLrbIguXABERQ0Ze0X9Fs0y/zkQFg8UjxUN88g2CRfMC6LldHm7UBo+d+WlpOYH7u0OTzoLLiP/04N1cfTgjjtqTBI7qkOGxYs6aBZHG1DJ6WdP+5w+ho91sBTVajsCxAaMoExWQM2ipf/1qGdsWmkZScPflBqg7m0olOD87ymAVP/3Tcbvi34bDfwIDAQAB
|
||||
|
||||
|
||||
|
|
|
|||
|
|
@ -15,28 +15,49 @@ import javax.annotation.PostConstruct;
|
|||
* @author lyf
|
||||
*/
|
||||
@Configuration
|
||||
@PropertySource("classpath:application-common.yml")
|
||||
@Component
|
||||
public class ParameterConfig {
|
||||
/**
|
||||
* 阿里自用型应用appid
|
||||
*/
|
||||
@Value("${parameter.ZY_ALI_APP_ID}")
|
||||
public String ZY_ALI_APP_ID;
|
||||
public String ZY_ALI_APP_ID;
|
||||
/**
|
||||
* 正式服务器域名
|
||||
*/
|
||||
@Value("${parameter.domain}")
|
||||
public String domain;
|
||||
public String domain;
|
||||
|
||||
/**
|
||||
* 支付宝通道ID
|
||||
*/
|
||||
@Value("${parameter.alipayChannel}")
|
||||
public String alipayChannel;
|
||||
@PostConstruct
|
||||
public void init() {
|
||||
ParametersUtil.domain = domain;
|
||||
ParametersUtil.alipayChannel = alipayChannel;
|
||||
public String alipayChannel;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
public String getZY_ALI_APP_ID() {
|
||||
return ZY_ALI_APP_ID;
|
||||
}
|
||||
|
||||
public void setZY_ALI_APP_ID(String ZY_ALI_APP_ID) {
|
||||
this.ZY_ALI_APP_ID = ZY_ALI_APP_ID;
|
||||
}
|
||||
|
||||
public String getDomain() {
|
||||
return domain;
|
||||
}
|
||||
|
||||
public void setDomain(String domain) {
|
||||
this.domain = domain;
|
||||
}
|
||||
|
||||
public String getAlipayChannel() {
|
||||
return alipayChannel;
|
||||
}
|
||||
|
||||
public void setAlipayChannel(String alipayChannel) {
|
||||
this.alipayChannel = alipayChannel;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,109 +1,114 @@
|
|||
package com.chaozhanggui.common.system.config.channel;
|
||||
|
||||
import com.alibaba.fastjson.JSONObject;
|
||||
import org.springframework.beans.factory.annotation.Value;
|
||||
import org.springframework.context.annotation.Configuration;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
/**
|
||||
* @author lyf
|
||||
*/
|
||||
@Component
|
||||
public class SxfConfig {
|
||||
|
||||
/**
|
||||
* 微信实名认证接口前缀
|
||||
*/
|
||||
private static final String SXF_CERT_DOMAIN = "https://openapi.suixingpay.com";
|
||||
private String SXF_CERT_DOMAIN = "https://openapi.suixingpay.com";
|
||||
/**
|
||||
* 微信实名认证接口
|
||||
*/
|
||||
public static final String SXF_WX_CERT = SXF_CERT_DOMAIN + "/merchant/realName/commitApply";
|
||||
public String SXF_WX_CERT = SXF_CERT_DOMAIN + "/merchant/realName/commitApply";
|
||||
|
||||
/**
|
||||
* 查询微信认证授权状态
|
||||
*/
|
||||
public static final String SXF_WX_CERT_STATUS = SXF_CERT_DOMAIN + "/merchant/realName/queryGrantStatus";
|
||||
public String SXF_WX_CERT_STATUS = SXF_CERT_DOMAIN + "/merchant/realName/queryGrantStatus";
|
||||
|
||||
/**
|
||||
* 微信实名认证申请结果查询接口
|
||||
*/
|
||||
public static final String SXF_WX_CERT_RESULT = SXF_CERT_DOMAIN + "/merchant/realName/queryApplyInfo";
|
||||
public String SXF_WX_CERT_RESULT = SXF_CERT_DOMAIN + "/merchant/realName/queryApplyInfo";
|
||||
/**
|
||||
* 微信实名认证申请撤销接口
|
||||
*/
|
||||
public static final String SXF_WX_CERT_CANCEL = SXF_CERT_DOMAIN + "/merchant/realName/backApplyBill";
|
||||
public static String PRIVATE_KEY =
|
||||
public String SXF_WX_CERT_CANCEL = SXF_CERT_DOMAIN + "/merchant/realName/backApplyBill";
|
||||
public String PRIVATE_KEY =
|
||||
"MIICeAIBADANBgkqhkiG9w0BAQEFAASCAmIwggJeAgEAAoGBAMRFhTpr+JWtfhHZ80UJcnDCMeydtcF38S5s+WdifTYNMequFN6uRYoSFJqzQrR0ls7/ZAjUFP/dZL0QJAsWlnRLLSvPsgUU/DzAF7myl6/swuK4eo9frwAYP4ItQcP+DsHBUFnqUbWUON8C3M5ggY92qKfKV1k59tVnFVjoPhbbAgMBAAECgYAzL/5jEi2uu6SZe0Iayy/xgHQMxcTVRDa+aOVStTj6k85k6im/OawhKj39aqsG7TE3oxuvwcAISvEu7bq4uZdbICPdeKLcfNpK4pIfVfokPROjlKSyDgm37gqM7F+T0ZoARVqcd7Mgj09UKKpq7Pi0a/FusEa5CdG2LrUTjZuHIQJBAOFzolrGsPsWaVMpoYGeRY2UrT0PjfXJ1E7nkHqLXCCgfrur374YEEWeLtjHCI6zaXgv/3Coj3USAhKMw4lDAYcCQQDe3bL3szwkGdUmZk61ebY7HanilKnIYNuhC9ALUEElDp2eA1ld5cQvRb4BAeNsvabptt2lRPcscFu9zvH0DaUNAkEAww8HAz8xVKyZSAiW4cyMJOjj0hapHmUXOYWELWJxvRDfVYRpOtEbEwC/S3M45i44LHJqsZBFPmbsQBxl+VZt9QJBAL2tD+EywU+0UK2SyxA2mzqq32iAwBNTI/lnlVPbpOYGD21pSkjZAWR+RdyTn9xveLxWr0M2c+t1YQ8lLtVYO40CQQC2pVlYu5BIvXClLj6pHxwrK9G3JgwaanbEPFX0PjIJmU94QSLUd4OtDhvbXq43E5dlyvz5ybYvd8pygmjV9oM5";
|
||||
//"MIICeAIBADANBgkqhkiG9w0BAQEFAASCAmIwggJeAgEAAoGBAMRFhTpr+JWtfhHZ80UJcnDCMeydtcF38S5s+WdifTYNMequFN6uRYoSFJqzQrR0ls7/ZAjUFP/dZL0QJAsWlnRLLSvPsgUU/DzAF7myl6/swuK4eo9frwAYP4ItQcP+DsHBUFnqUbWUON8C3M5ggY92qKfKV1k59tVnFVjoPhbbAgMBAAECgYAzL/5jEi2uu6SZe0Iayy/xgHQMxcTVRDa+aOVStTj6k85k6im/OawhKj39aqsG7TE3oxuvwcAISvEu7bq4uZdbICPdeKLcfNpK4pIfVfokPROjlKSyDgm37gqM7F+T0ZoARVqcd7Mgj09UKKpq7Pi0a/FusEa5CdG2LrUTjZuHIQJBAOFzolrGsPsWaVMpoYGeRY2UrT0PjfXJ1E7nkHqLXCCgfrur374YEEWeLtjHCI6zaXgv/3Coj3USAhKMw4lDAYcCQQDe3bL3szwkGdUmZk61ebY7HanilKnIYNuhC9ALUEElDp2eA1ld5cQvRb4BAeNsvabptt2lRPcscFu9zvH0DaUNAkEAww8HAz8xVKyZSAiW4cyMJOjj0hapHmUXOYWELWJxvRDfVYRpOtEbEwC/S3M45i44LHJqsZBFPmbsQBxl+VZt9QJBAL2tD+EywU+0UK2SyxA2mzqq32iAwBNTI/lnlVPbpOYGD21pSkjZAWR+RdyTn9xveLxWr0M2c+t1YQ8lLtVYO40CQQC2pVlYu5BIvXClLj6pHxwrK9G3JgwaanbEPFX0PjIJmU94QSLUd4OtDhvbXq43E5dlyvz5ybYvd8pygmjV9oM5";
|
||||
public static String PUBLIC_KEY;
|
||||
public String PUBLIC_KEY;
|
||||
/**
|
||||
* sxf渠道号
|
||||
*/
|
||||
public static String SXF_SUB_CHANNEL_NO = "398434152";
|
||||
public String SXF_SUB_CHANNEL_NO = "398434152";
|
||||
/**
|
||||
* sxf环境机构号
|
||||
*/
|
||||
public static String ORG_ID;
|
||||
|
||||
public String ORG_ID;
|
||||
/**
|
||||
* 商户号
|
||||
*/
|
||||
public static String MERCHANT_NO = "399200821899489";
|
||||
public String MERCHANT_NO = "399200821899489";
|
||||
/**
|
||||
* 成功响应码
|
||||
*/
|
||||
public static final String SXF_SUCCESS_CODE = "0000";
|
||||
public String SXF_SUCCESS_CODE = "0000";
|
||||
/** 功能未开通 */
|
||||
public static final String SXF_NO_PERMIT = "0006";
|
||||
public String SXF_NO_PERMIT = "0006";
|
||||
|
||||
public static final String SXF_REFUND_SUCCESS_CODE = "2002";
|
||||
public String SXF_REFUND_SUCCESS_CODE = "2002";
|
||||
/**
|
||||
* 退款成功状态
|
||||
*/
|
||||
public static final String SXF_REFUND_SUCCESS_STATUS_CODE = "REFUNDSUC";
|
||||
public String SXF_REFUND_SUCCESS_STATUS_CODE = "REFUNDSUC";
|
||||
|
||||
|
||||
/********************************************进件相关***************************************************/
|
||||
/**
|
||||
* 退款成功失败状态
|
||||
*/
|
||||
public static final String SXF_REFUND_FAIL_STATUS_CODE = "REFUNDFAIL";
|
||||
public String SXF_REFUND_FAIL_STATUS_CODE = "REFUNDFAIL";
|
||||
/**
|
||||
* 退款成功中状态
|
||||
*/
|
||||
public static final String SXF_REFUND_ING_STATUS_CODE = "REFUNDING";
|
||||
public String SXF_REFUND_ING_STATUS_CODE = "REFUNDING";
|
||||
/**
|
||||
* 失败响应码
|
||||
*/
|
||||
public static final String SXF_FAIL_CODE = "0001";
|
||||
public String SXF_FAIL_CODE = "0001";
|
||||
/**
|
||||
* sxf正式domain
|
||||
*/
|
||||
private static String sxfDomain;
|
||||
public String sxfDomain;
|
||||
/**
|
||||
* 进件相关
|
||||
* 正式环境图片上传
|
||||
*/
|
||||
public static String SXF_MERCHANT_INCOME_PHOTO_UPLOAD = sxfDomain + "/merchant/uploadPicture";
|
||||
public String SXF_MERCHANT_INCOME_PHOTO_UPLOAD = sxfDomain + "/merchant/uploadPicture";
|
||||
/**
|
||||
* 进件相关
|
||||
* 正式环境商户入驻
|
||||
*/
|
||||
public static String SXF_MERCHANT_INCOME = sxfDomain + "/merchant/income";
|
||||
public String SXF_MERCHANT_INCOME = sxfDomain + "/merchant/income";
|
||||
/**
|
||||
* 进件信息
|
||||
* 正式环境商户入驻信息修改
|
||||
* 备注:商户进件失败的信息修改
|
||||
*/
|
||||
public static String SXF_UPADTE_MERCHANT_RZ = sxfDomain + "/merchant/updateMerchantInfo";
|
||||
public String SXF_UPADTE_MERCHANT_RZ = sxfDomain + "/merchant/updateMerchantInfo";
|
||||
|
||||
/**
|
||||
* 该接口通过申请单号查询
|
||||
* 进件信息
|
||||
* 正式环境商户入驻接口查询
|
||||
*/
|
||||
public static String SXF_QUERY_MERCHANT_INFO = sxfDomain + "/merchant/queryMerchantInfo";
|
||||
public String SXF_QUERY_MERCHANT_INFO = sxfDomain + "/merchant/queryMerchantInfo";
|
||||
|
||||
/**
|
||||
* 该接口通过商编查询商户信息
|
||||
*/
|
||||
public static String SXF_MERCHANT_INFO_QUERY = sxfDomain + "/merchant/merchantInfoQuery";
|
||||
public String SXF_MERCHANT_INFO_QUERY = sxfDomain + "/merchant/merchantInfoQuery";
|
||||
|
||||
/********************************************支付相关***************************************************/
|
||||
/**
|
||||
|
|
@ -111,74 +116,74 @@ public class SxfConfig {
|
|||
* 正式环境商户进件信息修改
|
||||
* 备注:商户进件成功的信息修改
|
||||
*/
|
||||
public static String SXF_UPDATE_MERCHANT_INFO = sxfDomain + "/merchant/editMerchantInfo";
|
||||
public String SXF_UPDATE_MERCHANT_INFO = sxfDomain + "/merchant/editMerchantInfo";
|
||||
|
||||
/**
|
||||
* 进件信息
|
||||
* 正式环境商户信息修改审核结果查询
|
||||
*/
|
||||
public static String SXF_UPDATE_MERCHANT_INFO_RESULT = sxfDomain + "/merchant/queryModifyResult";
|
||||
public String SXF_UPDATE_MERCHANT_INFO_RESULT = sxfDomain + "/merchant/queryModifyResult";
|
||||
|
||||
/**
|
||||
* 商户设置
|
||||
* 正式环境修改商户费率信息 次日0时 生效
|
||||
*/
|
||||
public static String SXF_UPDATE_MERCHANT_RATE = sxfDomain + "/merchant/merchantSetup";
|
||||
public String SXF_UPDATE_MERCHANT_RATE = sxfDomain + "/merchant/merchantSetup";
|
||||
/**
|
||||
* 商户查询
|
||||
* 正式环境商户详情查询
|
||||
*/
|
||||
public static String SXF_QUERY_MERCHANT_DETAIL = sxfDomain + "/merchant/merchantInfoQuery";
|
||||
public String SXF_QUERY_MERCHANT_DETAIL = sxfDomain + "/merchant/merchantInfoQuery";
|
||||
/**
|
||||
* 主扫付款
|
||||
* 正式环境商户主扫接口
|
||||
*/
|
||||
public static String SXF_REVERSE_SCAN_PAY = sxfDomain + "/order/reverseScan";
|
||||
public String SXF_REVERSE_SCAN_PAY = sxfDomain + "/order/reverseScan";
|
||||
/**
|
||||
* 商户被扫付款
|
||||
* 正式环境商户被扫接口
|
||||
*/
|
||||
public static String SXF_JSAPI_SCAN_PAY = sxfDomain + "/order/jsapiScan";
|
||||
public String SXF_JSAPI_SCAN_PAY = sxfDomain + "/order/jsapiScan";
|
||||
/**
|
||||
* 退款
|
||||
* 正式环境退款接口地址
|
||||
*/
|
||||
public static String SXF_REFUND_PAY = sxfDomain + "/order/refund";
|
||||
public String SXF_REFUND_PAY = sxfDomain + "/order/refund";
|
||||
/**
|
||||
* 交易查询
|
||||
* 正式环境交易查询
|
||||
*/
|
||||
public static String SXF_TRADE_QUERY_PAY = sxfDomain + "/query/tradeQuery";
|
||||
public String SXF_TRADE_QUERY_PAY = sxfDomain + "/query/tradeQuery";
|
||||
/**
|
||||
* 订单关闭
|
||||
* 订单关闭接口
|
||||
*/
|
||||
public static String SXF_CLOSE_ORDER = sxfDomain + "/query/close";
|
||||
public String SXF_CLOSE_ORDER = sxfDomain + "/query/close";
|
||||
/**
|
||||
* 订单撤销
|
||||
* 订单撤销接口
|
||||
*/
|
||||
public static String SXF_CANCEL_ORDER = sxfDomain + "/query/cancel";
|
||||
public String SXF_CANCEL_ORDER = sxfDomain + "/query/cancel";
|
||||
/**
|
||||
* sxf 辅助接口 获取wxopenId
|
||||
*/
|
||||
public static String SXF_GET_WX_OPENID = sxfDomain + "/query/getSubOPenid";
|
||||
public String SXF_GET_WX_OPENID = sxfDomain + "/query/getSubOPenid";
|
||||
/**
|
||||
* sxf 辅助接口 获取银联用户标识
|
||||
*/
|
||||
public static String SXF_GET_UNION_USERID = sxfDomain + "/query/getUnionInfo";
|
||||
public String SXF_GET_UNION_USERID = sxfDomain + "/query/getUnionInfo";
|
||||
/**
|
||||
* 转账接口地址
|
||||
*/
|
||||
public static String SXF_ORG_TRANS_FER = sxfDomain + "/capital/fundManage/orgTransfer";
|
||||
public String SXF_ORG_TRANS_FER = sxfDomain + "/capital/fundManage/orgTransfer";
|
||||
|
||||
/**
|
||||
* 商户生成带金额的付款码用户扫码付款
|
||||
* 正式环境商户被扫接口
|
||||
*/
|
||||
public static String SXF_ACTIVE_SCAN_PAY = sxfDomain + "/order/activeScan";
|
||||
public String SXF_ACTIVE_SCAN_PAY = sxfDomain + "/order/activeScan";
|
||||
|
||||
public static JSONObject ok() {
|
||||
public JSONObject ok() {
|
||||
JSONObject jsonObject = new JSONObject();
|
||||
jsonObject.put("code", "success");
|
||||
jsonObject.put("msg", "成功");
|
||||
|
|
@ -191,7 +196,11 @@ public class SxfConfig {
|
|||
* @param publicKey 公钥
|
||||
* @param orgId 机构id
|
||||
*/
|
||||
public static void init(String domain, String publicKey, String orgId) {
|
||||
|
||||
|
||||
public SxfConfig(@Value("${sxf.domain}") String domain, @Value("${sxf.publicKey}") String publicKey,
|
||||
@Value("${sxf.orgId}") String orgId
|
||||
){
|
||||
sxfDomain = domain;
|
||||
PUBLIC_KEY = publicKey;
|
||||
ORG_ID = orgId;
|
||||
|
|
@ -216,4 +225,7 @@ public class SxfConfig {
|
|||
SXF_MERCHANT_INFO_QUERY = sxfDomain + "/merchant/merchantInfoQuery";
|
||||
SXF_ACTIVE_SCAN_PAY = sxfDomain + "/order/activeScan";
|
||||
}
|
||||
public void init(String domain, String publicKey, String orgId) {
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -20,6 +20,7 @@ public interface TbPlussBankCodeSxfMapper extends BaseMapper<TbPlussBankCodeSxf>
|
|||
int insertSelective(TbPlussBankCodeSxf record);
|
||||
|
||||
TbPlussBankCodeSxf selectByPrimaryKey(Integer id);
|
||||
TbPlussBankCodeSxf selectByCnapsCode(@Param("cnapsCode")String cnapsCode);
|
||||
|
||||
List<TbPlussSxfMccInfo> pageData(@Param("keyWord") String keyWord);
|
||||
|
||||
|
|
|
|||
|
|
@ -39,6 +39,8 @@ public interface TbPlussMerchantChannelStatusMapper {
|
|||
TbPlussMerchantChannelStatus getByMerchantCode(@Param("merchantCode") String merchantCode,@Param("channel") String channel );
|
||||
List<TbPlussMerchantChannelStatus> getByMerchantCodes(@Param("merchantCode") String merchantCode);
|
||||
|
||||
List<TbPlussMerchantChannelStatus> getByMerchantCodesAudit(@Param("merchantCode") String merchantCode);
|
||||
|
||||
TbPlussMerchantChannelStatus getByIdLock(@Param("id") Integer id);
|
||||
|
||||
List<TbPlussMerchantChannelStatus> getByMerchantCodeList(@Param("merchantCode") String merchantCode);
|
||||
|
|
|
|||
|
|
@ -35,7 +35,13 @@
|
|||
</if>
|
||||
</where>
|
||||
</select>
|
||||
<delete id="deleteByPrimaryKey" parameterType="java.lang.Integer">
|
||||
<select id="selectByCnapsCode" resultType="com.chaozhanggui.dao.system.entity.TbPlussBankCodeSxf">
|
||||
select
|
||||
<include refid="Base_Column_List" />
|
||||
from tb_pluss_bank_code_sxf
|
||||
where cnaps_code = #{cnapsCode}
|
||||
</select>
|
||||
<delete id="deleteByPrimaryKey" parameterType="java.lang.Integer">
|
||||
delete from tb_pluss_bank_code_sxf
|
||||
where id = #{id,jdbcType=INTEGER}
|
||||
</delete>
|
||||
|
|
|
|||
|
|
@ -263,15 +263,6 @@
|
|||
<if test="authorizationstatus != null">
|
||||
authorizationStatus = #{authorizationstatus,jdbcType=VARCHAR},
|
||||
</if>
|
||||
<if test="mercname != null">
|
||||
mercName = #{mercname,jdbcType=VARCHAR},
|
||||
</if>
|
||||
<if test="virchannelflag != null">
|
||||
virChannelFlag = #{virchannelflag,jdbcType=VARCHAR},
|
||||
</if>
|
||||
<if test="virstatusflag != null">
|
||||
virStatusFlag = #{virstatusflag,jdbcType=VARCHAR},
|
||||
</if>
|
||||
<if test="srcmerchantno != null">
|
||||
srcMerchantNo = #{srcmerchantno,jdbcType=VARCHAR},
|
||||
</if>
|
||||
|
|
@ -433,8 +424,8 @@
|
|||
<select id="getIncomingInfoAnother"
|
||||
resultType="com.chaozhanggui.dao.system.entity.TbPlussMerchantChannelStatus">
|
||||
SELECT *
|
||||
FROM merchant_channel_status
|
||||
WHERE merchant_code = #{merchantCode}
|
||||
FROM tb_pluss_merchant_channel_status
|
||||
WHERE merchantCode = #{merchantCode}
|
||||
ORDER BY valid DESC, id ASC
|
||||
LIMIT 1;
|
||||
</select>
|
||||
|
|
@ -476,4 +467,10 @@
|
|||
AND thirdStatus = '-100'
|
||||
limit 1
|
||||
</select>
|
||||
<select id="getByMerchantCodesAudit"
|
||||
resultType="com.chaozhanggui.dao.system.entity.TbPlussMerchantChannelStatus">
|
||||
SELECT * FROM tb_pluss_merchant_channel_status
|
||||
WHERE merchantCode=#{merchantCode}
|
||||
AND status In (3,6)
|
||||
</select>
|
||||
</mapper>
|
||||
|
|
@ -37,8 +37,8 @@
|
|||
<select id="getListOfMerch" resultType="com.chaozhanggui.dao.system.entity.TbPlussMerchantImage">
|
||||
SELECT *
|
||||
FROM tb_pluss_merchant_image
|
||||
WHERE merchant_code = #{merchantCode}
|
||||
AND photo_type NOT IN
|
||||
WHERE merchantCode = #{merchantCode}
|
||||
AND photoType NOT IN
|
||||
('96', '97', '05','07', '98', '01','02');
|
||||
</select>
|
||||
<delete id="deleteByPrimaryKey" parameterType="java.lang.Integer">
|
||||
|
|
|
|||
|
|
@ -345,6 +345,7 @@
|
|||
p.is_extend,
|
||||
a.inviteNum,
|
||||
a.`status`,
|
||||
a.createDt,
|
||||
FORMAT( IFNULL( k.sumConsumeFee, 0 ), 2 ) AS sumConsumeFee,
|
||||
FORMAT( IFNULL( k.yestedayConsumeFee, 0 ), 2 ) AS yestedayConsumeFee
|
||||
FROM
|
||||
|
|
|
|||
|
|
@ -48,6 +48,10 @@
|
|||
<version>0.4.14</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter-webflux</artifactId>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
</project>
|
||||
|
|
@ -12,10 +12,7 @@ import org.springframework.stereotype.Service;
|
|||
import org.springframework.transaction.annotation.Transactional;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.Collections;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.*;
|
||||
|
||||
@Service
|
||||
public class MerchantService {
|
||||
|
|
@ -93,7 +90,7 @@ public class MerchantService {
|
|||
|
||||
switch (channelId){
|
||||
case "1":
|
||||
sxfMerchantAuditService.merchantAudit(userId, false);
|
||||
sxfMerchantAuditService.merchantAudit(userId, channelStatus);
|
||||
break;
|
||||
case "2":
|
||||
break;
|
||||
|
|
@ -177,4 +174,50 @@ public class MerchantService {
|
|||
"6 ".equals(mcs.getStatus()) ||
|
||||
"4".equals(mcs.getStatus());
|
||||
}
|
||||
|
||||
/**
|
||||
* 通用修改进件基本资料相关
|
||||
* @param userId
|
||||
*/
|
||||
public void updateMerchantBase(Integer userId, TbPlussBankCard bankCard,TbPlussIdCard idCard){
|
||||
MsgException.checkNull(userId,"请选择用户");
|
||||
|
||||
//获取用户信息
|
||||
TbPlussUserInfo userInfo= tbPlussUserInfoMapper.selectByPrimaryKey(Long.valueOf(userId));
|
||||
MsgException.checkNull(userInfo,"用户信息不存在");
|
||||
|
||||
|
||||
//判断进件信息是否存在
|
||||
TbPlussMerchantBaseInfo baseInfo= tbPlussMerchantBaseInfoMapper.selectByUserId(String.valueOf(userId));
|
||||
MsgException.checkNull(baseInfo,"请完善进件信息");
|
||||
|
||||
//判断用户是否有进件
|
||||
List<TbPlussMerchantChannelStatus> merchantCodes = tbPlussMerchantChannelStatusMapper.getByMerchantCodesAudit(baseInfo.getMerchantcode());
|
||||
if (merchantCodes != null){
|
||||
int size = merchantCodes.size();
|
||||
if (size>2){
|
||||
MsgException.throwException("用户进件信息有误");
|
||||
}
|
||||
if (size == 1){
|
||||
Integer channel = merchantCodes.get(0).getChannel();
|
||||
|
||||
//不同的通道
|
||||
switch (channel){
|
||||
case 1:
|
||||
sxfMerchantAuditService.updateMerchantIdCard(merchantCodes.get(0).getMerchantid(),bankCard,idCard);
|
||||
break;
|
||||
case 4:
|
||||
ysAuditServiceV3.updateMerchantBankCard(merchantCodes.get(0).getMerchantid(),idCard,bankCard,channel);
|
||||
ysAuditServiceV3.updateMerchantIdCard(merchantCodes.get(0).getMerchantid(),idCard,channel,userInfo);
|
||||
break;
|
||||
case 5:
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
|
|
@ -40,24 +40,24 @@ public abstract class BaseMerchantAuditService {
|
|||
String merchantType = merchantBaseInfo.getMerchanttype();
|
||||
String principalPerson = merchantBaseInfo.getPrincipalperson();
|
||||
|
||||
TbPlussIdCard legalIdCard = idCardMapper.getLegalIdCard(userId);
|
||||
MsgException.checkNull(legalIdCard, "请完善法人信息");
|
||||
// TbPlussIdCard legalIdCard = idCardMapper.getLegalIdCard(userId);
|
||||
// MsgException.checkNull(legalIdCard, "请完善法人信息");
|
||||
|
||||
if (!"1".equals(merchantType)) {
|
||||
MsgException.checkBlank(principalPerson, "请完善营业执照信息");
|
||||
}
|
||||
|
||||
//同一证件只能注册三个小微商户, 如有增加需求请联系客服
|
||||
Integer num = 0;
|
||||
try {
|
||||
num = accountMapper.selectMicroMbiAccountNum(legalIdCard.getCertno());
|
||||
} catch (Exception e) {
|
||||
log.error(e.toString());
|
||||
}
|
||||
|
||||
if (num >= MAX_MIRCO_MERCHANT_NUM) {
|
||||
throw new MsgException("同一证件只能注册三个小微商户, 如有增加需求请联系客服");
|
||||
}
|
||||
// Integer num = 0;
|
||||
// try {
|
||||
// num = accountMapper.selectMicroMbiAccountNum(legalIdCard.getCertno());
|
||||
// } catch (Exception e) {
|
||||
// log.error(e.toString());
|
||||
// }
|
||||
//
|
||||
// if (num >= MAX_MIRCO_MERCHANT_NUM) {
|
||||
// throw new MsgException("同一证件只能注册三个小微商户, 如有增加需求请联系客服");
|
||||
// }
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -5,6 +5,7 @@ import com.alibaba.fastjson.JSONObject;
|
|||
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
||||
|
||||
import com.chaozhanggui.common.system.config.MsgException;
|
||||
import com.chaozhanggui.common.system.config.ParameterConfig;
|
||||
import com.chaozhanggui.common.system.config.channel.SxfConfig;
|
||||
import com.chaozhanggui.common.system.util.*;
|
||||
import com.chaozhanggui.dao.system.dao.*;
|
||||
|
|
@ -14,6 +15,7 @@ import com.chaozhanggui.merchant.service.sxf.model.Converter;
|
|||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.commons.lang3.time.DateFormatUtils;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.context.annotation.ComponentScan;
|
||||
import org.springframework.core.io.ByteArrayResource;
|
||||
import org.springframework.http.*;
|
||||
|
|
@ -58,48 +60,84 @@ public class SxfMerchantAuditService extends BaseMerchantAuditService {
|
|||
@Resource
|
||||
private TbPlussMerchantImageMapper merchantImageMapper;
|
||||
|
||||
@Resource
|
||||
RestTemplate restTemplate;
|
||||
|
||||
@Autowired
|
||||
SxfConfig sxfConfig;
|
||||
|
||||
public static class ImageType {
|
||||
|
||||
private ImageType() {}
|
||||
|
||||
/** 身份证正面 */
|
||||
public static final String IDCARD_FRONT = "02";
|
||||
/** 身份证反面 */
|
||||
public static final String IDCARD_BACK = "03";
|
||||
/** 营业执照 */
|
||||
public static final String BUSINESS_LICENSE = "13";
|
||||
/** 开户许可证 */
|
||||
public static final String ACCOUNT_PERMITS = "04";
|
||||
/** 门头照 */
|
||||
public static final String SHOP_FRONT_DOOR = "10";
|
||||
/** 非法人结算授权书 */
|
||||
public static final String NON_LEG_SETTLE_AUTH = "26";
|
||||
/** 其它 */
|
||||
public static final String OTHER = "19";
|
||||
/** 收银台照片 */
|
||||
public static final String CASH_DESK_PHOTO = "12";
|
||||
/** 门店内景照片 */
|
||||
public static final String STORE_INTERIOR_PHOTO = "11";
|
||||
/** 各大餐饮平台入驻 */
|
||||
public static final String MERCHANT_PLATFORM = "10";
|
||||
/** 手持身份证 */
|
||||
public static final String HAND_IDCARD_PHOTO = "15";
|
||||
/** 租赁协议一(封面) */
|
||||
public static final String TENANCY_AGREEMENTS1 = "16";
|
||||
/** 租赁合同二(面积,有效期页面) */
|
||||
public static final String TENANCY_AGREEMENTS2 = "17";
|
||||
/** 租赁合同三(签章页) */
|
||||
public static final String TENANCY_AGREEMENTS3 = "18";
|
||||
/** 银行卡正面 */
|
||||
public static final String BANK_CARD_FRONT = "05";
|
||||
/** 银行卡反面 */
|
||||
public static final String BANK_CARD_BACK = "06";
|
||||
/** 结算身份证正面 */
|
||||
public static final String SETTLE_IDCARD_FRONT = "08";
|
||||
/** 结算身份证反面 */
|
||||
public static final String SETTLE_IDCARD_BACK = "07";
|
||||
}
|
||||
/**
|
||||
* 进件
|
||||
* @param userId
|
||||
* @param isFailCheck
|
||||
|
||||
*/
|
||||
@Transactional(rollbackFor = Exception.class)
|
||||
public void merchantAudit(String userId, boolean isFailCheck) {
|
||||
public void merchantAudit(String userId, TbPlussMerchantChannelStatus mcs) {
|
||||
//进件检测
|
||||
merchantAuditCheck(userId,isFailCheck);
|
||||
merchantAuditCheck(userId,false);
|
||||
|
||||
TbPlussMerchantBaseInfo merchantBaseInfo = merchantBaseInfoMapper.selectByUserId(userId);
|
||||
TbPlussMerchantChannelStatus mcs = merchantChannelStatusMapper.getByMerchantCode(merchantBaseInfo.getMerchantcode(),"1");
|
||||
|
||||
JSONObject reqData = new JSONObject();
|
||||
|
||||
// 判断是第一次进件是入驻修改,还是第一次进件
|
||||
String targetUrl;
|
||||
MsgException.checkNull(mcs, "商户未提交审核");
|
||||
|
||||
String status = mcs.getStatus();
|
||||
String thirdStatus = mcs.getThirdstatus();
|
||||
String merchantId = mcs.getMerchantid();
|
||||
|
||||
if (status.equals(TbPlussMerchantChannelStatus.AUDIT_STATUS_EXAMINING) && !thirdStatus.equals(TbPlussMerchantChannelStatus.AUDIT_THIRD_STATUS_WAITING)) {
|
||||
MsgException.throwException("进件审核中,请等待审核结果");
|
||||
}
|
||||
|
||||
if (TbPlussMerchantChannelStatus.isAudited(mcs)) {
|
||||
MsgException.throwException("商户已进件成功,请勿重复进件");
|
||||
}
|
||||
|
||||
if (StringUtils.isEmpty(merchantId)) {
|
||||
// 初次进件
|
||||
targetUrl = SxfConfig.SXF_MERCHANT_INCOME;
|
||||
targetUrl = sxfConfig.SXF_MERCHANT_INCOME;
|
||||
} else {
|
||||
// 进件失败数据修改
|
||||
targetUrl = SxfConfig.SXF_UPADTE_MERCHANT_RZ;
|
||||
targetUrl = sxfConfig.SXF_UPADTE_MERCHANT_RZ;
|
||||
reqData.put("mno", merchantId);
|
||||
}
|
||||
|
||||
// step 1、组合请求数据
|
||||
reqData.putAll(getMerchantAuditInfo(userId, merchantBaseInfo, mcs));
|
||||
reqData.put("callbackUrl", ParametersUtil.domain + "/api/auditCallback/sxf");
|
||||
reqData.put("callbackUrl", parameterConfig.getDomain() + "/api/auditCallback/sxf");
|
||||
//支付宝通道ID
|
||||
reqData.put("specifyALiPayChannel", ParametersUtil.alipayChannel);
|
||||
log.info("{}随行付进件参数{}", userId, JSON.toJSONString(reqData));
|
||||
|
|
@ -113,11 +151,11 @@ public class SxfMerchantAuditService extends BaseMerchantAuditService {
|
|||
MsgException.throwException(e.getMessage());
|
||||
}
|
||||
|
||||
MsgException.checkUnequals(SxfConfig.SXF_SUCCESS_CODE, resultMap.get("code"), "进件失败," + resultMap.get("msg"));
|
||||
MsgException.checkUnequals(sxfConfig.SXF_SUCCESS_CODE, resultMap.get("code"), "进件失败," + resultMap.get("msg"));
|
||||
|
||||
// 业务成功
|
||||
JSONObject respData = resultMap.getJSONObject("respData");
|
||||
MsgException.checkUnequals(SxfConfig.SXF_SUCCESS_CODE, respData.get("bizCode"), "进件失败," + respData.get("bizMsg"));
|
||||
MsgException.checkUnequals(sxfConfig.SXF_SUCCESS_CODE, respData.get("bizCode"), "进件失败," + respData.get("bizMsg"));
|
||||
|
||||
Date date = new Date();
|
||||
|
||||
|
|
@ -150,6 +188,69 @@ public class SxfMerchantAuditService extends BaseMerchantAuditService {
|
|||
merchantChannelStatusMapper.insertSelective(mcs);
|
||||
}
|
||||
}
|
||||
|
||||
@Autowired
|
||||
ParameterConfig parameterConfig;
|
||||
|
||||
/**
|
||||
* 随行付更改身份证和银行卡
|
||||
* @param merchantId
|
||||
*/
|
||||
public void updateMerchantIdCard(String merchantId, TbPlussBankCard bankCard, TbPlussIdCard idCard){
|
||||
//组装参数
|
||||
//实名
|
||||
JSONObject reqData = new JSONObject();
|
||||
reqData.put("mno",merchantId);
|
||||
reqData.put("identityName",idCard.getCertname());
|
||||
reqData.put("identityTyp","00");
|
||||
reqData.put("identityNo",idCard.getCertno());
|
||||
reqData.put("legalPersonLicStt",idCard.getCertstarttime());
|
||||
reqData.put("legalPersonLicEnt",idCard.getCertendtime());
|
||||
reqData.put("legalPersonidPositivePic",idCard.getImgpositive());
|
||||
reqData.put("legalPersonidOppositePic",idCard.getImgnegative());
|
||||
|
||||
//TODO 结算相关(暂时只可以改对私相关)
|
||||
if ("01".equals(bankCard.getAccounttype())){
|
||||
reqData.put("actNm",bankCard.getBankholder());
|
||||
reqData.put("stmManIdNo",idCard.getCertno());
|
||||
reqData.put("accountLicStt",idCard.getCertstarttime());
|
||||
reqData.put("accountLicEnt",idCard.getCertendtime());
|
||||
|
||||
TbPlussBankCodeSxf bankCodeSxf = bankCodeSxfMapper.selectByCnapsCode(bankCard.getContactline());
|
||||
|
||||
reqData.put("actNo",bankCard.getBankcardno());
|
||||
reqData.put("depoBank",bankCard.getBankcardno());
|
||||
// 银行code
|
||||
reqData.put("depoBank", bankCodeSxf.getBankCode());
|
||||
// 省份code
|
||||
reqData.put("depoProvCd", bankCodeSxf.getProvinceCode());
|
||||
// 城市code
|
||||
reqData.put("depoCityCd", bankCodeSxf.getCityCode());
|
||||
// 联行号
|
||||
reqData.put("lbnkNo", bankCodeSxf.getCnapsCode());
|
||||
reqData.put("lbnkNm", bankCodeSxf.getCnapsName());
|
||||
|
||||
reqData.put("bankCardPositivePic", bankCodeSxf.getCnapsCode());
|
||||
reqData.put("settlePersonIdcardPositive", bankCodeSxf.getCnapsName());
|
||||
reqData.put("settlePersonIdcardOpposite", bankCodeSxf.getCnapsName());
|
||||
}
|
||||
|
||||
reqData.put("updateCallBackUrl",parameterConfig.getDomain() + "/api/auditCallback/updateSxf");
|
||||
|
||||
//调取通用请求
|
||||
JSONObject resultMap = requestApi(sxfConfig.SXF_UPDATE_MERCHANT_INFO, reqData);
|
||||
try {
|
||||
checkSign(resultMap);
|
||||
} catch (Exception e) {
|
||||
MsgException.throwException(e.getMessage());
|
||||
}
|
||||
|
||||
MsgException.checkUnequals(sxfConfig.SXF_SUCCESS_CODE, resultMap.get("code"), "修改失败," + resultMap.get("msg"));
|
||||
|
||||
// 业务成功
|
||||
JSONObject respData = resultMap.getJSONObject("respData");
|
||||
MsgException.checkUnequals(sxfConfig.SXF_SUCCESS_CODE, respData.get("bizCode"), "修改失败," + respData.get("bizMsg"));
|
||||
}
|
||||
private JSONObject getMerchantAuditInfo(String userId, TbPlussMerchantBaseInfo merchantBaseInfo, TbPlussMerchantChannelStatus merchantChannelStatus) {
|
||||
// step 1、组合请求数据
|
||||
JSONObject reqData = new JSONObject();
|
||||
|
|
@ -222,17 +323,17 @@ public class SxfMerchantAuditService extends BaseMerchantAuditService {
|
|||
* @return
|
||||
*/
|
||||
public JSONObject requestApi(String url, JSONObject reqData) {
|
||||
RestTemplate restTemplate = new RestTemplate();
|
||||
|
||||
try {
|
||||
JSONObject paramMap = new JSONObject();
|
||||
paramMap.put("orgId", SxfConfig.ORG_ID);
|
||||
paramMap.put("orgId", sxfConfig.ORG_ID);
|
||||
paramMap.put("reqId", UUID.randomUUID().toString().replaceAll("-", ""));
|
||||
paramMap.put("version", "1.0");
|
||||
paramMap.put("timestamp", DateFormatUtils.format(new Date(), "yyyyMMddHHmmss"));
|
||||
paramMap.put("reqData", reqData);
|
||||
paramMap.put("signType", "RSA");
|
||||
String signContent = SignUtils.getSignContent(paramMap);
|
||||
paramMap.put("sign", RSAUtils.sign(SxfConfig.PRIVATE_KEY, signContent));
|
||||
paramMap.put("sign", RSAUtils.sign(sxfConfig.PRIVATE_KEY, signContent));
|
||||
log.info("===================>【随行付】请求参数:{}<================",paramMap);
|
||||
|
||||
ResponseEntity<JSONObject> responseEntity = restTemplate.postForEntity(url, paramMap, JSONObject.class);
|
||||
|
|
@ -263,7 +364,7 @@ public class SxfMerchantAuditService extends BaseMerchantAuditService {
|
|||
}
|
||||
|
||||
String srcData = SignUtils.getSignContent(receiveData);
|
||||
boolean sign = RSAUtils.checkSign(SxfConfig.PUBLIC_KEY, srcData, receiveData.getString("sign"));
|
||||
boolean sign = RSAUtils.checkSign(sxfConfig.PUBLIC_KEY, srcData, receiveData.getString("sign"));
|
||||
if (!sign) {
|
||||
throw new IllegalArgumentException("商户入驻回调接口验签不通过");
|
||||
}
|
||||
|
|
@ -297,24 +398,24 @@ public class SxfMerchantAuditService extends BaseMerchantAuditService {
|
|||
}
|
||||
};
|
||||
paramMap.add("file", contentsAsResource);
|
||||
paramMap.add("orgId", SxfConfig.ORG_ID);
|
||||
paramMap.add("orgId", sxfConfig.ORG_ID);
|
||||
|
||||
paramMap.add("pictureType", imgTypeTransform(merchantImage.getPhotoType()));
|
||||
|
||||
HttpEntity<MultiValueMap<String, Object>> request = new HttpEntity<>(paramMap, headers);
|
||||
RestTemplate restTemplate = new RestTemplate();
|
||||
JSONObject responseJson = restTemplate.postForObject(SxfConfig.SXF_MERCHANT_INCOME_PHOTO_UPLOAD, request, JSONObject.class);
|
||||
JSONObject responseJson = restTemplate.postForObject(sxfConfig.SXF_MERCHANT_INCOME_PHOTO_UPLOAD, request, JSONObject.class);
|
||||
|
||||
MsgException.checkNull(responseJson, "请求失败");
|
||||
log.info("upload response : {}", responseJson.toJSONString());
|
||||
|
||||
MsgException.checkUnequals(SxfConfig.SXF_SUCCESS_CODE, responseJson.get("code"), "请求失败");
|
||||
MsgException.checkUnequals(sxfConfig.SXF_SUCCESS_CODE, responseJson.get("code"), "请求失败");
|
||||
|
||||
JSONObject respData = responseJson.getJSONObject("respData");
|
||||
|
||||
MsgException.checkNull(respData, "上传图片失败");
|
||||
|
||||
MsgException.checkUnequals(SxfConfig.SXF_SUCCESS_CODE, respData.get("bizCode"), respData.getString("bizMsg"));
|
||||
MsgException.checkUnequals(sxfConfig.SXF_SUCCESS_CODE, respData.get("bizCode"), respData.getString("bizMsg"));
|
||||
|
||||
Date date = new Date();
|
||||
|
||||
|
|
@ -329,31 +430,31 @@ public class SxfMerchantAuditService extends BaseMerchantAuditService {
|
|||
public String imgTypeTransform(String imageType) {
|
||||
switch (imageType) {
|
||||
case TbPlussMerchantImage.IDCARD_FRONT:
|
||||
return TbPlussMerchantImage.IDCARD_FRONT;
|
||||
return ImageType.IDCARD_FRONT;
|
||||
case TbPlussMerchantImage.IDCARD_BACK:
|
||||
return TbPlussMerchantImage.IDCARD_BACK;
|
||||
return ImageType.IDCARD_BACK;
|
||||
case TbPlussMerchantImage.SETTLE_IDCARD_FRONT:
|
||||
return TbPlussMerchantImage.SETTLE_IDCARD_FRONT;
|
||||
return ImageType.SETTLE_IDCARD_BACK;
|
||||
case TbPlussMerchantImage.SETTLE_IDCARD_BACK:
|
||||
return TbPlussMerchantImage.SETTLE_IDCARD_BACK;
|
||||
return ImageType.SETTLE_IDCARD_FRONT;
|
||||
case TbPlussMerchantImage.BANK_CARD_BACK:
|
||||
return TbPlussMerchantImage.BANK_CARD_BACK;
|
||||
return ImageType.BANK_CARD_BACK;
|
||||
case TbPlussMerchantImage.BANK_CARD_FRONT:
|
||||
return TbPlussMerchantImage.BANK_CARD_FRONT;
|
||||
return ImageType.BANK_CARD_FRONT;
|
||||
case TbPlussMerchantImage.BUSINESS_LICENSE:
|
||||
return TbPlussMerchantImage.BUSINESS_LICENSE;
|
||||
return ImageType.BUSINESS_LICENSE;
|
||||
case TbPlussMerchantImage.ACCOUNT_PERMITS:
|
||||
return TbPlussMerchantImage.ACCOUNT_PERMITS;
|
||||
return ImageType.ACCOUNT_PERMITS;
|
||||
case TbPlussMerchantImage.NON_LEG_SETTLE_AUTH:
|
||||
return TbPlussMerchantImage.NON_LEG_SETTLE_AUTH;
|
||||
return ImageType.NON_LEG_SETTLE_AUTH;
|
||||
case TbPlussMerchantImage.SHOP_FRONT_DOOR:
|
||||
return TbPlussMerchantImage.SHOP_FRONT_DOOR;
|
||||
return ImageType.SHOP_FRONT_DOOR;
|
||||
case TbPlussMerchantImage.CASH_DESK_PHOTO:
|
||||
return TbPlussMerchantImage.CASH_DESK_PHOTO;
|
||||
return ImageType.CASH_DESK_PHOTO;
|
||||
case TbPlussMerchantImage.STORE_INTERIOR_PHOTO:
|
||||
return TbPlussMerchantImage.STORE_INTERIOR_PHOTO;
|
||||
return ImageType.STORE_INTERIOR_PHOTO;
|
||||
default:
|
||||
return TbPlussMerchantImage.OTHER;
|
||||
return ImageType.OTHER;
|
||||
}
|
||||
}
|
||||
private void combineMerchantBaseInfo(Map<String, Object> map, TbPlussMerchantBaseInfo merchantBaseInfo) {
|
||||
|
|
|
|||
|
|
@ -34,7 +34,9 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|||
import org.springframework.core.io.ByteArrayResource;
|
||||
import org.springframework.http.HttpEntity;
|
||||
import org.springframework.http.HttpHeaders;
|
||||
import org.springframework.http.HttpMethod;
|
||||
import org.springframework.http.MediaType;
|
||||
import org.springframework.http.client.reactive.ClientHttpRequest;
|
||||
import org.springframework.stereotype.Component;
|
||||
import org.springframework.stereotype.Service;
|
||||
import org.springframework.transaction.TransactionStatus;
|
||||
|
|
@ -46,18 +48,20 @@ import org.springframework.util.LinkedMultiValueMap;
|
|||
import org.springframework.util.MultiValueMap;
|
||||
import org.springframework.util.StringUtils;
|
||||
import org.springframework.web.client.RestTemplate;
|
||||
import org.springframework.web.reactive.function.BodyInserter;
|
||||
import org.springframework.web.reactive.function.client.WebClient;
|
||||
import reactor.core.publisher.Mono;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.io.IOException;
|
||||
import java.io.Serializable;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.Calendar;
|
||||
import java.util.Date;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.*;
|
||||
import java.util.concurrent.ExecutorService;
|
||||
|
||||
import static com.chaozhanggui.dao.system.entity.TbPlussMerchantBaseInfo.MERCH_TYPE_MICRO;
|
||||
import static org.springframework.http.HttpHeaders.*;
|
||||
import static org.springframework.http.MediaType.APPLICATION_JSON_UTF8_VALUE;
|
||||
|
||||
/**银盛进件相关
|
||||
* @author lyf
|
||||
|
|
@ -124,6 +128,8 @@ public class YSAuditServiceV3 {
|
|||
private ExecutorService executorService;
|
||||
@Resource
|
||||
private TransactionTemplate transactionTemplate;
|
||||
@Resource
|
||||
private TbPlussNoticeMapper noticeMapper;
|
||||
/**
|
||||
* 银盛进件3.0
|
||||
* @param userId 用户id
|
||||
|
|
@ -189,6 +195,112 @@ public class YSAuditServiceV3 {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 银盛更改身份证
|
||||
* @param merchantId
|
||||
*/
|
||||
public void updateMerchantIdCard(String merchantId, TbPlussIdCard idCard,Integer channel,TbPlussUserInfo userInfo){
|
||||
//组装更改参数
|
||||
CrpInfo crpInfo = new CrpInfo();
|
||||
crpInfo.setCrpNm(idCard.getCertname());
|
||||
crpInfo.setCertExpire(idCard.getCertendtime());
|
||||
crpInfo.setCrpPhone(userInfo.getPhone());
|
||||
JSONObject param = new JSONObject();
|
||||
param.put("mercId", merchantId);
|
||||
param.put("crpInfo",crpInfo);
|
||||
param.put("notifyUrl",YSAuditServiceV3.AUDIT_NOTIFY_URL);
|
||||
//进件参数
|
||||
RespEntity respEntity = reqExtension(ReqMethod.changeMercBaseInfo, param, channel);
|
||||
|
||||
String subCode = respEntity.getSubCode();
|
||||
//校验进件信息
|
||||
if (!Objects.equals(subCode, BIZ_SUCCESS)) {
|
||||
throw new MsgException(respEntity.getSubMsg());
|
||||
}
|
||||
//解析业务响应参数
|
||||
JSONObject extra = new JSONObject();
|
||||
extra.putAll(JSON.parseObject(respEntity.getBusinessData()));
|
||||
//获取变更申请流水号
|
||||
String changeSysFlowId = extra.getString("changeSysFlowId");
|
||||
|
||||
//获取身份证正反面
|
||||
executorService.execute(() -> {
|
||||
imageUploadExtension("A002", idCard.getImgpositive(), changeSysFlowId);
|
||||
imageUploadExtension("A003", idCard.getImgnegative(), changeSysFlowId);
|
||||
});
|
||||
|
||||
}
|
||||
/**
|
||||
* 银盛更改结算信息
|
||||
* @param merchantId
|
||||
*/
|
||||
public void updateMerchantBankCard(String merchantId, TbPlussIdCard idCard, TbPlussBankCard bankCard,Integer channel){
|
||||
//首先判段是不是法人结算
|
||||
TbPlussAccount tbPlussAccount;
|
||||
if (4 == channel) {
|
||||
TbPlussAccount account = new TbPlussAccount();
|
||||
account.setUserid(bankCard.getUserid());
|
||||
account.setChanneltype(TbPlussAccount.CHANNEL_TYPE_D0);
|
||||
tbPlussAccount = accountMapper.selectByAccount(account);
|
||||
}else {
|
||||
TbPlussAccount account = new TbPlussAccount();
|
||||
account.setUserid(bankCard.getUserid());
|
||||
account.setChanneltype(TbPlussAccount.CHANNEL_TYPE_D1);
|
||||
tbPlussAccount = accountMapper.selectByAccount(account);
|
||||
}
|
||||
//组装更改参数
|
||||
StlAccInfo stlAccInfo = new StlAccInfo();
|
||||
stlAccInfo.setIsSettInPlatAcc("N");
|
||||
stlAccInfo.setIsUncrpSett(tbPlussAccount.getSettletype().startsWith(TbPlussAccount.SETTLE_TYPE_PRIVATE_ILLEGAL) ? "Y" : "N");
|
||||
stlAccInfo.setStlAccNo(bankCard.getBankcardno());
|
||||
stlAccInfo.setStlAccType(tbPlussAccount.getSettletype().startsWith(TbPlussAccount.SETTLE_TYPE_CORPORATE) ? "21" : "11");
|
||||
stlAccInfo.setOpenCertNo(idCard.getCertno());
|
||||
stlAccInfo.setStlAccNm(bankCard.getBankholder());
|
||||
stlAccInfo.setBankSubCode(bankCard.getContactline());
|
||||
stlAccInfo.setBankMobile(bankCard.getPhone());
|
||||
JSONObject param = new JSONObject();
|
||||
param.put("mercId", merchantId);
|
||||
param.put("stlAccInfo", stlAccInfo);
|
||||
param.put("notifyUrl", YSAuditServiceV3.AUDIT_NOTIFY_URL);
|
||||
//进件参数
|
||||
RespEntity respEntity = reqExtension(ReqMethod.changeMercStlAccInfo, param, channel);
|
||||
|
||||
String subCode = respEntity.getSubCode();
|
||||
//校验进件信息
|
||||
if (!Objects.equals(subCode, BIZ_SUCCESS)) {
|
||||
throw new MsgException(respEntity.getSubMsg());
|
||||
}
|
||||
|
||||
String businessData = respEntity.getBusinessData();
|
||||
JSONObject bizData = JSON.parseObject(businessData);
|
||||
String changeSysFlowId = bizData.getString("changeSysFlowId");
|
||||
|
||||
if (bankCard.getAccounttype().equals(TbPlussBankCard.ACCOUNT_TYPE_CORPORATE)) {
|
||||
// 对公结算需要上传开户许可证
|
||||
imageUploadExtension("A011", bankCard.getLicenseurl(), changeSysFlowId);
|
||||
} else {
|
||||
// 对私结算需要上传银行卡图片
|
||||
imageUploadExtension("A004", bankCard.getImgurl(), changeSysFlowId);
|
||||
}
|
||||
|
||||
// 非法人结算,传结算人的身份证图片
|
||||
if (Objects.equals(tbPlussAccount.getSettletype(), TbPlussAccount.SETTLE_TYPE_PRIVATE_ILLEGAL)) {
|
||||
imageUploadExtension("A002", idCard.getImgpositive(), changeSysFlowId);
|
||||
imageUploadExtension("A003", idCard.getImgnegative(), changeSysFlowId);
|
||||
}
|
||||
//添加消息相关
|
||||
log.debug("云商服3.0基本信息变更发起成功");
|
||||
String title = "收银呗商户信息变更通知";
|
||||
String remark = "D0结算信息变更已发起";
|
||||
|
||||
TbPlussNotice notice = new TbPlussNotice();
|
||||
notice.setUserid(bankCard.getUserid());
|
||||
notice.setTitle(title);
|
||||
notice.setConrtent(remark);
|
||||
noticeMapper.insertSelective(notice);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 组装进件基本信息
|
||||
* @param userId
|
||||
|
|
@ -345,11 +457,6 @@ public class YSAuditServiceV3 {
|
|||
mcs.setThirdstatus(TbPlussMerchantChannelStatus.AUDIT_THIRD_STATUS_AUDITING);
|
||||
mcs.setInterfaceversion(INTERFACE_VERSION);
|
||||
merchantChannelStatusMapper.updateByPrimaryKey(mcs);
|
||||
//mcsService.saveOrUpdate(mcs);
|
||||
|
||||
AccountDTO accountDTO = sxfMerchantAuditService.getRealAccount(userId, TbPlussAccount.CHANNEL_TYPE_D1);
|
||||
|
||||
idCardMapper.getLegalIdCard(userId);
|
||||
|
||||
}
|
||||
|
||||
|
|
@ -454,6 +561,19 @@ public class YSAuditServiceV3 {
|
|||
throw new MsgException("图片多次上传失败");
|
||||
}
|
||||
|
||||
/**
|
||||
* 图片上传方法(更改信息)
|
||||
*/
|
||||
private void imageUploadExtension(String photoType, String imgUrl, String flowId){
|
||||
|
||||
RespEntity respEntity = reqUpload(ReqMethod.uploadChangePic, photoType, imgUrl, flowId);
|
||||
if (!Objects.equals(respEntity.getSubCode(), BIZ_SUCCESS)) {
|
||||
log.info("上传失败:{}", respEntity.getSubMsg());
|
||||
throw new MsgException("图片上传失败");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 图片映射
|
||||
* @param imageType
|
||||
|
|
@ -623,6 +743,109 @@ public class YSAuditServiceV3 {
|
|||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 只用于银盛更改接口发送通用请求(WebClient)主要用于更改资料
|
||||
* @param reqMethod
|
||||
* @param reqData
|
||||
* @param channel
|
||||
* @return
|
||||
*/
|
||||
public RespEntity reqExtension(ReqMethod reqMethod, JSONObject reqData, Integer channel){
|
||||
Calendar calendar = Calendar.getInstance();
|
||||
int i = calendar.get(Calendar.HOUR_OF_DAY);
|
||||
|
||||
if (i < 8 || i >= 21) {
|
||||
throw new MsgException("当前时段暂不支持入网,请于8:00-21:00提交");
|
||||
}
|
||||
String key = RandomUtil.randomString(RandomUtil.BASE_NUMBER + "ABCDEF",16);
|
||||
try {
|
||||
ReqEntity request = ReqEntity.get(reqMethod);
|
||||
Sign sign = null;
|
||||
if (channel.equals(4)) {
|
||||
request.setCertId(ysConfig.getSrcMerchantNo());
|
||||
RSA rsa = SecureUtil.rsa(ysConfig.getPriKey(), ysConfig.getOldPubKey());
|
||||
request.setCheck(rsa.encryptBase64(key, KeyType.PublicKey));
|
||||
sign = SecureUtil.sign(SignAlgorithm.SHA256withRSA, ysConfig.getPriKey(), ysConfig.getOldPubKey());
|
||||
}else {
|
||||
request.setCertId(ysConfigV3.getSrcMerchantNoD1());
|
||||
RSA rsa = SecureUtil.rsa(ysConfigV3.getPriKeyV2D1(), ysConfigV3.getPubKeyV2D1());
|
||||
request.setCheck(rsa.encryptBase64(key, KeyType.PublicKey));
|
||||
sign = SecureUtil.sign(SignAlgorithm.SHA256withRSA, ysConfigV3.getPriKeyV2D1(), ysConfigV3.getPubKeyV2D1());
|
||||
}
|
||||
request.setBizContent(reqData.toJSONString());
|
||||
|
||||
log.info("业务参数==============>" + JSONObject.toJSONString(reqData));
|
||||
|
||||
log.info("key = " + key);
|
||||
AES aes = new AES(key.getBytes(StandardCharsets.UTF_8));
|
||||
String s = aes.encryptBase64(request.getBizContent());
|
||||
request.setBizContent(s);
|
||||
|
||||
String encryptOriginData = SignUtils.getSignContent((JSONObject) JSON.toJSON(request));
|
||||
|
||||
log.info("加签源数据==============>" + encryptOriginData);
|
||||
request.setSign(Base64.encode(sign.sign(encryptOriginData.getBytes())));
|
||||
log.warn("请求报文==============>" + JSONObject.toJSONString(request));
|
||||
log.info("请求地址:{}", reqMethod.getUrl());
|
||||
|
||||
//发送请求
|
||||
Mono<String> resp = WebClient.create().post()
|
||||
.uri(reqMethod.getUrl())
|
||||
.contentType(MediaType.APPLICATION_FORM_URLENCODED)
|
||||
.header(USER_AGENT,"Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/45.0.2454.101 Safari/537.36")
|
||||
.body((BodyInserter<?, ? super ClientHttpRequest>) request)
|
||||
.retrieve().bodyToMono(String.class);
|
||||
|
||||
String respStr = resp.toString();
|
||||
log.info("返回信息base64:{}", respStr);
|
||||
byte[] decode = Base64.decode(respStr);
|
||||
respStr = new String(decode, StandardCharsets.UTF_8);
|
||||
log.info("返回信息:{}", respStr);
|
||||
|
||||
JSONObject param = JSON.parseObject(respStr);
|
||||
String signContent = SignUtils.getSignContent(param);
|
||||
System.out.println("加签原参数:" + signContent);
|
||||
|
||||
boolean checkSign;
|
||||
try {
|
||||
checkSign = sign.verify(signContent.getBytes(StandardCharsets.UTF_8), Base64.decode(param.getString("sign")));
|
||||
} catch (Exception e) {
|
||||
log.error("银盛云商服3.0接口验签失败{}", e.getMessage());
|
||||
e.printStackTrace();
|
||||
checkSign = true;
|
||||
}
|
||||
|
||||
if (!checkSign) {
|
||||
throw new MsgException("银盛云商服3.0接口验签不通过");
|
||||
}
|
||||
|
||||
RespEntity respEntity = JSON.parseObject(respStr, RespEntity.class);
|
||||
|
||||
// 检查网关code码
|
||||
if (!Objects.equals(respEntity.getCode(), REQ_SUCCESS)) {
|
||||
throw new MsgException(respEntity.getMsg());
|
||||
}
|
||||
|
||||
// 业务响应码这里不做判断,交给具体接口业务逻辑去判断
|
||||
if (StringUtils.hasText(respEntity.getBusinessData())) {
|
||||
byte[] bizBytes = Base64.decode(respEntity.getBusinessData());
|
||||
String decryptBizData = aes.decryptStr(bizBytes);
|
||||
respEntity.setBusinessData(decryptBizData);
|
||||
log.info("业务参数: {}", respEntity.getBusinessData());
|
||||
}
|
||||
|
||||
return respEntity;
|
||||
} catch (Exception e) {
|
||||
if (e instanceof MsgException) {
|
||||
throw e;
|
||||
}
|
||||
|
||||
return null;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* 进件上传图片
|
||||
* @param reqMethod
|
||||
|
|
@ -740,6 +963,7 @@ public class YSAuditServiceV3 {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 再次检测
|
||||
* @param userId
|
||||
|
|
|
|||
Loading…
Reference in New Issue