|
@@ -1,7 +1,5 @@
|
|
|
package com.chelvc.cloud.vehicle.server.service.impl;
|
|
|
-import cn.hutool.core.codec.Base64;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
-import com.alibaba.nacos.shaded.com.google.gson.Gson;
|
|
|
import com.chelvc.cloud.user.client.UserClient;
|
|
|
import com.chelvc.cloud.user.client.dto.UserDTO;
|
|
|
import com.chelvc.cloud.vehicle.client.constant.TradeConstant;
|
|
@@ -9,10 +7,11 @@ import com.chelvc.cloud.vehicle.client.param.OmsOrderModifyParam;
|
|
|
import com.chelvc.cloud.vehicle.client.param.OrderReturnApplyModifyParam;
|
|
|
import com.chelvc.cloud.vehicle.server.entity.OmsOrder;
|
|
|
import com.chelvc.cloud.vehicle.server.entity.OmsOrderItem;
|
|
|
-import com.chelvc.cloud.vehicle.server.handle.TradeHandle;
|
|
|
-import com.chelvc.cloud.vehicle.server.service.MerchantAuthService;
|
|
|
-import com.chelvc.cloud.vehicle.server.service.MerchantService;
|
|
|
import com.chelvc.cloud.vehicle.server.service.OnlinePayService;
|
|
|
+import com.chelvc.framework.base.context.SessionContextHolder;
|
|
|
+import com.chelvc.framework.wechat.PayChannel;
|
|
|
+import com.chelvc.framework.wechat.PayMode;
|
|
|
+import com.chelvc.framework.wechat.WechatUnifiedOrder;
|
|
|
import com.upay.sdk.entity.Payer;
|
|
|
import com.upay.sdk.entity.ProductDetail;
|
|
|
import com.upay.sdk.exception.HmacVerifyException;
|
|
@@ -30,7 +29,7 @@ import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
import java.io.IOException;
|
|
|
-import java.util.LinkedList;
|
|
|
+import java.math.BigDecimal;
|
|
|
import java.util.List;
|
|
|
|
|
|
/**
|
|
@@ -46,32 +45,32 @@ public class OnlinePayServiceImpl implements OnlinePayService {
|
|
|
private final UserClient userService;
|
|
|
|
|
|
@Override
|
|
|
- public OrderResponse order(OmsOrder omsOrder, List<OmsOrderItem> orderItemList, OmsOrderModifyParam orderParam){
|
|
|
- OrderBuilder builder = new OrderBuilder(omsOrder.getMerchantId().toString());
|
|
|
+ public WechatUnifiedOrder order(OmsOrder omsOrder, List<OmsOrderItem> orderItemList, OmsOrderModifyParam orderParam){
|
|
|
+ OrderBuilder builder = new OrderBuilder(TradeConstant.PARTNER_ID);
|
|
|
builder.setRequestId(omsOrder.getId().toString())
|
|
|
- .setOrderAmount(omsOrder.getPayAmount().toString())
|
|
|
+ .setOrderAmount(String.valueOf(omsOrder.getPayAmount().multiply(new BigDecimal("100")))) //单位:分
|
|
|
.setOrderCurrency("CNY")
|
|
|
.setNotifyUrl(TradeConstant.ORDER_NOTIFY_URL)
|
|
|
.setCallbackUrl(TradeConstant.ORDER_CALLBACKURL)
|
|
|
.setRemark(omsOrder.getNote())
|
|
|
.setPaymentModeCode(TradeConstant.MINIAPPS_WEIXIN_PAY_P2P)
|
|
|
- .setAuthCode("")
|
|
|
+ //.setAuthCode("")
|
|
|
.setMerchantUserId(omsOrder.getUserId().toString())
|
|
|
- .setBindCardId("")
|
|
|
- .setClientIp("");
|
|
|
+ //.setBindCardId("")
|
|
|
+ .setClientIp(SessionContextHolder.getHost());
|
|
|
builder.setTimeout("15");
|
|
|
- builder.setPaymentToken("");
|
|
|
- builder.setAppId("");
|
|
|
+ //builder.setPaymentToken("");
|
|
|
+ builder.setAppId(TradeConstant.APPID);
|
|
|
|
|
|
- builder.setSerialNumber("");
|
|
|
- builder.setApCardNo("");
|
|
|
- builder.setApTransData("");
|
|
|
- builder.setApUserData("");
|
|
|
- builder.setReportSerialNo("");
|
|
|
- builder.setReportTerminalNo("");
|
|
|
- builder.setPartnerId(TradeConstant.PARTNER_ID);
|
|
|
- builder.setProjectId(TradeConstant.PARTNER_ID);
|
|
|
- builder.setSplitMark("");
|
|
|
+ //builder.setSerialNumber("");
|
|
|
+ //builder.setApCardNo("");
|
|
|
+ //builder.setApTransData("");
|
|
|
+ //builder.setApUserData("");
|
|
|
+ //builder.setReportSerialNo("");
|
|
|
+ //builder.setReportTerminalNo("");
|
|
|
+ //builder.setPartnerId(TradeConstant.PARTNER_ID);
|
|
|
+ builder.setProjectId(String.valueOf(omsOrder.getMerchantId()));
|
|
|
+ //builder.setSplitMark(""); //不传默认不分账
|
|
|
|
|
|
|
|
|
//productDetails(商品信息)
|
|
@@ -95,6 +94,7 @@ public class OnlinePayServiceImpl implements OnlinePayService {
|
|
|
payer.setEmail("");
|
|
|
builder.setPayer(payer);
|
|
|
OrderResponse orderResponse = new OrderResponse();
|
|
|
+ WechatUnifiedOrder wechatUnifiedOrder = new WechatUnifiedOrder();
|
|
|
//分期支付参数
|
|
|
// InstalmentParams instalmentParams = new InstalmentParams();
|
|
|
// instalmentParams.setInterestType(interestType);
|
|
@@ -103,8 +103,6 @@ public class OnlinePayServiceImpl implements OnlinePayService {
|
|
|
// instalmentParams.setStoreNo(storeNo);
|
|
|
// instalmentParams.setStoreName(storeName);
|
|
|
// builder.setInstalmentParams(instalmentParams);
|
|
|
-
|
|
|
-
|
|
|
// builder.setSubsidyMark(subsidyMark);
|
|
|
// builder.setSubsidyAmount(subsidyAmount);
|
|
|
|
|
@@ -119,14 +117,12 @@ public class OnlinePayServiceImpl implements OnlinePayService {
|
|
|
public void success(JSONObject jsonObject) {
|
|
|
if (jsonObject.get("scanCode") != null) {
|
|
|
try {
|
|
|
-
|
|
|
orderResponse.setHmac(jsonObject.getString("hmac"));
|
|
|
orderResponse.setMerchantId(jsonObject.getString("merchantId"));
|
|
|
orderResponse.setRequestId(jsonObject.getString("requestId"));
|
|
|
orderResponse.setStatus(jsonObject.getString("status"));
|
|
|
String scanCodeStr = jsonObject.getString("scanCode");
|
|
|
// orderResponse.setScanCode(Base64.decodeBase64(scanCodeStr));
|
|
|
-//
|
|
|
// session.setAttribute("orderResponse", orderResponse);
|
|
|
// resp.sendRedirect("scancode.jsp");
|
|
|
} catch (Exception e) {
|
|
@@ -134,11 +130,20 @@ public class OnlinePayServiceImpl implements OnlinePayService {
|
|
|
System.out.println(e.toString());
|
|
|
}
|
|
|
} else if (jsonObject.get("jsString") != null) {
|
|
|
- //微信公众号支付
|
|
|
+ //微信小程序支付
|
|
|
try {
|
|
|
-// HttpSession session = req.getSession();
|
|
|
-// session.setAttribute("jsString", jsonObject.get("jsString"));
|
|
|
-// resp.sendRedirect("wechatjsapi.jsp");
|
|
|
+ String jsString = jsonObject.getString("jsString");
|
|
|
+ JSONObject json = JSONObject.parseObject(jsString);
|
|
|
+ wechatUnifiedOrder.setAppid(json.getString("appId"));
|
|
|
+ wechatUnifiedOrder.setMchid(TradeConstant.MCH_ID);
|
|
|
+ wechatUnifiedOrder.setChannel(PayChannel.WECHAT);
|
|
|
+ wechatUnifiedOrder.setNonce(json.getString("nonceStr"));
|
|
|
+ wechatUnifiedOrder.setSign(json.getString("paySign"));
|
|
|
+ wechatUnifiedOrder.setTimestamp(json.getString("timeStamp"));
|
|
|
+ wechatUnifiedOrder.setAlgorithm(json.getString("signType"));
|
|
|
+ wechatUnifiedOrder.setPack(json.getString("package"));
|
|
|
+ wechatUnifiedOrder.setOrder(jsonObject.getString("requestId"));
|
|
|
+ wechatUnifiedOrder.setMode(PayMode.JSAPI);
|
|
|
} catch (Exception e) {
|
|
|
System.out.println("响应异常</br>");
|
|
|
System.out.println(e.toString());
|
|
@@ -147,7 +152,6 @@ public class OnlinePayServiceImpl implements OnlinePayService {
|
|
|
System.out.println("提交成功</br>");
|
|
|
System.out.println(jsonObject);
|
|
|
}
|
|
|
-
|
|
|
@Override
|
|
|
public void redirect(JSONObject jsonObject, String redirectUrl) throws IOException {
|
|
|
// resp.sendRedirect(redirectUrl);
|
|
@@ -166,8 +170,7 @@ public class OnlinePayServiceImpl implements OnlinePayService {
|
|
|
System.out.println("未知异常</br>");
|
|
|
System.out.println(e.toString());
|
|
|
}
|
|
|
- return orderResponse;
|
|
|
-
|
|
|
+ return wechatUnifiedOrder;
|
|
|
}
|
|
|
@Override
|
|
|
public String query(OmsOrder omsOrder) {
|