|
|
@ -88,6 +88,8 @@ public class HanHaiWaterController extends JeecgController<HanHaiWater, IHanHaiW |
|
|
|
private String wxsSerialNo; |
|
|
|
@Value("${wxpay.apiV3Key}") |
|
|
|
private String apiV3Key; |
|
|
|
@Value("${wxpay.withdrawalNotifyUrl}") |
|
|
|
private String withdrawalNotifyUrl; |
|
|
|
|
|
|
|
/** |
|
|
|
* 分页列表查询 |
|
|
@ -155,7 +157,7 @@ public class HanHaiWaterController extends JeecgController<HanHaiWater, IHanHaiW |
|
|
|
transferBatchesRequest.setTransferRemark("商家提现"); |
|
|
|
transferBatchesRequest.setOpenid(hanHaiMember.getAppletOpenid()); |
|
|
|
transferBatchesRequest.setTransferSceneId("1005"); |
|
|
|
transferBatchesRequest.setNotifyUrl(transferBatchUrl); |
|
|
|
transferBatchesRequest.setNotifyUrl(withdrawalNotifyUrl); |
|
|
|
String serialNo = null; |
|
|
|
//加密真实姓名 |
|
|
|
try { |
|
|
@ -202,6 +204,8 @@ public class HanHaiWaterController extends JeecgController<HanHaiWater, IHanHaiW |
|
|
|
hanHaiWater1.setState(1); |
|
|
|
hanHaiWater1.setSuccessTime(new Date()); |
|
|
|
hanHaiWater1.setPackageInfo(transferBatchesResp.getPackageInfo()); |
|
|
|
hanHaiWater1.setOutBatchNo(transferBatchesResp.getOutBillNo()); |
|
|
|
hanHaiWater1.setBatchId(transferBatchesResp.getTransferBillNo()); |
|
|
|
hanHaiWaterService.updateById(hanHaiWater1); |
|
|
|
|
|
|
|
|
|
|
@ -279,69 +283,69 @@ public class HanHaiWaterController extends JeecgController<HanHaiWater, IHanHaiW |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@PostMapping(value = "/withdrawal") |
|
|
|
public Result<?> withdrawal (@RequestBody HanHaiWater hanHaiWater) { |
|
|
|
HanHaiMember hanHaiMember = hanHaiMemberService.getById(hanHaiWater.getUserId()); |
|
|
|
|
|
|
|
Integer n = (Integer) redisUtil.get("WITHDRAWAL:" + hanHaiWater.getId()); |
|
|
|
if (n != null) { |
|
|
|
throw new JeecgBootException("请勿重复点击,后果自负!"); |
|
|
|
} |
|
|
|
redisUtil.set("WITHDRAWAL:" + hanHaiWater.getId(), 1, 5); |
|
|
|
|
|
|
|
//微信-商家转账到零钱 |
|
|
|
|
|
|
|
String idStr = "H" + IdWorker.getIdStr(); |
|
|
|
TransferBatchesRequest transferBatchesRequest = new TransferBatchesRequest(); |
|
|
|
|
|
|
|
transferBatchesRequest.setAppid(appId); |
|
|
|
transferBatchesRequest.setOutBillNo(idStr); |
|
|
|
transferBatchesRequest.setTransferRemark("商家提现"); |
|
|
|
transferBatchesRequest.setOpenid(hanHaiMember.getAppletOpenid()); |
|
|
|
transferBatchesRequest.setTransferSceneId("1000"); |
|
|
|
String serialNo = null; |
|
|
|
//加密真实姓名 |
|
|
|
try { |
|
|
|
|
|
|
|
X509Certificate certificate = weChatPayConfig2.getVerifier().getValidCertificate(); |
|
|
|
serialNo = certificate.getSerialNumber().toString(16).toUpperCase(); |
|
|
|
//这里放真实姓名,目前你的数据库表没有这个字段 |
|
|
|
String encryptOAEP = RsaCryptoUtil.encryptOAEP("廖志翔", certificate); |
|
|
|
transferBatchesRequest.setUserName(encryptOAEP); |
|
|
|
} catch (Exception e) { |
|
|
|
log.info("真实姓名加密失败"); |
|
|
|
e.printStackTrace(); |
|
|
|
throw new JeecgBootException("真实姓名加密失败"); |
|
|
|
} |
|
|
|
transferBatchesRequest.setTransferAmount(MoneyUtil.Yuan2Fen(hanHaiWater.getPrice().doubleValue())); |
|
|
|
List<TransferBatchesDetailsRequest> transferBatchesDetailsRequests = new ArrayList<>(); |
|
|
|
TransferBatchesDetailsRequest transferBatchesDetailsRequest = new TransferBatchesDetailsRequest(); |
|
|
|
transferBatchesDetailsRequest.setInfoType("1000-现金营销"); |
|
|
|
transferBatchesDetailsRequest.setInfoContent("商品返利"); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
transferBatchesDetailsRequests.add(transferBatchesDetailsRequest); |
|
|
|
transferBatchesRequest.setTransferDetailList(transferBatchesDetailsRequests); |
|
|
|
String jsonString = JSONObject.toJSONString(transferBatchesRequest); |
|
|
|
|
|
|
|
|
|
|
|
String postTransBatRequest = HttpRequestUtil.postTransBatRequest(transferBatchUrl, jsonString, serialNo, wxsSerialNo, mchId, pemPath); |
|
|
|
log.error("返回结果1:" + postTransBatRequest); |
|
|
|
TransferBatchesResp transferBatchesResp = JSON.parseObject(postTransBatRequest, TransferBatchesResp.class); |
|
|
|
log.error("返回结果2:" + transferBatchesResp); |
|
|
|
if (transferBatchesResp == null || org.apache.commons.lang3.StringUtils.isBlank(transferBatchesResp.getOutBillNo())|| StringUtils.equals(transferBatchesResp.getState(),"FAIL")) { |
|
|
|
throw new JeecgBootException("打款失败"); |
|
|
|
} |
|
|
|
|
|
|
|
//这里写自己的逻辑,比如改变这条记录的状态,变成提现成功 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return Result.OK("提现成功"); |
|
|
|
|
|
|
|
} |
|
|
|
// @PostMapping(value = "/withdrawal") |
|
|
|
// public Result<?> withdrawal (@RequestBody HanHaiWater hanHaiWater) { |
|
|
|
// HanHaiMember hanHaiMember = hanHaiMemberService.getById(hanHaiWater.getUserId()); |
|
|
|
// |
|
|
|
// Integer n = (Integer) redisUtil.get("WITHDRAWAL:" + hanHaiWater.getId()); |
|
|
|
// if (n != null) { |
|
|
|
// throw new JeecgBootException("请勿重复点击,后果自负!"); |
|
|
|
// } |
|
|
|
// redisUtil.set("WITHDRAWAL:" + hanHaiWater.getId(), 1, 5); |
|
|
|
// |
|
|
|
// //微信-商家转账到零钱 |
|
|
|
// |
|
|
|
// String idStr = "H" + IdWorker.getIdStr(); |
|
|
|
// TransferBatchesRequest transferBatchesRequest = new TransferBatchesRequest(); |
|
|
|
// |
|
|
|
// transferBatchesRequest.setAppid(appId); |
|
|
|
// transferBatchesRequest.setOutBillNo(idStr); |
|
|
|
// transferBatchesRequest.setTransferRemark("商家提现"); |
|
|
|
// transferBatchesRequest.setOpenid(hanHaiMember.getAppletOpenid()); |
|
|
|
// transferBatchesRequest.setTransferSceneId("1000"); |
|
|
|
// String serialNo = null; |
|
|
|
// //加密真实姓名 |
|
|
|
// try { |
|
|
|
// |
|
|
|
// X509Certificate certificate = weChatPayConfig2.getVerifier().getValidCertificate(); |
|
|
|
// serialNo = certificate.getSerialNumber().toString(16).toUpperCase(); |
|
|
|
// //这里放真实姓名,目前你的数据库表没有这个字段 |
|
|
|
// String encryptOAEP = RsaCryptoUtil.encryptOAEP("廖志翔", certificate); |
|
|
|
// transferBatchesRequest.setUserName(encryptOAEP); |
|
|
|
// } catch (Exception e) { |
|
|
|
// log.info("真实姓名加密失败"); |
|
|
|
// e.printStackTrace(); |
|
|
|
// throw new JeecgBootException("真实姓名加密失败"); |
|
|
|
// } |
|
|
|
// transferBatchesRequest.setTransferAmount(MoneyUtil.Yuan2Fen(hanHaiWater.getPrice().doubleValue())); |
|
|
|
// List<TransferBatchesDetailsRequest> transferBatchesDetailsRequests = new ArrayList<>(); |
|
|
|
// TransferBatchesDetailsRequest transferBatchesDetailsRequest = new TransferBatchesDetailsRequest(); |
|
|
|
// transferBatchesDetailsRequest.setInfoType("1000-现金营销"); |
|
|
|
// transferBatchesDetailsRequest.setInfoContent("商品返利"); |
|
|
|
// |
|
|
|
// |
|
|
|
// |
|
|
|
// transferBatchesDetailsRequests.add(transferBatchesDetailsRequest); |
|
|
|
// transferBatchesRequest.setTransferDetailList(transferBatchesDetailsRequests); |
|
|
|
// String jsonString = JSONObject.toJSONString(transferBatchesRequest); |
|
|
|
// |
|
|
|
// |
|
|
|
// String postTransBatRequest = HttpRequestUtil.postTransBatRequest(transferBatchUrl, jsonString, serialNo, wxsSerialNo, mchId, pemPath); |
|
|
|
// log.error("返回结果1:" + postTransBatRequest); |
|
|
|
// TransferBatchesResp transferBatchesResp = JSON.parseObject(postTransBatRequest, TransferBatchesResp.class); |
|
|
|
// log.error("返回结果2:" + transferBatchesResp); |
|
|
|
// if (transferBatchesResp == null || org.apache.commons.lang3.StringUtils.isBlank(transferBatchesResp.getOutBillNo())|| StringUtils.equals(transferBatchesResp.getState(),"FAIL")) { |
|
|
|
// throw new JeecgBootException("打款失败"); |
|
|
|
// } |
|
|
|
// |
|
|
|
// //这里写自己的逻辑,比如改变这条记录的状态,变成提现成功 |
|
|
|
// |
|
|
|
// |
|
|
|
// |
|
|
|
// |
|
|
|
// return Result.OK("提现成功"); |
|
|
|
// |
|
|
|
// } |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -352,6 +356,7 @@ public class HanHaiWaterController extends JeecgController<HanHaiWater, IHanHaiW |
|
|
|
@PostMapping("/withdrawal/notify") |
|
|
|
public Object withdrawalNotify(@RequestBody TransferBatchesNotifyResp transferBatchesNotifyResp) throws GeneralSecurityException, IOException { |
|
|
|
|
|
|
|
System.out.println("回调 ------ 领取成功"); |
|
|
|
log.info("回调内容:"+transferBatchesNotifyResp.toString()); |
|
|
|
String associatedData = "mch_payment"; |
|
|
|
String decryptToString = new AesUtil(apiV3Key.getBytes(StandardCharsets.UTF_8)).decryptToString(associatedData.getBytes(StandardCharsets.UTF_8), transferBatchesNotifyResp.getResource().getNonce().getBytes(StandardCharsets.UTF_8), transferBatchesNotifyResp.getResource().getCiphertext()); |
|
|
@ -365,7 +370,7 @@ public class HanHaiWaterController extends JeecgController<HanHaiWater, IHanHaiW |
|
|
|
|
|
|
|
log.info("解密内容转换:"+transferBatchResourceDataResp.toString()); |
|
|
|
|
|
|
|
HanHaiWater hotelBalanceLog = hanHaiWaterService.lambdaQuery().eq(HanHaiWater::getPackageInfo, transferBatchResourceDataResp.getOutBillNo()).one(); |
|
|
|
HanHaiWater hotelBalanceLog = hanHaiWaterService.lambdaQuery().eq(HanHaiWater::getOutBatchNo, transferBatchResourceDataResp.getOutBillNo()).one(); |
|
|
|
|
|
|
|
Map<String, Object> map = new HashMap<>(); |
|
|
|
|
|
|
|