diff --git a/src/main/java/com/ynxbd/common/TestA.java b/src/main/java/com/ynxbd/common/TestA.java index 750ba16..d94504a 100644 --- a/src/main/java/com/ynxbd/common/TestA.java +++ b/src/main/java/com/ynxbd/common/TestA.java @@ -1,11 +1,8 @@ package com.ynxbd.common; -import com.bocom.api.security.keygen.AESKeyGen; public class TestA { - public static void main(String[] args) { - } } diff --git a/src/main/java/com/ynxbd/common/helper/xbd/EncHelper.java b/src/main/java/com/ynxbd/common/helper/xbd/EncHelper.java index dbf12c7..7edd3fe 100644 --- a/src/main/java/com/ynxbd/common/helper/xbd/EncHelper.java +++ b/src/main/java/com/ynxbd/common/helper/xbd/EncHelper.java @@ -1,10 +1,6 @@ package com.ynxbd.common.helper.xbd; -import org.apache.commons.codec.digest.DigestUtils; - -import javax.crypto.BadPaddingException; import javax.crypto.Cipher; -import javax.crypto.IllegalBlockSizeException; import javax.crypto.spec.IvParameterSpec; import javax.crypto.spec.SecretKeySpec; import java.nio.charset.StandardCharsets; diff --git a/src/main/java/com/ynxbd/common/helper/xbd/XBDHttpHelper.java b/src/main/java/com/ynxbd/common/helper/xbd/XBDHttpHelper.java index 9750ba1..0743e12 100644 --- a/src/main/java/com/ynxbd/common/helper/xbd/XBDHttpHelper.java +++ b/src/main/java/com/ynxbd/common/helper/xbd/XBDHttpHelper.java @@ -73,7 +73,6 @@ public class XBDHttpHelper { return UsePost(methodName, formBody); } - private static String UsePost(String methodName, RequestBody requestBody) { OkHttpClient httpClient = OkHttpHelper.creatClient(); Headers.Builder headersBuilder = new Headers.Builder(); @@ -216,9 +215,14 @@ public class XBDHttpHelper { } catch (IOException e) { e.printStackTrace(); } + // 前端传递base64=>1、AES加密=>2、URLEncoder加密=>3、转二进制=>4、二进制转base64 return new sun.misc.BASE64Encoder().encode(out.toByteArray()); } +// public static void main(String[] args) { +// System.out.println(compress("data:image/png;base64,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")); +// } + private static String uncompress(String compressedStr) { if (compressedStr == null) { return null; diff --git a/src/main/java/com/ynxbd/wx/wxfactory/WxPayHelper.java b/src/main/java/com/ynxbd/wx/wxfactory/WxPayHelper.java index cdef347..f90b69d 100644 --- a/src/main/java/com/ynxbd/wx/wxfactory/WxPayHelper.java +++ b/src/main/java/com/ynxbd/wx/wxfactory/WxPayHelper.java @@ -349,9 +349,15 @@ public class WxPayHelper { // micropay.setDetail("描述"); // 商品描述 + Order wxOrder; MicropayResult micropayResult = PayMchAPI.payMicropay(micropay, mchKey); if (micropayResult == null) { - order.setErrorMsg("【微信】盒子扫码支付请求失败"); + log.warn("【微信】[盒子支付]下单异常 outTradeNo={}", outTradeNo); + wxOrder = waitMicoPay(outTradeNo); // 可能会出现支付成功,但是接口响应失败的情况 + if (wxOrder != null) { + return wxOrder; + } + order.setErrorMsg("【微信】[盒子支付]调用下单接口异常"); return order; } @@ -374,41 +380,12 @@ public class WxPayHelper { return order; } - Order wxOrder; if (FAIL.equals(resultCode)) { // 失败 if (USER_PAYING.equals(errCode)) { // 密码支付 log.info("【微信】[盒子支付]密码支付 outTradeNo={}, msg={}", outTradeNo, errMsg); - for (int i = 1; i <= 5; i++) { - try { - Thread.sleep(5000 + ((i - 1) * 1500)); // 总共35s - wxOrder = queryOrder(outTradeNo); - if (wxOrder.isSuccess()) { - return wxOrder; - } - - // 支付失败 - if (PAY_ERROR.equals(wxOrder.getTradeState())) { - if (i == 1 || i == 2) { - Thread.sleep(i == 2 ? 3000 : 9000); // 等够15s - } - - // 撤销订单 - Order cancelOrder = cancelOrder(wxOrder.getOutTradeNo(), wxOrder.getBankTransNo()); - // 撤销成功 - if (cancelOrder.isSuccess()) { - wxOrder.setTradeState(REVOKED); - wxOrder.setErrorMsg("订单已撤销"); - } - return wxOrder; - } - - // 其他失败原因 - if (!USER_PAYING.equals(wxOrder.getTradeState())) { - return wxOrder; - } - } catch (Exception e) { - e.printStackTrace(); - } + wxOrder = waitMicoPay(outTradeNo); + if (wxOrder != null) { + return wxOrder; } } else { order.setErrorCode(errCode); @@ -440,6 +417,44 @@ public class WxPayHelper { return order; } + // 等待扫码盒子支付 + private static Order waitMicoPay(String outTradeNo) { + Order wxOrder; + for (int i = 1; i <= 5; i++) { + try { + Thread.sleep(5000 + ((i - 1) * 1500)); // 总共35s + wxOrder = queryOrder(outTradeNo); + if (wxOrder.isSuccess()) { + return wxOrder; + } + + // 支付失败 + if (PAY_ERROR.equals(wxOrder.getTradeState())) { + if (i == 1 || i == 2) { + Thread.sleep(i == 2 ? 3000 : 9000); // 等够15s + } + + // 撤销订单 + Order cancelOrder = cancelOrder(wxOrder.getOutTradeNo(), wxOrder.getBankTransNo()); + // 撤销成功 + if (cancelOrder.isSuccess()) { + wxOrder.setTradeState(REVOKED); + wxOrder.setErrorMsg("订单已撤销"); + } + return wxOrder; + } + + // 其他失败原因 + if (!USER_PAYING.equals(wxOrder.getTradeState())) { + return wxOrder; + } + } catch (Exception e) { + e.printStackTrace(); + } + } + return null; + } + /** * 撤销订单 *