1
This commit is contained in:
parent
cbfed2e429
commit
00a190ce31
2 changed files with 48 additions and 44 deletions
|
|
@ -154,7 +154,8 @@ public class ApiWeiXinPayController {
|
||||||
out = resp.getWriter();
|
out = resp.getWriter();
|
||||||
out.write(result);
|
out.write(result);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.error("【工商银行】微信支付回调处理失败,请检查原因!!!,{}", e.getMessage());
|
log.error("【工商银行】微信支付回调处理失败,请检查原因!!!,{}, {}", e.getMessage());
|
||||||
|
e.printStackTrace();
|
||||||
} finally {
|
} finally {
|
||||||
if(out != null){
|
if(out != null){
|
||||||
out.flush();
|
out.flush();
|
||||||
|
|
@ -207,6 +208,7 @@ public class ApiWeiXinPayController {
|
||||||
out.write(result);
|
out.write(result);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
log.error("【工商银行】微信支付回调处理失败,请检查原因!!!,{}", e.getMessage());
|
log.error("【工商银行】微信支付回调处理失败,请检查原因!!!,{}", e.getMessage());
|
||||||
|
e.printStackTrace();
|
||||||
} finally {
|
} finally {
|
||||||
out.flush();
|
out.flush();
|
||||||
out.close();
|
out.close();
|
||||||
|
|
|
||||||
|
|
@ -140,6 +140,7 @@ public class WxServiceImpl implements WxService {
|
||||||
payDetails.setState(0);
|
payDetails.setState(0);
|
||||||
payDetails.setCreateTime(sdf.format(new Date()));
|
payDetails.setCreateTime(sdf.format(new Date()));
|
||||||
payDetails.setOrderId(bean.getOrdersNo());
|
payDetails.setOrderId(bean.getOrdersNo());
|
||||||
|
payDetails.setOutTradeNo(bean.getOrdersNo());
|
||||||
payDetails.setUserId(bean.getUserId());
|
payDetails.setUserId(bean.getUserId());
|
||||||
payDetails.setMoney(bean.getPayMoney().doubleValue());
|
payDetails.setMoney(bean.getPayMoney().doubleValue());
|
||||||
payDetails.setClassify(classify);
|
payDetails.setClassify(classify);
|
||||||
|
|
@ -819,6 +820,8 @@ public class WxServiceImpl implements WxService {
|
||||||
// 注意特殊情况:微信服务端同样的通知可能会多次发送给商户系统,所以数据持久化之前需要检查是否已经处理过了,处理了直接返回成功标志
|
// 注意特殊情况:微信服务端同样的通知可能会多次发送给商户系统,所以数据持久化之前需要检查是否已经处理过了,处理了直接返回成功标志
|
||||||
//业务数据持久化
|
//业务数据持久化
|
||||||
PayDetails payDetails = payDetailsDao.selectOne(new QueryWrapper<PayDetails>().lambda().eq(PayDetails::getOutTradeNo, out_trade_no));
|
PayDetails payDetails = payDetailsDao.selectOne(new QueryWrapper<PayDetails>().lambda().eq(PayDetails::getOutTradeNo, out_trade_no));
|
||||||
|
if(payDetails == null)
|
||||||
|
payDetails = payDetailsDao.selectOne(new QueryWrapper<PayDetails>().lambda().isNull(PayDetails::getOutTradeNo).eq(PayDetails::getOrderId, out_trade_no));
|
||||||
if (payDetails.getState() == 0) {
|
if (payDetails.getState() == 0) {
|
||||||
payDetails.setState(1);
|
payDetails.setState(1);
|
||||||
payDetails.setPayTime(DateUtils.format(new Date(), DateUtils.DATE_TIME_PATTERN));
|
payDetails.setPayTime(DateUtils.format(new Date(), DateUtils.DATE_TIME_PATTERN));
|
||||||
|
|
@ -1084,26 +1087,25 @@ public class WxServiceImpl implements WxService {
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean icbcCheckSign(Map<String, String> reqParams, String path) {
|
private boolean icbcCheckSign(Map<String, String> reqParams, String path) {
|
||||||
return true;
|
Map<String, String> params = new HashMap<>();
|
||||||
// Map<String, String> params = new HashMap<>();
|
String sign = reqParams.get("sign");
|
||||||
// String sign = reqParams.get("sign");
|
params.put("from", reqParams.get("from"));
|
||||||
// params.put("from", reqParams.get("from"));
|
params.put("api", reqParams.get("api"));
|
||||||
// params.put("api", reqParams.get("api"));
|
params.put("app_id", reqParams.get("app_id"));
|
||||||
// params.put("app_id", reqParams.get("app_id"));
|
params.put("charset", reqParams.get("charset"));
|
||||||
// params.put("charset", reqParams.get("charset"));
|
params.put("format", reqParams.get("format"));
|
||||||
// params.put("format", reqParams.get("format"));
|
params.put("timestamp", reqParams.get("timestamp"));
|
||||||
// params.put("timestamp", reqParams.get("timestamp"));
|
params.put("biz_content", reqParams.get("biz_content"));
|
||||||
// params.put("biz_content", reqParams.get("biz_content"));
|
//目前上行网关签名暂时仅支持RSA
|
||||||
// //目前上行网关签名暂时仅支持RSA
|
params.put("sign_type", reqParams.get("sign_type"));
|
||||||
// params.put("sign_type", reqParams.get("sign_type"));
|
|
||||||
//
|
String signStr= WebUtils.buildOrderedSignStr(path, params);
|
||||||
// String signStr= WebUtils.buildOrderedSignStr(path, params);
|
try {
|
||||||
// try {
|
//注意:此次用的是RSA,和下单时不一样
|
||||||
// //注意:此次用的是RSA,和下单时不一样
|
return IcbcSignature.verify(signStr, IcbcConstants.SIGN_TYPE_RSA, APIGW_PUBLIC_KEY, reqParams.get("charset"), sign);
|
||||||
// return IcbcSignature.verify(signStr, IcbcConstants.SIGN_TYPE_RSA, APIGW_PUBLIC_KEY, reqParams.get("charset"), sign);
|
} catch (IcbcApiException e) {
|
||||||
// } catch (IcbcApiException e) {
|
return false;
|
||||||
// return false;
|
}
|
||||||
// }
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public String getGeneralOrder() {
|
public String getGeneralOrder() {
|
||||||
|
|
@ -1246,29 +1248,29 @@ public class WxServiceImpl implements WxService {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void main(String[] args) throws IcbcApiException {
|
public static void main(String[] args) throws IcbcApiException {
|
||||||
String notifyUrl = (true ? "/sqx_fast/app/wxPay/notifyJsApi" : "/sqx_fast/app/wxPay/notifyJsApiShop");
|
// String notifyUrl = (true ? "/sqx_fast/app/wxPay/notifyJsApi" : "/sqx_fast/app/wxPay/notifyJsApiShop");
|
||||||
|
|
||||||
String jsonStr = "{\"api\":\"/api/cardbusiness/aggregatepay/b2c/online/consumepurchase/V1\",\"app_id\":\"11000000000000051225\",\"biz_content\":\"{\\\"access_type\\\":\\\"9\\\",\\\"attach\\\":\\\"\\\",\\\"bank_disc_amt\\\":\\\"0\\\",\\\"card_flag\\\":\\\"\\\",\\\"card_kind\\\":\\\"\\\",\\\"card_no\\\":\\\"\\\",\\\"coupon_amt\\\":\\\"0\\\",\\\"cust_id\\\":\\\"\\\",\\\"decr_flag\\\":\\\"\\\",\\\"ecoupon_amt\\\":\\\"0\\\",\\\"mer_disc_amt\\\":\\\"0\\\",\\\"mer_id\\\":\\\"150537540003\\\",\\\"msg_id\\\":\\\"050200155087883006188152791\\\",\\\"open_id\\\":\\\"ow8NuxGas0u7FrZkg-DWi-F1ABwM\\\",\\\"order_id\\\":\\\"150537540003000522503280002157\\\",\\\"out_trade_no\\\":\\\"1000001823360698\\\",\\\"pay_time\\\":\\\"20250328150403\\\",\\\"pay_type\\\":\\\"9\\\",\\\"payment_amt\\\":\\\"10\\\",\\\"point_amt\\\":\\\"0\\\",\\\"return_code\\\":\\\"0\\\",\\\"return_msg\\\":\\\"交易成功\\\",\\\"third_party_coupon_amt\\\":\\\"0\\\",\\\"third_party_discount_amt\\\":\\\"0\\\",\\\"third_trade_no\\\":\\\"4200002667202503283423055973\\\",\\\"total_amt\\\":\\\"10\\\",\\\"total_disc_amt\\\":\\\"0\\\"}\",\"charset\":\"UTF-8\",\"format\":\"json\",\"from\":\"icbc-api\",\"sign\":\"H1wXn/2399BQr3FOpbqdGkNCpiSbi3njGdXsWV5x8nGEzMR+CTuO8ynB+KbsVivmeHX3UERZe0Z1mAtwibIZsJ1S7Li3Hl+XwdjHbBDi7Nkpj/ZHN0iEY7NK4X+b87ZuA2edXjr5Fo2btj7yjPNwr9c5C0C7madncHRziWidjFg=\",\"sign_type\":\"RSA\",\"timestamp\":\"2025-03-28 15:05:56\"}";
|
|
||||||
JSONObject reqParams = JSONObject.parseObject(jsonStr);
|
|
||||||
// System.out.println(jsonObject.getJSONObject("biz_content"));
|
|
||||||
Map<String, String> params = new HashMap<>();
|
|
||||||
String sign = reqParams.getString("sign");
|
|
||||||
params.put("from", reqParams.getString("from"));
|
|
||||||
params.put("api", reqParams.getString("api"));
|
|
||||||
params.put("app_id", reqParams.getString("app_id"));
|
|
||||||
params.put("charset", reqParams.getString("charset"));
|
|
||||||
params.put("format", reqParams.getString("format"));
|
|
||||||
params.put("timestamp", reqParams.getString("timestamp"));
|
|
||||||
params.put("biz_content", reqParams.getString("biz_content"));
|
|
||||||
// //目前上行网关签名暂时仅支持RSA
|
|
||||||
params.put("sign_type", reqParams.getString("sign_type"));
|
|
||||||
|
|
||||||
System.out.println(params);
|
|
||||||
//
|
//
|
||||||
String signStr= WebUtils.buildOrderedSignStr(notifyUrl, params);
|
// String jsonStr = "{\"api\":\"/api/cardbusiness/aggregatepay/b2c/online/consumepurchase/V1\",\"app_id\":\"11000000000000051225\",\"biz_content\":\"{\\\"access_type\\\":\\\"9\\\",\\\"attach\\\":\\\"\\\",\\\"bank_disc_amt\\\":\\\"0\\\",\\\"card_flag\\\":\\\"\\\",\\\"card_kind\\\":\\\"\\\",\\\"card_no\\\":\\\"\\\",\\\"coupon_amt\\\":\\\"0\\\",\\\"cust_id\\\":\\\"\\\",\\\"decr_flag\\\":\\\"\\\",\\\"ecoupon_amt\\\":\\\"0\\\",\\\"mer_disc_amt\\\":\\\"0\\\",\\\"mer_id\\\":\\\"150537540003\\\",\\\"msg_id\\\":\\\"050200155087883006188152791\\\",\\\"open_id\\\":\\\"ow8NuxGas0u7FrZkg-DWi-F1ABwM\\\",\\\"order_id\\\":\\\"150537540003000522503280002157\\\",\\\"out_trade_no\\\":\\\"1000001823360698\\\",\\\"pay_time\\\":\\\"20250328150403\\\",\\\"pay_type\\\":\\\"9\\\",\\\"payment_amt\\\":\\\"10\\\",\\\"point_amt\\\":\\\"0\\\",\\\"return_code\\\":\\\"0\\\",\\\"return_msg\\\":\\\"交易成功\\\",\\\"third_party_coupon_amt\\\":\\\"0\\\",\\\"third_party_discount_amt\\\":\\\"0\\\",\\\"third_trade_no\\\":\\\"4200002667202503283423055973\\\",\\\"total_amt\\\":\\\"10\\\",\\\"total_disc_amt\\\":\\\"0\\\"}\",\"charset\":\"UTF-8\",\"format\":\"json\",\"from\":\"icbc-api\",\"sign\":\"H1wXn/2399BQr3FOpbqdGkNCpiSbi3njGdXsWV5x8nGEzMR+CTuO8ynB+KbsVivmeHX3UERZe0Z1mAtwibIZsJ1S7Li3Hl+XwdjHbBDi7Nkpj/ZHN0iEY7NK4X+b87ZuA2edXjr5Fo2btj7yjPNwr9c5C0C7madncHRziWidjFg=\",\"sign_type\":\"RSA\",\"timestamp\":\"2025-03-28 15:05:56\"}";
|
||||||
System.out.println(signStr);
|
// JSONObject reqParams = JSONObject.parseObject(jsonStr);
|
||||||
Boolean flag = IcbcSignature.verify(signStr, IcbcConstants.SIGN_TYPE_RSA, APIGW_PUBLIC_KEY, reqParams.getString("charset"), sign);
|
//// System.out.println(jsonObject.getJSONObject("biz_content"));
|
||||||
System.out.println(flag);
|
// Map<String, String> params = new HashMap<>();
|
||||||
|
// String sign = reqParams.getString("sign");
|
||||||
|
// params.put("from", reqParams.getString("from"));
|
||||||
|
// params.put("api", reqParams.getString("api"));
|
||||||
|
// params.put("app_id", reqParams.getString("app_id"));
|
||||||
|
// params.put("charset", reqParams.getString("charset"));
|
||||||
|
// params.put("format", reqParams.getString("format"));
|
||||||
|
// params.put("timestamp", reqParams.getString("timestamp"));
|
||||||
|
// params.put("biz_content", reqParams.getString("biz_content"));
|
||||||
|
//// //目前上行网关签名暂时仅支持RSA
|
||||||
|
// params.put("sign_type", reqParams.getString("sign_type"));
|
||||||
|
//
|
||||||
|
// System.out.println(params);
|
||||||
|
////
|
||||||
|
// String signStr= WebUtils.buildOrderedSignStr(notifyUrl, params);
|
||||||
|
// System.out.println(signStr);
|
||||||
|
// Boolean flag = IcbcSignature.verify(signStr, IcbcConstants.SIGN_TYPE_RSA, APIGW_PUBLIC_KEY, reqParams.getString("charset"), sign);
|
||||||
|
// System.out.println(flag);
|
||||||
|
System.out.println(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Loading…
Reference in a new issue