Переглянути джерело

Merge remote-tracking branch 'origin/master'

igl 3 місяців тому
батько
коміт
64aca60a45

+ 5 - 0
vehicle-client/pom.xml

@@ -51,6 +51,11 @@
             <artifactId>upay-sdk-international</artifactId>
             <version>2.0.0</version>
         </dependency>
+        <dependency>
+            <groupId>com.upay.sdk</groupId>
+            <artifactId>upay-sdk-sm</artifactId>
+            <version>2.0.0</version>
+        </dependency>
         <!-- 加解密相关jar包 -->
         <dependency>
             <groupId>org.bouncycastle</groupId>

+ 48 - 0
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/OnlinePayService.java

@@ -0,0 +1,48 @@
+package com.chelvc.cloud.vehicle.server.service;
+
+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 java.util.List;
+
+/**
+ * 首信易支付
+ *
+ * @author liude
+ * @date 2025/1/8
+ */
+public interface OnlinePayService{
+    /**
+     * 商户发送请求参数给首信易支付,并接收同步返回的支付信息,用支付信息拉起对应支付方式,并在订单终态后接收异步通知结果。
+     */
+    void order(OmsOrder omsOrder, List<OmsOrderItem> orderItemList);
+
+    /**
+     * 商户通过单笔订单查询接口查询首信易支付平台的订单状态,并且通过主动查询订单来获知订单信息
+     * @param omsOrder
+     */
+    String query(OmsOrder omsOrder);
+
+    /**
+     * 提交退款申请接口用于商户端通过应用接口程序,实现提交退款申请的业务处理,
+     * 首信易支付平台通过JSON格式方式返回退款申请提交的结果响应。其操作功能与现有首信易支付商户后台输入退款申请功能相同。
+     * @param param
+     */
+    String refund(OrderReturnApplyModifyParam param);
+
+    /**
+     * 商户通过退款订单查询接口查询首信易支付平台的订单退款交易明细。
+     * 商户通过主动查询订单获知订单退款信息
+     * @param omsOrder
+     * @return
+     */
+    String refundQuery(OmsOrder omsOrder);
+
+    /**
+     * 商户可调用此接口将未付款成功订单的置为取消
+     * @param omsOrder
+     * @return
+     */
+    String cancelOrder(OmsOrder omsOrder);
+}

+ 2 - 0
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/OmsOrderServiceImpl.java

@@ -304,6 +304,8 @@ public class OmsOrderServiceImpl extends ServiceImpl<OmsOrderMapper, OmsOrder> i
         }
         request.setOpenid(openid);
         //WechatPaymentHandler wechatPaymentHandler = applicationContext.getBean(WechatPaymentHandler.class);
+
+
         return this.wechatPaymentHandler.unifiedorder("applet", request);
     }
 

+ 233 - 0
vehicle-server/src/main/java/com/chelvc/cloud/vehicle/server/service/impl/OnlinePayServiceImpl.java

