IOS端公众号app相关,更改401错误码message,更改getAccessToken方法,银盛部分相关,四要素新增错误码
This commit is contained in:
@@ -8,6 +8,7 @@ import cn.pluss.platform.IdCardService;
|
||||
import cn.pluss.platform.channel.MercAuditListener;
|
||||
import cn.pluss.platform.converter.Converter;
|
||||
import cn.pluss.platform.dto.AccountDTO;
|
||||
import cn.pluss.platform.dto.BankCardDTO;
|
||||
import cn.pluss.platform.entity.*;
|
||||
import cn.pluss.platform.exception.MsgException;
|
||||
import cn.pluss.platform.mapper.AccountMapper;
|
||||
@@ -114,6 +115,8 @@ public class YSAuditServiceV3 implements cn.pluss.platform.channel.ys.YSAuditSer
|
||||
private SxfMerAuditHandler sxfMerAuditHandler;
|
||||
@Autowired
|
||||
private SubMerchantService smService;
|
||||
@Resource
|
||||
private SxfMerAuditHandler handler;
|
||||
// @Autowired
|
||||
// private MercChangeRecordService mcrService;
|
||||
|
||||
@@ -696,9 +699,18 @@ public class YSAuditServiceV3 implements cn.pluss.platform.channel.ys.YSAuditSer
|
||||
}
|
||||
mcsService.updateById(mcs);
|
||||
openOnlinePay(mcs);
|
||||
|
||||
mercAuditListener.onSuccess(mbi.getUserId(), mcs);
|
||||
//暂时用手动进件
|
||||
// mercAuditListener.onSuccess(mbi.getUserId(), mcs);
|
||||
//向小程序里加入商家
|
||||
handler.createStore(mcs);
|
||||
// //银盛再次报备
|
||||
// JSONObject bizContentMap = new JSONObject();
|
||||
// bizContentMap.put("channelId", "CUPS_WECHAT");
|
||||
// bizContentMap.put("mercId", mercId);
|
||||
// bizContentMap.put("appletId", "wxc2bb94c0ddda1032");
|
||||
// ysServiceV3.req(ReqMethod.appIdAddOrUpdate, bizContentMap);
|
||||
break;
|
||||
//TODO 失败和错误时没有处理
|
||||
case YsConfigV3.STATUS_REFUSE:
|
||||
case YsConfigV3.STATUS_SIGN_REFUSE:
|
||||
List<String> excludeStatus = Arrays.asList(MerchantChannelStatus.AUDIT_STATUS_REJECT, MerchantChannelStatus.AUDIT_STATUS_SUCCESS);
|
||||
@@ -1152,21 +1164,21 @@ public class YSAuditServiceV3 implements cn.pluss.platform.channel.ys.YSAuditSer
|
||||
* 变更结算卡
|
||||
* 一般不支持非法人结算卡变更
|
||||
*/
|
||||
// public void editAccountInfo(String userId) {
|
||||
public void editAccountInfo(BankCardDTO bankCardDTO) {
|
||||
// MercChangeRecord entity = mcrService.get(userId, 4, MercChangeRecord.Type.ACCOUNT, MercChangeRecord.Status.EDIT);
|
||||
// if (entity == null) {
|
||||
// throw new MsgException("没有需要变更的信息");
|
||||
// }
|
||||
//
|
||||
|
||||
// BankCard bankCard = entity.getBankCardInfo();
|
||||
// IdCard idCard = entity.getIdCardInfo();
|
||||
//
|
||||
// MerchantBaseInfo mbi = mbiService.getMerchantBaseInfoByUserId(userId);
|
||||
//
|
||||
// MerchantChannelStatus mcs = mcsService.getByMerchantCode(mbi.getMerchantCode(), 4);
|
||||
//
|
||||
// RegionCodeYs ysRegionCode = regionReflectService.getYsRegionCode(bankCard);
|
||||
//
|
||||
|
||||
MerchantBaseInfo mbi = mbiService.getMerchantBaseInfoByUserId(bankCardDTO.getUserId());
|
||||
|
||||
MerchantChannelStatus mcs = mcsService.getByMerchantCode(mbi.getMerchantCode(), 4);
|
||||
|
||||
RegionCodeYs ysRegionCode = regionReflectService.getYsRegionCode(bankCardDTO);
|
||||
|
||||
// JSONObject ext = entity.getExt();
|
||||
// String settleType;
|
||||
// if (ext == null) {
|
||||
@@ -1179,53 +1191,58 @@ public class YSAuditServiceV3 implements cn.pluss.platform.channel.ys.YSAuditSer
|
||||
// AccountDTO accountDTO = accountService.getRealAccount(userId, AccountDTO.CHANNEL_TYPE_D0);
|
||||
// idCard = accountDTO.getIdcard();
|
||||
// }
|
||||
//
|
||||
// JSONObject param = new JSONObject();
|
||||
// param.put(YsConstantV3.NOTIFY_URL, YsConfigV3.AUDIT_NOTIFY_URL);
|
||||
// StlAccInfo stlAccInfo = new StlAccInfo();
|
||||
// stlAccInfo.setIsSettInPlatAcc("N");
|
||||
// stlAccInfo.setIsUncrpSett(settleType.startsWith(Account.SETTLE_TYPE_PRIVATE_ILLEGAL) ? "Y" : "N");
|
||||
// stlAccInfo.setStlAccNo(bankCard.getBankCardNo());
|
||||
// stlAccInfo.setStlAccType(settleType.startsWith(Account.SETTLE_TYPE_CORPORATE) ? "21" : "11");
|
||||
// stlAccInfo.setOpenCertNo(idCard.getCertNo());
|
||||
// stlAccInfo.setStlAccNm(bankCard.getBankHolder());
|
||||
// stlAccInfo.setBankSubCode(bankCard.getContactLine());
|
||||
// stlAccInfo.setBankMobile(bankCard.getPhone());
|
||||
// stlAccInfo.setBankProince(ysRegionCode.getProvinceCode());
|
||||
// stlAccInfo.setBankCity(ysRegionCode.getCityCode());
|
||||
//
|
||||
// param.put("stlAccInfo", stlAccInfo);
|
||||
// param.put(YsConstant.MERC_ID, mcs.getMerchantId());
|
||||
//
|
||||
Account account = new Account().setUserId(bankCardDTO.getUserId()).setChannelType(Account.CHANNEL_TYPE_D0);
|
||||
account = accountService.getOne(new QueryWrapper<>(account));
|
||||
IdCard accountIdCard = idCardService.getAccountIdCard(bankCardDTO.getUserId(), Account.CHANNEL_TYPE_D0);
|
||||
JSONObject bak = account.getBak();
|
||||
|
||||
|
||||
JSONObject param = new JSONObject();
|
||||
param.put(YsConstantV3.NOTIFY_URL, YsConfigV3.AUDIT_NOTIFY_URL);
|
||||
StlAccInfo stlAccInfo = new StlAccInfo();
|
||||
stlAccInfo.setIsSettInPlatAcc("N");
|
||||
stlAccInfo.setIsUncrpSett(account.getSettleType().startsWith(Account.SETTLE_TYPE_PRIVATE_ILLEGAL) ? "Y" : "N");
|
||||
stlAccInfo.setStlAccNo(bankCardDTO.getBankCardNo());
|
||||
stlAccInfo.setStlAccType(account.getSettleType().startsWith(Account.SETTLE_TYPE_CORPORATE) ? "21" : "11");
|
||||
stlAccInfo.setOpenCertNo(accountIdCard.getCertNo());
|
||||
stlAccInfo.setStlAccNm(bankCardDTO.getBankHolder());
|
||||
stlAccInfo.setBankSubCode(bankCardDTO.getContactLine());
|
||||
stlAccInfo.setBankMobile(bankCardDTO.getPhone());
|
||||
stlAccInfo.setBankProince(ysRegionCode.getProvinceCode());
|
||||
stlAccInfo.setBankCity(ysRegionCode.getCityCode());
|
||||
|
||||
param.put("stlAccInfo", stlAccInfo);
|
||||
param.put(YsConstant.MERC_ID, mcs.getMerchantId());
|
||||
|
||||
// String applyImg = entity.getChangeForm();
|
||||
//
|
||||
// RespEntity req = ysServiceV3.req(ReqMethod.changeMercStlAccInfo, param);
|
||||
// if (!YsConfigV3.BIZ_SUCCESS.equals(req.getSubCode())) {
|
||||
// throw new MsgException(req.getSubMsg());
|
||||
// }
|
||||
//
|
||||
// String businessData = req.getBusinessData();
|
||||
// JSONObject bizData = JSON.parseObject(businessData);
|
||||
// String changeSysFlowId = bizData.getString("changeSysFlowId");
|
||||
//
|
||||
|
||||
RespEntity req = ysServiceV3.req(ReqMethod.changeMercStlAccInfo, param);
|
||||
if (!YsConfigV3.BIZ_SUCCESS.equals(req.getSubCode())) {
|
||||
throw new MsgException(req.getSubMsg());
|
||||
}
|
||||
|
||||
String businessData = req.getBusinessData();
|
||||
JSONObject bizData = JSON.parseObject(businessData);
|
||||
String changeSysFlowId = bizData.getString("changeSysFlowId");
|
||||
|
||||
// entity.setApplicationId(changeSysFlowId);
|
||||
// entity.setStatus(MercChangeRecord.Status.AUDITING.getValue());
|
||||
//
|
||||
// if (bankCard.getAccountType().equals(BankCard.ACCOUNT_TYPE_CORPORATE)) {
|
||||
// // 对公结算需要上传开户许可证
|
||||
// imageEditUpload(MerchantImage.ImageType.ACCOUNT_PERMITS, bankCard.getLicenseUrl(), changeSysFlowId);
|
||||
// } else {
|
||||
// // 对私结算需要上传银行卡图片
|
||||
// imageEditUpload(MerchantImage.ImageType.BANK_CARD_FRONT, bankCard.getImgUrl(), changeSysFlowId);
|
||||
// }
|
||||
//
|
||||
// // 非法人结算,传结算人的身份证图片
|
||||
// if (Objects.equals(settleType, Account.SETTLE_TYPE_PRIVATE_ILLEGAL)) {
|
||||
// imageEditUpload(MerchantImage.ImageType.SETTLE_IDCARD_FRONT, idCard.getImgPositive(), changeSysFlowId);
|
||||
// imageEditUpload(MerchantImage.ImageType.SETTLE_IDCARD_BACK, idCard.getImgNegative(), changeSysFlowId);
|
||||
// }
|
||||
//
|
||||
// // 申请表
|
||||
|
||||
if (bankCardDTO.getAccountType().equals(BankCard.ACCOUNT_TYPE_CORPORATE)) {
|
||||
// 对公结算需要上传开户许可证
|
||||
imageEditUpload(MerchantImage.ImageType.ACCOUNT_PERMITS, bankCardDTO.getLicenseUrl(), changeSysFlowId);
|
||||
} else {
|
||||
// 对私结算需要上传银行卡图片
|
||||
imageEditUpload(MerchantImage.ImageType.BANK_CARD_FRONT, bankCardDTO.getImgUrl(), changeSysFlowId);
|
||||
}
|
||||
|
||||
// 非法人结算,传结算人的身份证图片
|
||||
if (Objects.equals(account.getSettleType(), Account.SETTLE_TYPE_PRIVATE_ILLEGAL)) {
|
||||
imageEditUpload(MerchantImage.ImageType.SETTLE_IDCARD_FRONT, accountIdCard.getImgPositive(), changeSysFlowId);
|
||||
imageEditUpload(MerchantImage.ImageType.SETTLE_IDCARD_BACK, accountIdCard.getImgNegative(), changeSysFlowId);
|
||||
}
|
||||
|
||||
// 申请表
|
||||
// imageEditUpload(MerchantImage.ImageType.CHANGE_FORM, applyImg, changeSysFlowId);
|
||||
//
|
||||
// log.debug("云商服3.0基本信息变更发起成功");
|
||||
@@ -1237,7 +1254,7 @@ public class YSAuditServiceV3 implements cn.pluss.platform.channel.ys.YSAuditSer
|
||||
//
|
||||
// noticeService.saveSysNotice(userId, title, remark);
|
||||
// generalPushUtil.sendAllPlatByAlias(Collections.singletonList(userId), title, remark, "1");
|
||||
// }
|
||||
}
|
||||
/**
|
||||
* 变更基本信息
|
||||
*/
|
||||
@@ -1654,6 +1671,14 @@ public class YSAuditServiceV3 implements cn.pluss.platform.channel.ys.YSAuditSer
|
||||
Notify.Cust cust = JSON.parseObject(respEntity.getBusinessData(), Notify.Cust.class);
|
||||
auditResultHandle(cust);
|
||||
}
|
||||
|
||||
public void result(String sysFlowId){
|
||||
RespEntity respEntity = ysServiceV3.req(ReqMethod.queryCustApply, new JSONObject().fluentPut("sysFlowId", sysFlowId));
|
||||
if (!Objects.equals(respEntity.getSubCode(), YsConfigV3.BIZ_SUCCESS)) {
|
||||
throw new MsgException("银盛云商服3.0商户信息状态确认失败: {}", respEntity.getSubMsg());
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 查询签约结果,该操作作为商户最终状态的判断
|
||||
* @param userId 用户id
|
||||
|
||||
@@ -285,7 +285,7 @@ public class AliyunServiceImpl implements AliyunService {
|
||||
if ("403".equals(verifyBankElementResponse.getBody().getCode())){
|
||||
throw new MsgException("24小时内重复查询相同信息超过10次,已锁定,请在12小时后重试。");
|
||||
}
|
||||
if ("428".equals(verifyBankElementResponse.getBody().getCode())){
|
||||
if ("428".equals(verifyBankElementResponse.getBody().getCode()) || "437".equals(verifyBankElementResponse.getBody().getCode())){
|
||||
throw new MsgException("请正确输入相关信息");
|
||||
|
||||
}
|
||||
|
||||
@@ -86,7 +86,7 @@ public interface WxCommonService {
|
||||
* @param request:
|
||||
* @return com.alibaba.fastjson.JSONObject
|
||||
*/
|
||||
JSONObject getJsApiConfigParam(HttpServletRequest request);
|
||||
JSONObject getJsApiConfigParam(String request);
|
||||
|
||||
/**
|
||||
* 获取小程序 scheme 码
|
||||
|
||||
@@ -17,6 +17,12 @@ import org.springframework.web.client.RestTemplate;
|
||||
import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletRequest;
|
||||
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.security.MessageDigest;
|
||||
import java.security.NoSuchAlgorithmException;
|
||||
|
||||
import static cn.pluss.platform.util.WechatSignUtil.byteToHex;
|
||||
|
||||
/**
|
||||
*
|
||||
*@description:
|
||||
@@ -46,46 +52,46 @@ public class WxCommonServiceImpl implements WxCommonService {
|
||||
public String getAccessToken(WxAccessTokenRequest request,Boolean refresh) {
|
||||
checkCommonParams(request);
|
||||
String keyCode = WX_ACCESS_TOKEN_PREFIX_CODE + request.getAppid();
|
||||
String url = API_TOKEN_URL.replace("KEY",request.getAppid()).replace("CODE",WX_ACCESS_TOKEN_PREFIX_CODE).replace("REFRESH",refresh ? "1" : "0");
|
||||
JSONObject result = restTemplate.getForObject(url, JSONObject.class);
|
||||
if(result.getInteger("code") != ResultCode.SUCCESS.code()){
|
||||
CacheInfo cache = cacheInfoService.getCacheInfoByKeyCode(keyCode);
|
||||
if(cache == null){
|
||||
//String url = API_TOKEN_URL.replace("KEY",request.getAppid()).replace("CODE",WX_ACCESS_TOKEN_PREFIX_CODE).replace("REFRESH",refresh ? "1" : "0");
|
||||
//JSONObject result = restTemplate.getForObject(url, JSONObject.class);
|
||||
// if(result.getInteger("code") != ResultCode.SUCCESS.code()){
|
||||
CacheInfo cache = cacheInfoService.getCacheInfoByKeyCode(keyCode);
|
||||
if(cache == null){
|
||||
WxAccessTokenResponse response = WechatUtils.getAccessToken(request);
|
||||
CacheInfo cacheInfo = new CacheInfo(response,request,keyCode);
|
||||
cacheInfoService.save(cacheInfo);
|
||||
return response.getAccess_token();
|
||||
}else{
|
||||
Long time = System.currentTimeMillis() / 1000;
|
||||
if(time >= cache.getExpiresIn() - CacheInfo.MAX_CRITICAL_VALUE){
|
||||
WxAccessTokenResponse response = WechatUtils.getAccessToken(request);
|
||||
CacheInfo cacheInfo = new CacheInfo(response,request,keyCode);
|
||||
cacheInfoService.save(cacheInfo);
|
||||
cacheInfo.setId(cache.getId());
|
||||
cacheInfoService.saveOrUpdate(cacheInfo);
|
||||
return response.getAccess_token();
|
||||
}else{
|
||||
Long time = System.currentTimeMillis() / 1000;
|
||||
if(time >= cache.getExpiresIn() - CacheInfo.MAX_CRITICAL_VALUE){
|
||||
WxAccessTokenResponse response = WechatUtils.getAccessToken(request);
|
||||
CacheInfo cacheInfo = new CacheInfo(response,request,keyCode);
|
||||
cacheInfo.setId(cache.getId());
|
||||
cacheInfoService.saveOrUpdate(cacheInfo);
|
||||
return response.getAccess_token();
|
||||
}else{
|
||||
return cache.getAccessToken();
|
||||
}
|
||||
}
|
||||
}else{
|
||||
CacheInfo cache = cacheInfoService.getCacheInfoByKeyCode(keyCode);
|
||||
JSONObject data = result.getJSONObject("data");
|
||||
if(cache == null){
|
||||
CacheInfo cacheInfo = new CacheInfo(request,keyCode,data.getString("accessToken"),data.getLong("expire"),data.getString("refreshToken"));
|
||||
cacheInfoService.save(cacheInfo);
|
||||
return data.getString("accessToken");
|
||||
}else{
|
||||
if(!cache.getAccessToken().equals(data.getString("accessToken"))){
|
||||
cache.setAccessToken(data.getString("accessToken"));
|
||||
cache.setExpiresIn(data.getLong("expire"));
|
||||
if(StringUtil.isNotEmpty(data.getString("refreshToken"))){
|
||||
cache.setRefreshToken(data.getString("refreshToken"));
|
||||
}
|
||||
cacheInfoService.saveOrUpdate(cache);
|
||||
}
|
||||
return data.getString("accessToken");
|
||||
return cache.getAccessToken();
|
||||
}
|
||||
}
|
||||
// }else{
|
||||
// CacheInfo cache = cacheInfoService.getCacheInfoByKeyCode(keyCode);
|
||||
// JSONObject data = result.getJSONObject("data");
|
||||
// if(cache == null){
|
||||
// CacheInfo cacheInfo = new CacheInfo(request,keyCode,data.getString("accessToken"),data.getLong("expire"),data.getString("refreshToken"));
|
||||
// cacheInfoService.save(cacheInfo);
|
||||
// return data.getString("accessToken");
|
||||
// }else{
|
||||
// if(!cache.getAccessToken().equals(data.getString("accessToken"))){
|
||||
// cache.setAccessToken(data.getString("accessToken"));
|
||||
// cache.setExpiresIn(data.getLong("expire"));
|
||||
// if(StringUtil.isNotEmpty(data.getString("refreshToken"))){
|
||||
// cache.setRefreshToken(data.getString("refreshToken"));
|
||||
// }
|
||||
// cacheInfoService.saveOrUpdate(cache);
|
||||
// }
|
||||
// return data.getString("accessToken");
|
||||
// }
|
||||
// }
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -229,15 +235,37 @@ public class WxCommonServiceImpl implements WxCommonService {
|
||||
* @return com.alibaba.fastjson.JSONObject
|
||||
*/
|
||||
@Override
|
||||
public JSONObject getJsApiConfigParam(HttpServletRequest request) {
|
||||
public JSONObject getJsApiConfigParam(String request) {
|
||||
JSONObject result = new JSONObject(4);
|
||||
WxAccessTokenRequest req = WxAccessTokenRequest.buidWxToken(ParametersUtil.APPID,ParametersUtil.APPSECRET);
|
||||
WxAccessTokenRequest req = WxAccessTokenRequest.buidWxToken(ParametersUtil.APPID_IOS,ParametersUtil.APP_SECRET_IOS);
|
||||
String ticket = this.getJsapiTicket(req, "jsapi");
|
||||
String noncestr = StringUtil.generateMixStr(10);
|
||||
Long timestamp = System.currentTimeMillis() / 1000;
|
||||
String pUrl = request.getRequestURL().toString() + "?" + request.getQueryString();
|
||||
// String pUrl = request.getRequestURL().toString() + "?" + request.getQueryString();
|
||||
String pUrl = request;
|
||||
System.out.println(pUrl);
|
||||
String signContent = "jsapi_ticket=" + ticket + "&noncestr="+noncestr + "×tamp="+ timestamp + "&url="+pUrl;
|
||||
String sign = SignUtils.sha1Encrypt(signContent);
|
||||
String signature = "";
|
||||
try
|
||||
{
|
||||
MessageDigest crypt = MessageDigest.getInstance("SHA-1");
|
||||
crypt.reset();
|
||||
crypt.update(signContent.getBytes("UTF-8"));
|
||||
signature = byteToHex(crypt.digest());
|
||||
}
|
||||
catch (NoSuchAlgorithmException e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
}
|
||||
catch (UnsupportedEncodingException e)
|
||||
{
|
||||
e.printStackTrace();
|
||||
}
|
||||
|
||||
System.out.println(sign);
|
||||
System.out.println(signature);
|
||||
|
||||
result.put("signature",sign);
|
||||
result.put("nonceStr",noncestr);
|
||||
result.put("timestamp",timestamp);
|
||||
|
||||
@@ -250,7 +250,7 @@ public class YsCertServiceImpl implements MerchantCertService {
|
||||
|
||||
MerchantBaseInfo mbi = mbiService.getMerchantBaseInfoByMerchantCode(mcs.getMerchantCode());
|
||||
|
||||
String pushMsg = "您好!您的商户微信认证因“##”被驳回,请联系收银呗客服修改资料并重新审核";
|
||||
String pushMsg = "您好!您的商户微信认证因“##”被驳回,请联系快银收银客服修改资料并重新审核";
|
||||
pushMsg = pushMsg.replace("##", wxCertResult.getString("reject_reason"));
|
||||
generalPushUtil.sendAllPlatByAlias(Collections.singletonList(mbi.getUserId()), "商户微信认证通知", pushMsg, "1");
|
||||
|
||||
|
||||
@@ -29,6 +29,14 @@ public enum ReqMethod {
|
||||
* 支付宝实名认证状态查询
|
||||
*/
|
||||
aliAuthStatus(Req.Url.PREFIX + "pregate/alipay/getAuthState"),
|
||||
/**
|
||||
* 新增报备
|
||||
*/
|
||||
Reporting(Req.Url.PREFIX+"report/scan/union/reportAdd"),
|
||||
/**
|
||||
* 新增/修改appid
|
||||
*/
|
||||
appIdAddOrUpdate(Req.Url.PREFIX+"report/scan/union/appIdAddOrUpdate")
|
||||
;
|
||||
|
||||
private final String url;
|
||||
|
||||
Reference in New Issue
Block a user