|
@@ -21,6 +21,7 @@ import thyyxxk.wxservice_server.factory.wechatpay.model.NativePayResponse;
|
|
|
import thyyxxk.wxservice_server.factory.wechatpay.model.WechatPayGlobalRequest;
|
|
|
import thyyxxk.wxservice_server.utils.*;
|
|
|
|
|
|
+import java.math.BigDecimal;
|
|
|
import java.util.*;
|
|
|
import java.util.concurrent.TimeUnit;
|
|
|
|
|
@@ -71,18 +72,26 @@ public class WxApiService {
|
|
|
order.setOpenid(TokenUtil.getInstance().getUserOpenid());
|
|
|
order.setTradeNo(SnowFlakeId.instance().nextId());
|
|
|
order.setMchId(PropertiesUtil.getLocalProperty("mchId"));
|
|
|
- WechatPayGlobalRequest request = new WechatPayGlobalRequest.Builder()
|
|
|
- .appletType(null).outTradeNo(order.getTradeNo())
|
|
|
- .openid(order.getOpenid()).description(order.getBody())
|
|
|
- .totalAmount(totalAmt).build();
|
|
|
- PrepayWithRequestPaymentResponse response = new WeChatPayService().jsApiPrepay(request);
|
|
|
+
|
|
|
+ if (totalAmt == 0) {
|
|
|
+ order.setPrepayId("PREPARED");
|
|
|
+ order.setTimeStamp(String.valueOf(System.currentTimeMillis()));
|
|
|
+ order.setSerialNo(SnowFlakeId.instance().nextId());
|
|
|
+ } else {
|
|
|
+ WechatPayGlobalRequest request = new WechatPayGlobalRequest.Builder()
|
|
|
+ .appletType(null).outTradeNo(order.getTradeNo())
|
|
|
+ .openid(order.getOpenid()).description(order.getBody())
|
|
|
+ .totalAmount(totalAmt).build();
|
|
|
+ PrepayWithRequestPaymentResponse response = new WeChatPayService().jsApiPrepay(request);
|
|
|
+ order.setAppId(response.getAppId());
|
|
|
+ order.setPrepayId(response.getPackageVal());
|
|
|
+ order.setTimeStamp(response.getTimeStamp());
|
|
|
+ order.setSerialNo(response.getNonceStr());
|
|
|
+ order.setSignType(response.getSignType());
|
|
|
+ order.setPaySign(response.getPaySign());
|
|
|
+ }
|
|
|
+
|
|
|
order.setPatientName(dao.selectPatientName(order.getPatientId()));
|
|
|
- order.setAppId(response.getAppId());
|
|
|
- order.setPrepayId(response.getPackageVal());
|
|
|
- order.setTimeStamp(response.getTimeStamp());
|
|
|
- order.setSerialNo(response.getNonceStr());
|
|
|
- order.setSignType(response.getSignType());
|
|
|
- order.setPaySign(response.getPaySign());
|
|
|
order.setCreateDatetime(new Date());
|
|
|
order.setTradeState(Transaction.TradeStateEnum.NOTPAY);
|
|
|
dao.insertNewOrder(order);
|
|
@@ -132,9 +141,17 @@ public class WxApiService {
|
|
|
return ResultVoUtil.success("保存门诊缴费信息成功。");
|
|
|
}
|
|
|
|
|
|
- WechatPayGlobalRequest request = new WechatPayGlobalRequest.Builder()
|
|
|
- .outTradeNo(tradeNo).build();
|
|
|
- Transaction transaction = new WeChatPayService().queryOrderState(request);
|
|
|
+
|
|
|
+ Transaction transaction;
|
|
|
+ if (order.getTotalFee().compareTo(BigDecimal.ZERO) == 0) {
|
|
|
+ transaction = new Transaction();
|
|
|
+ transaction.setTradeState(Transaction.TradeStateEnum.SUCCESS);
|
|
|
+ transaction.setSuccessTime(DateUtil.formatDatetime(new Date()));
|
|
|
+ } else {
|
|
|
+ WechatPayGlobalRequest request = new WechatPayGlobalRequest.Builder()
|
|
|
+ .outTradeNo(tradeNo).build();
|
|
|
+ transaction = new WeChatPayService().queryOrderState(request);
|
|
|
+ }
|
|
|
|
|
|
Transaction.TradeStateEnum tradeState = transaction.getTradeState();
|
|
|
if (tradeState == Transaction.TradeStateEnum.SUCCESS) {
|