@@ -0,0 +1,233 @@
+package com.chelvc.cloud.vehicle.server.service.impl;
+import com.alibaba.fastjson.JSONObject;
+import com.alibaba.nacos.shaded.com.google.gson.Gson;
+import com.chelvc.cloud.vehicle.client.constant.TradeConstant;
+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.OnlinePayService;
+import com.upay.sdk.exception.HmacVerifyException;
+import com.upay.sdk.exception.RequestException;
+import com.upay.sdk.exception.ResponseException;
+import com.upay.sdk.exception.UnknownException;
+import com.upay.sdk.executer.ResultListenerAdpater;
+import com.upay.sdk.onlinepay.builder.OrderBuilder;
+import com.upay.sdk.onlinepay.builder.QueryBuilder;
+import com.upay.sdk.onlinepay.builder.RefundBuilder;
+import com.upay.sdk.onlinepay.executer.OnlinePayOrderExecuter;
+import org.springframework.stereotype.Service;
+
+import java.io.PrintWriter;
+import java.util.List;
+
+/**
+ * 首信易支付
+ *
+ * @author liude
+ * @date 2025/1/6
+ */
+@Service
+public class OnlinePayServiceImpl  implements OnlinePayService {
+    @Override
+    public void order(OmsOrder omsOrder, List<OmsOrderItem> orderItemList){
+        OrderBuilder builder = new OrderBuilder(omsOrder.getMerchantId().toString());
+        builder.setRequestId(omsOrder.getId().toString())
+                .setOrderAmount(omsOrder.getPayAmount().toString())
+                .setOrderCurrency("CNY")
+                .setNotifyUrl(TradeConstant.WITHDRAW_NOTIFY_URL)
+                .setCallbackUrl("")
+                .setRemark(omsOrder.getNote())
+                .setPaymentModeCode("")
+                .setAuthCode("")
+                .setMerchantUserId("")
+                .setBindCardId("")
+                .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");
+    }
+    @Override
+    public String query(OmsOrder omsOrder) {
+        QueryBuilder builder = new QueryBuilder(omsOrder.getMerchantId().toString());
+        builder.setRequestId(omsOrder.getId().toString());
+        builder.setPartnerId(TradeConstant.PARTNER_ID);
+
+        OnlinePayOrderExecuter executer = new OnlinePayOrderExecuter();
+        try {
+            executer.bothQuery(builder, new ResultListenerAdpater() {
+                @Override
+                public void success(JSONObject jsonObject) {
+                    System.out.println("处理成功!<br/>");
+                    String result = jsonObject.toJSONString();
+                    System.out.print(result);
+                }
+
+                @Override
+                public void failure(JSONObject jsonObject) {
+                    System.out.println("处理失败!<br/>");
+                    String result = jsonObject.toJSONString();
+                    System.out.print(result);
+                }
+
+                @Override
+                public void pending(JSONObject jsonObject) {
+                    System.out.println("待处理!<br/>");
+                    String result = jsonObject.toJSONString();
+                    System.out.print(result);
+                }
+            });
+        } 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 "";
+    }
+    @Override
+    public String refund(OrderReturnApplyModifyParam param){
+        RefundBuilder builder = new RefundBuilder(param.getMerchantId().toString());
+        builder.setRequestId(param.getOrderId().toString())
+                .setAmount(param.getReturnAmount().toString())
+                .setOrderId(param.getOrderId().toString())
+                .setRemark(param.getDescription())
+                .setNotifyUrl(TradeConstant.WITHDRAW_NOTIFY_URL);
+//        builder.setRefundSubsidy(refundSubsidy);
+//        builder.setSubsidyMoney(subsidyMoney);
+        OnlinePayOrderExecuter executer = new OnlinePayOrderExecuter();
+        try {
+            executer.bothRefund(builder, new ResultListenerAdpater()  {
+                @Override
+                public void success(JSONObject jsonObject) {
+                    System.out.println("处理成功!<br/>");
+                    String result = jsonObject.toJSONString();
+                    System.out.print(result);
+                }
+
+                @Override
+                public void failure(JSONObject jsonObject) {
+                    System.out.println("处理失败!<br/>");
+                    String result = jsonObject.toJSONString();
+                    System.out.print(result);
+                }
+
+                @Override
+                public void pending(JSONObject jsonObject) {
+                    System.out.println("待处理!<br/>");
+                    String result = jsonObject.toJSONString();
+                    System.out.print(result);
+                }
+            });
+        } 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 "";
+
+    }
+    @Override
+    public String refundQuery(OmsOrder omsOrder){
+        RefundBuilder builder = new RefundBuilder(omsOrder.getMerchantId().toString());
+        builder.setRequestId(omsOrder.getId().toString());
+        OnlinePayOrderExecuter executer = new OnlinePayOrderExecuter();
+        try {
+            executer.bothRefundQuery(builder, new ResultListenerAdpater()   {
+                @Override
+                public void success(JSONObject jsonObject) {
+                    System.out.println("处理成功!<br/>");
+                    String result = jsonObject.toJSONString();
+                    System.out.print(result);
+                }
+
+                @Override
+                public void failure(JSONObject jsonObject) {
+                    System.out.println("处理失败!<br/>");
+                    String result = jsonObject.toJSONString();
+                    System.out.print(result);
+                }
+
+                @Override
+                public void pending(JSONObject jsonObject) {
+                    System.out.println("待处理!<br/>");
+                    String result = jsonObject.toJSONString();
+                    System.out.print(result);
+                }
+            });
+        } 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 "";
+    }
+    @Override
+    public String cancelOrder(OmsOrder omsOrder){
+        QueryBuilder builder = new QueryBuilder(omsOrder.getMerchantId().toString());
+        builder.setRequestId(omsOrder.getId().toString());
+        builder.setPartnerId(TradeConstant.PARTNER_ID);
+        OnlinePayOrderExecuter executer = new OnlinePayOrderExecuter();
+        try {
+            executer.bothCancelOrder(builder, new ResultListenerAdpater()   {
+                @Override
+                public void success(JSONObject jsonObject) {
+                    System.out.println("处理成功!<br/>");
+                    String result = jsonObject.toJSONString();
+                    System.out.print(result);
+                }
+
+                @Override
+                public void failure(JSONObject jsonObject) {
+                    System.out.println("处理失败!<br/>");
+                    String result = jsonObject.toJSONString();
+                    System.out.print(result);
+                }
+
+                @Override
+                public void pending(JSONObject jsonObject) {
+                    System.out.println("待处理!<br/>");
+                    String result = jsonObject.toJSONString();
+                    System.out.print(result);
+                }
+            });
+        } 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 "";
+    }
+}

+ 1 - 1
vehicle-server/src/main/resources/5upay-config.properties

@@ -3,7 +3,7 @@ wallet.withdraw.url=https://apis.5upay.com/wallet/withdraw
 wallet.withdraw.query.url=https://apis.5upay.com/wallet/withdrawQuery
 wallet.withdraw.certificate.url=https://apis.5upay.com/wallet/withdrawCertificate
 wallet.withdraw.certificate.partner.url=https://apis.5upay.com/wallet/withdrawCertificatePartner
-
+onlinepay.order.url=https://apis.5upay.com/onlinePay/query
 ehking.sdk.net.client.defaultConnectTimeout=30000
 ehking.sdk.net.client.defaultReadTimeout=30000