|
@@ -117,135 +117,133 @@ public class ChannelWithdrawController extends BaseApiController {
|
|
@Autowired
|
|
@Autowired
|
|
private IYsCallLogService ysCallLogService;
|
|
private IYsCallLogService ysCallLogService;
|
|
|
|
|
|
- @ApiOperation(value = "银行卡实名认证绑定")
|
|
|
|
- @PostMapping("/withdraw/bankCardAuth")
|
|
|
|
- public AjaxResult bankCardAuth(@Validated @RequestBody ChannelBankCardCreateParam param) {
|
|
|
|
- Long channelId = SecurityUtils.getLoginUser().getChannelId();
|
|
|
|
-
|
|
|
|
- // 判断是否已经绑定过银行卡
|
|
|
|
- int count = channelBankCardService.count(new LambdaQueryWrapper<ChannelBankCard>()
|
|
|
|
- .eq(ChannelBankCard::getChannelId, channelId));
|
|
|
|
- if (count > 0) {
|
|
|
|
- return AjaxResult.error("已经绑定过银行卡");
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
-
|
|
|
|
- OnlineReqDataVo req = new OnlineReqDataVo();
|
|
|
|
- //商户在银盛支付平台开设的用户号[商户号],接入时需要替换成自己的
|
|
|
|
- req.setPartnerId(partnerId);
|
|
|
|
- req.setReqUrl(YsServerApiConstants.OPEN_API);
|
|
|
|
- req.setPrivateKeyFilePath(privateKeyPath);
|
|
|
|
- req.setPrivateKeyPassword(privateKeyPass);
|
|
|
|
- req.setYsPublicKeyFilePath(publicKeyPath);
|
|
|
|
- //银行实名认证三要素下单业务参数
|
|
|
|
- Map<String, Object> bizContent = new HashMap<>();
|
|
|
|
- String tradeNo = DateUtil.getDateNowYmd() + DateUtil.getRandom(14);
|
|
|
|
- //商户生成的订单号,生成规则前8位必须为交易日期,如20180525,范围跨度支持包含当天在内的前后一天
|
|
|
|
- bizContent.put("out_trade_no", tradeNo);
|
|
|
|
- //商户日期(该参数做交易与查询时需要一致)该日期需在当日的前后一天时间范围之内
|
|
|
|
- bizContent.put("shopdate", DateUtil.getDateNowYmd());
|
|
|
|
- //实名认证姓名--请填写真实信息
|
|
|
|
- bizContent.put("bank_account_name", param.getUserName());
|
|
|
|
- //银行帐号,支持对公对私
|
|
|
|
- bizContent.put("bank_account_no", param.getCardNo());
|
|
|
|
- //证件号码,目前只支持身份证
|
|
|
|
- bizContent.put("id_card", param.getIdCard());
|
|
|
|
- req.setParamData(bizContent);
|
|
|
|
- String result = null;
|
|
|
|
- try{
|
|
|
|
- logger.info("银行实名认证三要素调用sdk接口addScanMerc请求入参为:"+ JSONObject.toJSONString(req));
|
|
|
|
- //根据返回结果处理自己的业务逻辑,result内容详见接口文档
|
|
|
|
- result = BankAuthorityApi.sendBankAuthThreePrecise(req);
|
|
|
|
- }catch (Exception e){
|
|
|
|
- logger.info("银行实名认证三要素失败:"+ e.getMessage());
|
|
|
|
- }
|
|
|
|
- logger.info("银行实名认证三要素result =" + result);
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-
|
|
|
|
-// Map<String, String> mapData = new HashMap<>();
|
|
|
|
-// mapData.put("partner_id", partnerId);
|
|
|
|
-// mapData.put("method", YsPayMethodConstants.BANK_CARD_AUTH_METHOD);
|
|
|
|
-// mapData.put("timestamp", DateUtil.getDateNow());
|
|
|
|
-// mapData.put("sign_type", "RSA");
|
|
|
|
-// mapData.put("charset", "utf-8");
|
|
|
|
-// mapData.put("version", "3.0");
|
|
|
|
|
|
+// @ApiOperation(value = "银行卡实名认证绑定")
|
|
|
|
+// @PostMapping("/withdraw/bankCardAuth")
|
|
|
|
+// public AjaxResult bankCardAuth(@Validated @RequestBody ChannelBankCardCreateParam param) {
|
|
|
|
+// Long channelId = SecurityUtils.getLoginUser().getChannelId();
|
|
//
|
|
//
|
|
-// JSONObject json = new JSONObject();
|
|
|
|
-// String tradeNo = DateUtil.getDateNowYmd() + DateUtil.getRandom(14);
|
|
|
|
-// json.put("out_trade_no", tradeNo);
|
|
|
|
-// json.put("shopdate", DateUtil.getDateNowYmd());
|
|
|
|
-// json.put("bank_account_name", param.getUserName());
|
|
|
|
-// json.put("bank_account_no", param.getCardNo());
|
|
|
|
-// json.put("id_card", param.getIdCard());
|
|
|
|
-// mapData.put("biz_content", json.toString());
|
|
|
|
-// //参数签名
|
|
|
|
-// try {
|
|
|
|
-// String sign = YsOnlineSignUtils.sign(mapData, privateKeyPass, privateKeyPath);
|
|
|
|
-// mapData.put("sign", sign);
|
|
|
|
-// logger.info("认证信息签名成功,sign = " + sign);
|
|
|
|
-// } catch (Exception e) {
|
|
|
|
-// System.err.println("签名异常" + e);
|
|
|
|
|
|
+// // 判断是否已经绑定过银行卡
|
|
|
|
+// int count = channelBankCardService.count(new LambdaQueryWrapper<ChannelBankCard>()
|
|
|
|
+// .eq(ChannelBankCard::getChannelId, channelId));
|
|
|
|
+// if (count > 0) {
|
|
|
|
+// return AjaxResult.error("已经绑定过银行卡");
|
|
// }
|
|
// }
|
|
//
|
|
//
|
|
|
|
+//
|
|
|
|
+// OnlineReqDataVo req = new OnlineReqDataVo();
|
|
|
|
+// //商户在银盛支付平台开设的用户号[商户号],接入时需要替换成自己的
|
|
|
|
+// req.setPartnerId(partnerId);
|
|
|
|
+// req.setReqUrl(YsServerApiConstants.OPEN_API);
|
|
|
|
+// req.setPrivateKeyFilePath(privateKeyPath);
|
|
|
|
+// req.setPrivateKeyPassword(privateKeyPass);
|
|
|
|
+// req.setYsPublicKeyFilePath(publicKeyPath);
|
|
|
|
+// //银行实名认证三要素下单业务参数
|
|
|
|
+// Map<String, Object> bizContent = new HashMap<>();
|
|
|
|
+// String tradeNo = DateUtil.getDateNowYmd() + DateUtil.getRandom(14);
|
|
|
|
+// //商户生成的订单号,生成规则前8位必须为交易日期,如20180525,范围跨度支持包含当天在内的前后一天
|
|
|
|
+// bizContent.put("out_trade_no", tradeNo);
|
|
|
|
+// //商户日期(该参数做交易与查询时需要一致)该日期需在当日的前后一天时间范围之内
|
|
|
|
+// bizContent.put("shopdate", DateUtil.getDateNowYmd());
|
|
|
|
+// //实名认证姓名--请填写真实信息
|
|
|
|
+// bizContent.put("bank_account_name", param.getUserName());
|
|
|
|
+// //银行帐号,支持对公对私
|
|
|
|
+// bizContent.put("bank_account_no", param.getCardNo());
|
|
|
|
+// //证件号码,目前只支持身份证
|
|
|
|
+// bizContent.put("id_card", param.getIdCard());
|
|
|
|
+// req.setParamData(bizContent);
|
|
// String result = null;
|
|
// String result = null;
|
|
-// try {
|
|
|
|
-// logger.info("银行实名认证三要素调用sdk接口addScanMerc请求入参为:"+ JSONObject.toJSONString(mapData));
|
|
|
|
-// result = OkHttpUtil.post("https://openapi.ysepay.com/gateway.do", mapData);
|
|
|
|
-// } catch (Exception e) {
|
|
|
|
|
|
+// try{
|
|
|
|
+// logger.info("银行实名认证三要素调用sdk接口addScanMerc请求入参为:"+ JSONObject.toJSONString(req));
|
|
|
|
+// //根据返回结果处理自己的业务逻辑,result内容详见接口文档
|
|
|
|
+// result = BankAuthorityApi.sendBankAuthThreePrecise(req);
|
|
|
|
+// }catch (Exception e){
|
|
// logger.info("银行实名认证三要素失败:"+ e.getMessage());
|
|
// logger.info("银行实名认证三要素失败:"+ e.getMessage());
|
|
|
|
+// }
|
|
|
|
+// logger.info("银行实名认证三要素result =" + result);
|
|
|
|
+//
|
|
|
|
+//// Map<String, String> mapData = new HashMap<>();
|
|
|
|
+//// mapData.put("partner_id", partnerId);
|
|
|
|
+//// mapData.put("method", YsPayMethodConstants.BANK_CARD_AUTH_METHOD);
|
|
|
|
+//// mapData.put("timestamp", DateUtil.getDateNow());
|
|
|
|
+//// mapData.put("sign_type", "RSA");
|
|
|
|
+//// mapData.put("charset", "utf-8");
|
|
|
|
+//// mapData.put("version", "3.0");
|
|
|
|
+////
|
|
|
|
+//// JSONObject json = new JSONObject();
|
|
|
|
+//// String tradeNo = DateUtil.getDateNowYmd() + DateUtil.getRandom(14);
|
|
|
|
+//// json.put("out_trade_no", tradeNo);
|
|
|
|
+//// json.put("shopdate", DateUtil.getDateNowYmd());
|
|
|
|
+//// json.put("bank_account_name", param.getUserName());
|
|
|
|
+//// json.put("bank_account_no", param.getCardNo());
|
|
|
|
+//// json.put("id_card", param.getIdCard());
|
|
|
|
+//// mapData.put("biz_content", json.toString());
|
|
|
|
+//// //参数签名
|
|
|
|
+//// try {
|
|
|
|
+//// String sign = YsOnlineSignUtils.sign(mapData, privateKeyPass, privateKeyPath);
|
|
|
|
+//// mapData.put("sign", sign);
|
|
|
|
+//// logger.info("认证信息签名成功,sign = " + sign);
|
|
|
|
+//// } catch (Exception e) {
|
|
|
|
+//// System.err.println("签名异常" + e);
|
|
|
|
+//// }
|
|
|
|
+////
|
|
|
|
+//// String result = null;
|
|
|
|
+//// try {
|
|
|
|
+//// logger.info("银行实名认证三要素调用sdk接口addScanMerc请求入参为:"+ JSONObject.toJSONString(mapData));
|
|
|
|
+//// result = OkHttpUtil.post("https://openapi.ysepay.com/gateway.do", mapData);
|
|
|
|
+//// } catch (Exception e) {
|
|
|
|
+//// logger.info("银行实名认证三要素失败:"+ e.getMessage());
|
|
|
|
+////
|
|
|
|
+//// }
|
|
|
|
+//
|
|
|
|
+// // 解析结果
|
|
|
|
+//// JSONObject jsonObject = JSON.parseObject(result, Feature.OrderedField);
|
|
|
|
+//// // 加签内容
|
|
|
|
+//// String content = JSONObject.toJSONString(
|
|
|
|
+//// jsonObject.get("ysepay_authenticate_three_key_element_precise_response"),
|
|
|
|
+//// SerializerFeature.WriteMapNullValue);
|
|
|
|
+//// JSONObject contentJsonObject = JSON.parseObject(content);
|
|
|
|
+////
|
|
|
|
+//// // 校验结果
|
|
|
|
+//// String orderStatus = (String) contentJsonObject.get("order_status");
|
|
|
|
+//// if (StringUtils.isBlank(orderStatus) || !"SUCCESS".equals(orderStatus)) {
|
|
|
|
+//// return AjaxResult.error("绑卡认证失败,请核实信息正确性");
|
|
|
|
+//// }
|
|
//
|
|
//
|
|
|
|
+//
|
|
|
|
+// // 保存银行认证的请求记录
|
|
|
|
+// YsCallLog ysCallLog = new YsCallLog();
|
|
|
|
+// ysCallLog.setBizId(tradeNo);
|
|
|
|
+// ysCallLog.setBizType(YsCallBizTypeEnum.BANK_CARD_AUTH);
|
|
|
|
+// ysCallLog.setInterfaceId(YsPayMethodConstants.BANK_CARD_AUTH_METHOD);
|
|
|
|
+// ysCallLog.setReqJson(JSONObject.toJSONString(bizContent));
|
|
|
|
+// ysCallLog.setResJson(result);
|
|
|
|
+// ysCallLogService.save(ysCallLog);
|
|
|
|
+//
|
|
|
|
+// if (StringUtils.isBlank(result)) {
|
|
|
|
+// logger.error("银行实名认证三要素失败,res为空,req =" + JSONObject.toJSONString(bizContent));
|
|
|
|
+// return AjaxResult.error("认证失败");
|
|
// }
|
|
// }
|
|
-
|
|
|
|
- // 解析结果
|
|
|
|
-// JSONObject jsonObject = JSON.parseObject(result, Feature.OrderedField);
|
|
|
|
-// // 加签内容
|
|
|
|
-// String content = JSONObject.toJSONString(
|
|
|
|
-// jsonObject.get("ysepay_authenticate_three_key_element_precise_response"),
|
|
|
|
-// SerializerFeature.WriteMapNullValue);
|
|
|
|
-// JSONObject contentJsonObject = JSON.parseObject(content);
|
|
|
|
//
|
|
//
|
|
// // 校验结果
|
|
// // 校验结果
|
|
-// String orderStatus = (String) contentJsonObject.get("order_status");
|
|
|
|
|
|
+// JSONObject response = JSONObject.parseObject(result);
|
|
|
|
+// String orderStatus = (String) response.get("order_status");
|
|
// if (StringUtils.isBlank(orderStatus) || !"SUCCESS".equals(orderStatus)) {
|
|
// if (StringUtils.isBlank(orderStatus) || !"SUCCESS".equals(orderStatus)) {
|
|
// return AjaxResult.error("绑卡认证失败,请核实信息正确性");
|
|
// return AjaxResult.error("绑卡认证失败,请核实信息正确性");
|
|
// }
|
|
// }
|
|
-
|
|
|
|
-
|
|
|
|
- // 保存银行认证的请求记录
|
|
|
|
- YsCallLog ysCallLog = new YsCallLog();
|
|
|
|
- ysCallLog.setBizId(tradeNo);
|
|
|
|
- ysCallLog.setBizType(YsCallBizTypeEnum.BANK_CARD_AUTH);
|
|
|
|
- ysCallLog.setInterfaceId(YsPayMethodConstants.BANK_CARD_AUTH_METHOD);
|
|
|
|
- ysCallLog.setReqJson(JSONObject.toJSONString(bizContent));
|
|
|
|
- ysCallLog.setResJson(result);
|
|
|
|
- ysCallLogService.save(ysCallLog);
|
|
|
|
-
|
|
|
|
- if (StringUtils.isBlank(result)) {
|
|
|
|
- logger.error("银行实名认证三要素失败,res为空,req =" + JSONObject.toJSONString(bizContent));
|
|
|
|
- return AjaxResult.error("认证失败");
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- // 校验结果
|
|
|
|
- JSONObject response = JSONObject.parseObject(result);
|
|
|
|
- String orderStatus = (String) response.get("order_status");
|
|
|
|
- if (StringUtils.isBlank(orderStatus) || !"SUCCESS".equals(orderStatus)) {
|
|
|
|
- return AjaxResult.error("绑卡认证失败,请核实信息正确性");
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- // 进行绑卡
|
|
|
|
- ChannelBankCard channelBankCard = new ChannelBankCard();
|
|
|
|
- channelBankCard.setChannelId(channelId);
|
|
|
|
- channelBankCard.setBankName(param.getBankName());
|
|
|
|
- channelBankCard.setIdCard(param.getIdCard());
|
|
|
|
- channelBankCard.setCardNo(param.getCardNo());
|
|
|
|
- channelBankCard.setUserName(param.getUserName());
|
|
|
|
- boolean res = channelBankCardService.save(channelBankCard);
|
|
|
|
- if (!res) {
|
|
|
|
- return AjaxResult.error("绑卡失败");
|
|
|
|
- }
|
|
|
|
- return AjaxResult.success();
|
|
|
|
- }
|
|
|
|
|
|
+//
|
|
|
|
+// // 进行绑卡
|
|
|
|
+// ChannelBankCard channelBankCard = new ChannelBankCard();
|
|
|
|
+// channelBankCard.setChannelId(channelId);
|
|
|
|
+// channelBankCard.setBankName(param.getBankName());
|
|
|
|
+//// channelBankCard.setIdCard(param.getIdCard());
|
|
|
|
+// channelBankCard.setCardNo(param.getCardNo());
|
|
|
|
+// channelBankCard.setUserName(param.getUserName());
|
|
|
|
+// boolean res = channelBankCardService.save(channelBankCard);
|
|
|
|
+// if (!res) {
|
|
|
|
+// return AjaxResult.error("绑卡失败");
|
|
|
|
+// }
|
|
|
|
+// return AjaxResult.success();
|
|
|
|
+// }
|
|
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -265,13 +263,11 @@ public class ChannelWithdrawController extends BaseApiController {
|
|
if (param.getMoney() > channel.getMoney() ) {
|
|
if (param.getMoney() > channel.getMoney() ) {
|
|
return AjaxResult.error("提现金额超出了余额");
|
|
return AjaxResult.error("提现金额超出了余额");
|
|
}
|
|
}
|
|
- if (param.getMoney() < 500) {
|
|
|
|
- return AjaxResult.error("提现金额不能小于5元");
|
|
|
|
- }
|
|
|
|
- // 固定1元手续费
|
|
|
|
- int fixedFee = 100;
|
|
|
|
|
|
+// if (param.getMoney() < 500) {
|
|
|
|
+// return AjaxResult.error("提现金额不能小于5元");
|
|
|
|
+// }
|
|
int feeAmt = new BigDecimal(param.getMoney()).multiply(feeRate)
|
|
int feeAmt = new BigDecimal(param.getMoney()).multiply(feeRate)
|
|
- .divide(new BigDecimal(100), 0, RoundingMode.HALF_UP).intValue() + fixedFee;
|
|
|
|
|
|
+ .divide(new BigDecimal(100), 0, RoundingMode.HALF_UP).intValue();
|
|
ChannelWithdraw channelWithdraw = new ChannelWithdraw();
|
|
ChannelWithdraw channelWithdraw = new ChannelWithdraw();
|
|
if (param.getMoney() + feeAmt > channel.getMoney()) {
|
|
if (param.getMoney() + feeAmt > channel.getMoney()) {
|
|
channelWithdraw.setMoney(new BigDecimal(channel.getMoney()).divide(new BigDecimal(1).add(feeRate.divide(new BigDecimal(100), 4, RoundingMode.HALF_UP)), 0, RoundingMode.HALF_UP).intValue());
|
|
channelWithdraw.setMoney(new BigDecimal(channel.getMoney()).divide(new BigDecimal(1).add(feeRate.divide(new BigDecimal(100), 4, RoundingMode.HALF_UP)), 0, RoundingMode.HALF_UP).intValue());
|
|
@@ -283,7 +279,7 @@ public class ChannelWithdrawController extends BaseApiController {
|
|
channelWithdraw.setUserName(param.getUserName());
|
|
channelWithdraw.setUserName(param.getUserName());
|
|
channelWithdraw.setCardNo(param.getCardNo());
|
|
channelWithdraw.setCardNo(param.getCardNo());
|
|
channelWithdraw.setBankName(param.getBankName());
|
|
channelWithdraw.setBankName(param.getBankName());
|
|
-// channelWithdraw.setBranchName(param.getBranchName());
|
|
|
|
|
|
+ channelWithdraw.setBranchName(param.getBranchName());
|
|
|
|
|
|
// 缓存订单结算对象
|
|
// 缓存订单结算对象
|
|
redisCache.setCacheObject(CHANNEL_WITHDRAW_CACHE_KEY + channelId, channelWithdraw, 1, TimeUnit.MINUTES);
|
|
redisCache.setCacheObject(CHANNEL_WITHDRAW_CACHE_KEY + channelId, channelWithdraw, 1, TimeUnit.MINUTES);
|