|
@@ -1,24 +1,36 @@
|
|
package com.chelvc.cloud.vehicle.server.service.impl;
|
|
package com.chelvc.cloud.vehicle.server.service.impl;
|
|
|
|
+import cn.hutool.core.codec.Base64;
|
|
import com.alibaba.fastjson.JSONObject;
|
|
import com.alibaba.fastjson.JSONObject;
|
|
import com.alibaba.nacos.shaded.com.google.gson.Gson;
|
|
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;
|
|
import com.chelvc.cloud.vehicle.client.constant.TradeConstant;
|
|
|
|
+import com.chelvc.cloud.vehicle.client.param.OmsOrderModifyParam;
|
|
import com.chelvc.cloud.vehicle.client.param.OrderReturnApplyModifyParam;
|
|
import com.chelvc.cloud.vehicle.client.param.OrderReturnApplyModifyParam;
|
|
import com.chelvc.cloud.vehicle.server.entity.OmsOrder;
|
|
import com.chelvc.cloud.vehicle.server.entity.OmsOrder;
|
|
import com.chelvc.cloud.vehicle.server.entity.OmsOrderItem;
|
|
import com.chelvc.cloud.vehicle.server.entity.OmsOrderItem;
|
|
import com.chelvc.cloud.vehicle.server.handle.TradeHandle;
|
|
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.cloud.vehicle.server.service.OnlinePayService;
|
|
|
|
+import com.upay.sdk.entity.Payer;
|
|
|
|
+import com.upay.sdk.entity.ProductDetail;
|
|
import com.upay.sdk.exception.HmacVerifyException;
|
|
import com.upay.sdk.exception.HmacVerifyException;
|
|
import com.upay.sdk.exception.RequestException;
|
|
import com.upay.sdk.exception.RequestException;
|
|
import com.upay.sdk.exception.ResponseException;
|
|
import com.upay.sdk.exception.ResponseException;
|
|
import com.upay.sdk.exception.UnknownException;
|
|
import com.upay.sdk.exception.UnknownException;
|
|
import com.upay.sdk.executer.ResultListenerAdpater;
|
|
import com.upay.sdk.executer.ResultListenerAdpater;
|
|
import com.upay.sdk.onlinepay.builder.OrderBuilder;
|
|
import com.upay.sdk.onlinepay.builder.OrderBuilder;
|
|
|
|
+import com.upay.sdk.onlinepay.builder.OrderResponse;
|
|
import com.upay.sdk.onlinepay.builder.QueryBuilder;
|
|
import com.upay.sdk.onlinepay.builder.QueryBuilder;
|
|
import com.upay.sdk.onlinepay.builder.RefundBuilder;
|
|
import com.upay.sdk.onlinepay.builder.RefundBuilder;
|
|
import com.upay.sdk.onlinepay.executer.OnlinePayOrderExecuter;
|
|
import com.upay.sdk.onlinepay.executer.OnlinePayOrderExecuter;
|
|
|
|
+import lombok.RequiredArgsConstructor;
|
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
|
|
|
-import java.io.PrintWriter;
|
|
|
|
|
|
+import java.io.IOException;
|
|
|
|
+import java.util.LinkedList;
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -28,25 +40,134 @@ import java.util.List;
|
|
* @date 2025/1/6
|
|
* @date 2025/1/6
|
|
*/
|
|
*/
|
|
@Service
|
|
@Service
|
|
|
|
+@RequiredArgsConstructor(onConstructor = @__(@Autowired))
|
|
public class OnlinePayServiceImpl implements OnlinePayService {
|
|
public class OnlinePayServiceImpl implements OnlinePayService {
|
|
|
|
+
|
|
|
|
+ private final UserClient userService;
|
|
|
|
+
|
|
@Override
|
|
@Override
|
|
- public void order(OmsOrder omsOrder, List<OmsOrderItem> orderItemList){
|
|
|
|
|
|
+ public OrderResponse order(OmsOrder omsOrder, List<OmsOrderItem> orderItemList, OmsOrderModifyParam orderParam){
|
|
OrderBuilder builder = new OrderBuilder(omsOrder.getMerchantId().toString());
|
|
OrderBuilder builder = new OrderBuilder(omsOrder.getMerchantId().toString());
|
|
builder.setRequestId(omsOrder.getId().toString())
|
|
builder.setRequestId(omsOrder.getId().toString())
|
|
.setOrderAmount(omsOrder.getPayAmount().toString())
|
|
.setOrderAmount(omsOrder.getPayAmount().toString())
|
|
.setOrderCurrency("CNY")
|
|
.setOrderCurrency("CNY")
|
|
- .setNotifyUrl(TradeConstant.WITHDRAW_NOTIFY_URL)
|
|
|
|
- .setCallbackUrl("")
|
|
|
|
|
|
+ .setNotifyUrl(TradeConstant.ORDER_NOTIFY_URL)
|
|
|
|
+ .setCallbackUrl(TradeConstant.ORDER_CALLBACKURL)
|
|
.setRemark(omsOrder.getNote())
|
|
.setRemark(omsOrder.getNote())
|
|
- .setPaymentModeCode("")
|
|
|
|
|
|
+ .setPaymentModeCode(TradeConstant.MINIAPPS_WEIXIN_PAY_P2P)
|
|
.setAuthCode("")
|
|
.setAuthCode("")
|
|
- .setMerchantUserId("")
|
|
|
|
|
|
+ .setMerchantUserId(omsOrder.getUserId().toString())
|
|
.setBindCardId("")
|
|
.setBindCardId("")
|
|
.setClientIp("");
|
|
.setClientIp("");
|
|
- Gson gson = new Gson();
|
|
|
|
- JSONObject json = TradeHandle.handle(gson.toJson(builder),
|
|
|
|
- TradeConstant.WITHDRAW_URL, omsOrder.getMerchantId().toString(), TradeConstant.PARTNER_ID);
|
|
|
|
- String result = json.getString("status");
|
|
|
|
|
|
+ builder.setTimeout("15");
|
|
|
|
+ builder.setPaymentToken("");
|
|
|
|
+ builder.setAppId("");
|
|
|
|
+
|
|
|
|
+ builder.setSerialNumber("");
|
|
|
|
+ builder.setApCardNo("");
|
|
|
|
+ builder.setApTransData("");
|
|
|
|
+ builder.setApUserData("");
|
|
|
|
+ builder.setReportSerialNo("");
|
|
|
|
+ builder.setReportTerminalNo("");
|
|
|
|
+ builder.setPartnerId(TradeConstant.PARTNER_ID);
|
|
|
|
+ builder.setProjectId(TradeConstant.PARTNER_ID);
|
|
|
|
+ builder.setSplitMark("");
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ //productDetails(商品信息)
|
|
|
|
+// List<ProductDetail> productDetails = new LinkedList();
|
|
|
|
+ for (OmsOrderItem omsOrderItem : orderItemList) {
|
|
|
|
+ ProductDetail productDetail = new ProductDetail();
|
|
|
|
+ productDetail.setName(omsOrderItem.getGoodsName());
|
|
|
|
+ productDetail.setAmount(Long.valueOf(omsOrderItem.getGoodsPrice().toString()));
|
|
|
|
+ productDetail.setQuantity(Long.valueOf(omsOrderItem.getGoodsQuantity()));
|
|
|
|
+ builder.addProductDetail(productDetail);
|
|
|
|
+ }
|
|
|
|
+ UserDTO userDTO = userService.getUser(omsOrder.getUserId());
|
|
|
|
+ builder.setOpenId(userDTO.getOpenid());
|
|
|
|
+ //payer(身份信息)可选项
|
|
|
|
+ Payer payer = new Payer();
|
|
|
|
+ payer.setName(userDTO.getNickname());
|
|
|
|
+ payer.setPhoneNum(userDTO.getMobile());
|
|
|
|
+ payer.setBankCardNum("");
|
|
|
|
+ payer.setIdNum("");
|
|
|
|
+ payer.setIdType("");
|
|
|
|
+ payer.setEmail("");
|
|
|
|
+ builder.setPayer(payer);
|
|
|
|
+ OrderResponse orderResponse = new OrderResponse();
|
|
|
|
+ //分期支付参数
|
|
|
|
+// InstalmentParams instalmentParams = new InstalmentParams();
|
|
|
|
+// instalmentParams.setInterestType(interestType);
|
|
|
|
+// instalmentParams.setSuppBankCodes(suppBankCodes);
|
|
|
|
+// instalmentParams.setLimitNum(limitNum);
|
|
|
|
+// instalmentParams.setStoreNo(storeNo);
|
|
|
|
+// instalmentParams.setStoreName(storeName);
|
|
|
|
+// builder.setInstalmentParams(instalmentParams);
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+// builder.setSubsidyMark(subsidyMark);
|
|
|
|
+// builder.setSubsidyAmount(subsidyAmount);
|
|
|
|
+
|
|
|
|
+ try {
|
|
|
|
+ OnlinePayOrderExecuter executer = new OnlinePayOrderExecuter();
|
|
|
|
+ System.setProperty("https.protocols", "TLSv1.2,TLSv1.1,SSLv3");
|
|
|
|
+ executer.bothOrder(builder, new ResultListenerAdpater() {
|
|
|
|
+ /**
|
|
|
|
+ * 提交成功,不代表支付成功
|
|
|
|
+ */
|
|
|
|
+ @Override
|
|
|
|
+ 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) {
|
|
|
|
+ System.out.println("响应异常</br>");
|
|
|
|
+ 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");
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
+ System.out.println("响应异常</br>");
|
|
|
|
+ System.out.println(e.toString());
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ System.out.println("提交成功</br>");
|
|
|
|
+ System.out.println(jsonObject);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public void redirect(JSONObject jsonObject, String redirectUrl) throws IOException {
|
|
|
|
+// resp.sendRedirect(redirectUrl);
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+ } catch (ResponseException e) {
|
|
|
|
+ System.out.println("响应异常</br>");
|
|
|
|
+ System.out.println(e.toString());
|
|
|
|
+ } catch (HmacVerifyException e) {
|
|
|
|
+ System.out.println("签名验证异常</br>");
|
|
|
|
+ System.out.println(e.toString());
|
|
|
|
+ } catch (RequestException e) {
|
|
|
|
+ System.out.println("请求异常</br>");
|
|
|
|
+ System.out.println(e.toString());
|
|
|
|
+ } catch (UnknownException e) {
|
|
|
|
+ System.out.println("未知异常</br>");
|
|
|
|
+ System.out.println(e.toString());
|
|
|
|
+ }
|
|
|
|
+ return orderResponse;
|
|
|
|
+
|
|
}
|
|
}
|
|
@Override
|
|
@Override
|
|
public String query(OmsOrder omsOrder) {
|
|
public String query(OmsOrder omsOrder) {
|