|
@@ -15,11 +15,13 @@ import com.wechat.pay.java.service.refund.model.AmountReq;
|
|
|
import com.wechat.pay.java.service.refund.model.CreateRequest;
|
|
|
import com.wechat.pay.java.service.refund.model.Refund;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
+import thyyxxk.wxservice_server.constant.OrderType;
|
|
|
import thyyxxk.wxservice_server.entity.wxapi.RefundResponse;
|
|
|
import thyyxxk.wxservice_server.factory.wechatpay.model.NativePayResponse;
|
|
|
import thyyxxk.wxservice_server.factory.wechatpay.model.WechatPayGlobalRequest;
|
|
|
import thyyxxk.wxservice_server.utils.PropertiesUtil;
|
|
|
import thyyxxk.wxservice_server.utils.SnowFlakeId;
|
|
|
+import thyyxxk.wxservice_server.utils.StringUtil;
|
|
|
import thyyxxk.wxservice_server.utils.TradeVectorUtil;
|
|
|
import thyyxxk.wxservice_server.utils.wxpay.WxPayConfigUtil;
|
|
|
|
|
@@ -53,28 +55,51 @@ public class WeChatPayService {
|
|
|
}
|
|
|
|
|
|
public Transaction queryOrderState(WechatPayGlobalRequest request) {
|
|
|
- Config config = WxPayConfigUtil.getInstance().getConfig();
|
|
|
+ Config config;
|
|
|
+ String mchId;
|
|
|
+ if (null != request.getOrderType() &&
|
|
|
+ request.getOrderType() == OrderType.INSPECTIONS.getCode()) {
|
|
|
+ config = WxPayConfigUtil.getInstance().getTjConfig();
|
|
|
+ mchId = "1501033101";
|
|
|
+ } else {
|
|
|
+ config = WxPayConfigUtil.getInstance().getConfig();
|
|
|
+ mchId = PropertiesUtil.getLocalProperty("mchId");
|
|
|
+ }
|
|
|
JsapiService service = new JsapiService.Builder().config(config).build();
|
|
|
QueryOrderByOutTradeNoRequest queryOrderRequest = new QueryOrderByOutTradeNoRequest();
|
|
|
queryOrderRequest.setOutTradeNo(request.getOutTradeNo());
|
|
|
- queryOrderRequest.setMchid(PropertiesUtil.getLocalProperty("mchId"));
|
|
|
+ queryOrderRequest.setMchid(mchId);
|
|
|
Transaction transaction = service.queryOrderByOutTradeNo(queryOrderRequest);
|
|
|
log.info("查询订单状态【{}】:{}", request.getOutTradeNo(), transaction);
|
|
|
return transaction;
|
|
|
}
|
|
|
|
|
|
public void closeOrder(WechatPayGlobalRequest request) {
|
|
|
- Config config = WxPayConfigUtil.getInstance().getConfig();
|
|
|
+ Config config;
|
|
|
+ String mchId;
|
|
|
+ if (null != request.getOrderType() &&
|
|
|
+ request.getOrderType() == OrderType.INSPECTIONS.getCode()) {
|
|
|
+ config = WxPayConfigUtil.getInstance().getTjConfig();
|
|
|
+ mchId = "1501033101";
|
|
|
+ } else {
|
|
|
+ config = WxPayConfigUtil.getInstance().getConfig();
|
|
|
+ mchId = PropertiesUtil.getLocalProperty("mchId");
|
|
|
+ }
|
|
|
JsapiService service = new JsapiService.Builder().config(config).build();
|
|
|
CloseOrderRequest closeOrderRequest = new CloseOrderRequest();
|
|
|
closeOrderRequest.setOutTradeNo(request.getOutTradeNo());
|
|
|
- closeOrderRequest.setMchid(PropertiesUtil.getLocalProperty("mchId"));
|
|
|
+ closeOrderRequest.setMchid(mchId);
|
|
|
service.closeOrder(closeOrderRequest);
|
|
|
log.info("关闭微信订单:{}", request.getOutTradeNo());
|
|
|
}
|
|
|
|
|
|
public NativePayResponse nativePrepay(WechatPayGlobalRequest request) {
|
|
|
- Config config = WxPayConfigUtil.getInstance().getConfig();
|
|
|
+ Config config;
|
|
|
+ if (StringUtil.notBlank(request.getMchId())) {
|
|
|
+ config = WxPayConfigUtil.getInstance().getTjConfig();
|
|
|
+ } else {
|
|
|
+ config = WxPayConfigUtil.getInstance().getConfig();
|
|
|
+ }
|
|
|
NativePayService service = new NativePayService.Builder().config(config).build();
|
|
|
com.wechat.pay.java.service.payments.nativepay.model.PrepayRequest prepayRequest
|
|
|
= new com.wechat.pay.java.service.payments.nativepay.model.PrepayRequest();
|
|
@@ -84,7 +109,11 @@ public class WeChatPayService {
|
|
|
prepayRequest.setAmount(amount);
|
|
|
prepayRequest.setDescription(request.getDescription());
|
|
|
prepayRequest.setAppid(PropertiesUtil.getLocalProperty("appId"));
|
|
|
- prepayRequest.setMchid(PropertiesUtil.getLocalProperty("mchId"));
|
|
|
+ if (StringUtil.notBlank(request.getMchId())) {
|
|
|
+ prepayRequest.setMchid(request.getMchId());
|
|
|
+ } else {
|
|
|
+ prepayRequest.setMchid(PropertiesUtil.getLocalProperty("mchId"));
|
|
|
+ }
|
|
|
prepayRequest.setNotifyUrl(PropertiesUtil.getLocalProperty("nativeNotifyUrl"));
|
|
|
prepayRequest.setOutTradeNo(SnowFlakeId.instance().nextNativePayTradeNo());
|
|
|
com.wechat.pay.java.service.payments.nativepay.model.PrepayResponse prepayResponse = service.prepay(prepayRequest);
|
|
@@ -146,14 +175,20 @@ public class WeChatPayService {
|
|
|
|
|
|
public Transaction decryptNotify(WechatPayGlobalRequest request) {
|
|
|
HttpServletRequest httpServletRequest = request.getHttpServletRequest();
|
|
|
+ String wpSerial = httpServletRequest.getHeader("Wechatpay-Serial");
|
|
|
RequestParam requestParam = new RequestParam.Builder()
|
|
|
- .serialNumber(httpServletRequest.getHeader("Wechatpay-Serial"))
|
|
|
+ .serialNumber(wpSerial)
|
|
|
.nonce(httpServletRequest.getHeader("Wechatpay-Nonce"))
|
|
|
.signature(httpServletRequest.getHeader("Wechatpay-Signature"))
|
|
|
.timestamp(httpServletRequest.getHeader("Wechatpay-Timestamp"))
|
|
|
.body(readHttpServletRequestBody(httpServletRequest))
|
|
|
.build();
|
|
|
- RSAAutoCertificateConfig config = WxPayConfigUtil.getInstance().getConfig();
|
|
|
+ RSAAutoCertificateConfig config;
|
|
|
+ if (wpSerial.equals("73D33B730CBCD41119629530699302CF916041EF")) {
|
|
|
+ config = WxPayConfigUtil.getInstance().getTjConfig();
|
|
|
+ } else {
|
|
|
+ config = WxPayConfigUtil.getInstance().getConfig();
|
|
|
+ }
|
|
|
NotificationParser parser = new NotificationParser(config);
|
|
|
Transaction transaction = parser.parse(requestParam, Transaction.class);
|
|
|
log.info("微信回调SDK解密:{}", transaction);
|