Pu Zhibing
3 天以前 2792ef8f8472732999d4eafeab25d2eb6e2c5bad
UserQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/OrderUtil.java
@@ -181,18 +181,23 @@
    * 拉起支付
    *
    * @param tradePayOff1Data
    * @param recoveryOrder
    * @return
    */
   public static PayInfo tradePayOff1(TradePayOff1Data tradePayOff1Data) {
      tradePayOff1Data.setPartnerId("5400004");
   public static PayInfo tradePayOff1(TradePayOff1Data tradePayOff1Data, Integer recoveryOrder) {
      tradePayOff1Data.setPartnerId("prod".equals(qianYunTongConfig.getActiveProfile()) ? "5401007" : "5400004");
      tradePayOff1Data.setTimeout("72H");
      tradePayOff1Data.setScene("TRAFFIC");
      tradePayOff1Data.setCurrency("RMB");
      tradePayOff1Data.setNeedLoginFlag("N");
      tradePayOff1Data.setAccessMode("APP");
      tradePayOff1Data.getGoodsInfo().forEach(goodsInfoRequest -> {
         goodsInfoRequest.setId("981100006005901");
         goodsInfoRequest.setSubAppId("wxcc3c9058e2b294db");
         if(0 == recoveryOrder){
            goodsInfoRequest.setId("prod".equals(qianYunTongConfig.getActiveProfile()) ? "9811000039358999" : "981100006005901");
         }else{
            goodsInfoRequest.setId("prod".equals(qianYunTongConfig.getActiveProfile()) ? "981100006228370" : "981100006005901");
         }
         goodsInfoRequest.setSubAppId(qianYunTongConfig.getAppId());
         
         goodsInfoRequest.setAreaInfo("520100");
         goodsInfoRequest.setPayType("0");
@@ -201,7 +206,7 @@
      
      
      TradeRequest request = new TradeRequest<TradePayOff1Data>();
      request.setSceneId("1911676727023968256");
      request.setSceneId("prod".equals(qianYunTongConfig.getActiveProfile()) ? "1954795404533583872" : "1911676727023968256");
      request.setAppId(qianYunTongConfig.getAppkey());
      request.setConfigVersion(1);
      request.setRequestId(UUIDUtil.getRandomCode());
@@ -386,19 +391,23 @@
    * @param tradeOrderCreateData
    * @return
    */
   public static TradeOrderCreate tradeOrderCreate1(TradeOrderCreateData tradeOrderCreateData) {
   public static TradeOrderCreate tradeOrderCreate1(TradeOrderCreateData tradeOrderCreateData, Integer recoveryOrder) {
      tradeOrderCreateData.setScene("TRAFFIC");
      tradeOrderCreateData.setPartnerId("522700");
      tradeOrderCreateData.setTimeout("72H");
      tradeOrderCreateData.setOrderAppId("52270015");
      tradeOrderCreateData.setChannelSource("GRJYCXWXXCX");
      tradeOrderCreateData.setPayPartnerId("5400004");
      tradeOrderCreateData.setPayPartnerId("prod".equals(qianYunTongConfig.getActiveProfile()) ? "5401007" : "5400004");
      tradeOrderCreateData.setCurrency("RMB");
      tradeOrderCreateData.setNeedLoginFlag("N");
      tradeOrderCreateData.setAccessMode("APP");
      tradeOrderCreateData.getGoodsInfo().forEach(goodsInfoRequest -> {
         goodsInfoRequest.setId("981100006005901");
         goodsInfoRequest.setSubAppId("wxcc3c9058e2b294db");
         if(0 == recoveryOrder){
            goodsInfoRequest.setId("prod".equals(qianYunTongConfig.getActiveProfile()) ? "9811000039358999" : "981100006005901");
         }else{
            goodsInfoRequest.setId("prod".equals(qianYunTongConfig.getActiveProfile()) ? "981100006228370" : "981100006005901");
         }
         goodsInfoRequest.setSubAppId(qianYunTongConfig.getAppId());
         goodsInfoRequest.setAreaInfo("520100");
         goodsInfoRequest.setPayType("0");
         goodsInfoRequest.setBusinessType("10408");
@@ -406,7 +415,7 @@
      
      
      TradeRequest request = new TradeRequest<TradeOrderCreateData>();
      request.setSceneId("1945688132719169536");
      request.setSceneId("prod".equals(qianYunTongConfig.getActiveProfile()) ? "1954793280550756352" : "1945688132719169536");
      request.setAppId(qianYunTongConfig.getAppkey());
      request.setConfigVersion(1);
      request.setRequestId(UUIDUtil.getRandomCode());
@@ -458,7 +467,7 @@
      createOrderRequest.setChannelSource("GRJYCXWXXCX");
      
      TradeRequest request = new TradeRequest<CreateOrderRequest>();
      request.setSceneId("1948289607125864448");
      request.setSceneId("prod".equals(qianYunTongConfig.getActiveProfile()) ? "1954792737421942784" : "1948289607125864448");
      request.setAppId(qianYunTongConfig.getAppkey());
      request.setConfigVersion(1);
      request.setRequestId(UUIDUtil.getRandomCode());
@@ -504,7 +513,7 @@
    * @return
    */
   public static PayInfo tradePayOff(TradePayOffData tradePayOffData) {
      tradePayOffData.setPartnerId("5400005");
      tradePayOffData.setPartnerId("prod".equals(qianYunTongConfig.getActiveProfile()) ? "5401008" : "5400005");
      tradePayOffData.setTimeout("72H");
      tradePayOffData.setScene("TRAFFIC");
      tradePayOffData.setCurrency("RMB");
@@ -529,20 +538,20 @@
      tradePayOffData.setPaymentInfos(paymentInfoRequests);
      List<GoodsInfo> goodsInfo = new ArrayList<>();
      GoodsInfo goodsInfo1 = new GoodsInfo();
      goodsInfo1.setMerchantCode("B00000905");
      goodsInfo1.setCustId("CB0000004686");
      goodsInfo1.setCustName("证联消费平台交易客户");
      goodsInfo1.setMerchantCode("prod".equals(qianYunTongConfig.getActiveProfile()) ? "B00001404" : "B00000905");
      goodsInfo1.setCustId("prod".equals(qianYunTongConfig.getActiveProfile()) ? "CB0000004853" : "CB0000004686");
      goodsInfo1.setCustName("prod".equals(qianYunTongConfig.getActiveProfile()) ? "黔南云码通数字产业运营有限公司" : "证联消费平台交易客户");
      goodsInfo1.setBusinessType("10408");
      goodsInfo1.setAgreementNo("00000000468618354161754464398681");
      goodsInfo1.setAgreementNo("prod".equals(qianYunTongConfig.getActiveProfile()) ? "00000402485377063581755054680461" : "00000000468618354161754464398681");
      goodsInfo1.setProfitSharing("1");
      goodsInfo.add(goodsInfo1);
      tradePayOffData.setGoodsInfo(goodsInfo);
      
      
      TradeRequest request = new TradeRequest<TradePayOffData>();
      request.setSceneId("1774717104844095488");
      request.setSceneId("prod".equals(qianYunTongConfig.getActiveProfile()) ? "1954794605782913024" : "1774717104844095488");
      request.setAppId(qianYunTongConfig.getAppkey());
      request.setConfigVersion(2);
      request.setConfigVersion("prod".equals(qianYunTongConfig.getActiveProfile()) ? 1 : 2);
      request.setRequestId(UUIDUtil.getRandomCode());
      request.setData(tradePayOffData);
      //请求路径
@@ -587,7 +596,7 @@
    * @return
    */
   public static GetPaymentInfo paymentInfo(GetPaymentInfoDataRequest getPaymentInfoDataRequest) {
      getPaymentInfoDataRequest.setPartnerId("5400004");
      getPaymentInfoDataRequest.setPartnerId("prod".equals(qianYunTongConfig.getActiveProfile()) ? "5401007" : "5400004");
      
      GetPaymentInfoRequest request = new GetPaymentInfoRequest();
      request.setRequstType("POST");
@@ -645,7 +654,6 @@
      request.setMhltiCenterAppId("52270015");
      request.setPayType(4);
      request.setPayChannel(6);
      request.setIsCompensate(1);
      //请求路径
      String url = qianYunTongConfig.getApiUrl() + "/openapi/rest/1.0/paymentOrder";
      //私钥文件
@@ -678,6 +686,135 @@
      OrderInfo orderInfo = jsonObject.getObject("busiResp", OrderInfo.class);
      return orderInfo;
   }
   /**
    * 订单退款
    * @param request
    * @return
    */
   public static TradeOrderRefund tradeOrderRefund(TradeOrderRefundRequest request) {
      request.setPayPartnerId("prod".equals(qianYunTongConfig.getActiveProfile()) ? "5400004" : "5401007");
      //请求路径
      String url = qianYunTongConfig.getApiUrl() + "/openapi/rest/1.0/tradeOrderRefund";
      //私钥文件
      String skprivateKeyFile = qianYunTongConfig.getPrivateKeyPath();
      //注意:私钥文件需要开发者手动新建.pem文件,将委办局提供的私钥串复制进文件里用于sign加密
      String appKey = qianYunTongConfig.getAppkey();//appkey
      Map<String, String> headers = new HashMap<>();
      headers.put("Content-Type", "application/json");
      Map<String, Object> contentMap = new HashMap<String, Object>();
      Date nowdate = new Date();
      SimpleDateFormat date = new SimpleDateFormat("yyyyMMddHHmmss");
      String timeStamp = date.format(nowdate);
      String messageId = UUIDUtil.getRandomCode();
      contentMap.put(SystemParameterNames.getAppKey(), appKey);
      contentMap.put(SystemParameterNames.getMessage_id(), messageId);
      contentMap.put(SystemParameterNames.getUserName(), qianYunTongConfig.getUserName());
      contentMap.put(SystemParameterNames.getStatus(), qianYunTongConfig.getStatus());
      contentMap.put("content", new Gson().toJson(request));
      log.info("【订单退款】请求地址:" + url);
      log.info("【订单退款】请求参数:" + JSON.toJSONString(contentMap));
      String result = OpenApiClient.sendCommonHttpRequst(url, headers, "POST", skprivateKeyFile, timeStamp, contentMap);
      log.info("【订单退款】请求结果:" + result);
      JSONObject jsonObject = JSON.parseObject(result);
      String resCode = jsonObject.getString("resCode");
      if (!"000000".equals(resCode)) {
         log.error("【订单退款】失败:" + jsonObject.getString("resMsg"));
         throw new RuntimeException("【订单退款】失败:" + jsonObject.getString("resMsg"));
      }
      JSONObject refundInfo = jsonObject.getJSONObject("busiResp").getJSONObject("refundInfo");
      String retCode = refundInfo.getString("retCode");
      if(!"".equals(retCode)){
         log.error("【订单退款】失败:" + refundInfo.getString("retMsg"));
         throw new RuntimeException("【订单退款】失败:" + refundInfo.getString("retMsg"));
      }
      TradeOrderRefund tradeOrderRefund = refundInfo.getObject("data", TradeOrderRefund.class);
      return tradeOrderRefund;
   }
   /**
    * 订单退款通知
    * @param request
    */
   public static void orderRefundNotice(OrderRefundNoticeRequest request) {
      request.setScene("TRAFFIC");
      request.setMhltiCenterAppId("52270015");
      //请求路径
      String url = qianYunTongConfig.getApiUrl() + "/openapi/rest/1.0/orderRefundNotice";
      //私钥文件
      String skprivateKeyFile = qianYunTongConfig.getPrivateKeyPath();
      //注意:私钥文件需要开发者手动新建.pem文件,将委办局提供的私钥串复制进文件里用于sign加密
      String appKey = qianYunTongConfig.getAppkey();//appkey
      Map<String, String> headers = new HashMap<>();
      headers.put("Content-Type", "application/json");
      Map<String, Object> contentMap = new HashMap<String, Object>();
      Date nowdate = new Date();
      SimpleDateFormat date = new SimpleDateFormat("yyyyMMddHHmmss");
      String timeStamp = date.format(nowdate);
      String messageId = UUIDUtil.getRandomCode();
      contentMap.put(SystemParameterNames.getAppKey(), appKey);
      contentMap.put(SystemParameterNames.getMessage_id(), messageId);
      contentMap.put(SystemParameterNames.getUserName(), qianYunTongConfig.getUserName());
      contentMap.put(SystemParameterNames.getStatus(), qianYunTongConfig.getStatus());
      contentMap.put("content", new Gson().toJson(request));
      log.info("【订单退款通知】请求地址:" + url);
      log.info("【订单退款通知】请求参数:" + JSON.toJSONString(contentMap));
      String result = OpenApiClient.sendCommonHttpRequst(url, headers, "POST", skprivateKeyFile, timeStamp, contentMap);
      log.info("【订单退款通知】请求结果:" + result);
      JSONObject jsonObject = JSON.parseObject(result);
      String resCode = jsonObject.getString("resCode");
      if (!"000000".equals(resCode)) {
         log.error("【订单退款通知】失败:" + jsonObject.getString("resMsg"));
         throw new RuntimeException("【订单退款通知】失败:" + jsonObject.getString("resMsg"));
      }
   }
   /**
    * 订单取消
    * @param orderId
    */
   public static void tradeOrderCancel(String orderId) {
      TradeOrderCancelRequest request = new TradeOrderCancelRequest();
      request.setScene("TRAFFIC");
      request.setMhltiCenterAppId("52270015");
      request.setOrderId(orderId);
      //请求路径
      String url = qianYunTongConfig.getApiUrl() + "/openapi/rest/1.0/tradeOrderCancel";
      //私钥文件
      String skprivateKeyFile = qianYunTongConfig.getPrivateKeyPath();
      //注意:私钥文件需要开发者手动新建.pem文件,将委办局提供的私钥串复制进文件里用于sign加密
      String appKey = qianYunTongConfig.getAppkey();//appkey
      Map<String, String> headers = new HashMap<>();
      headers.put("Content-Type", "application/json");
      Map<String, Object> contentMap = new HashMap<String, Object>();
      Date nowdate = new Date();
      SimpleDateFormat date = new SimpleDateFormat("yyyyMMddHHmmss");
      String timeStamp = date.format(nowdate);
      String messageId = UUIDUtil.getRandomCode();
      contentMap.put(SystemParameterNames.getAppKey(), appKey);
      contentMap.put(SystemParameterNames.getMessage_id(), messageId);
      contentMap.put(SystemParameterNames.getUserName(), qianYunTongConfig.getUserName());
      contentMap.put(SystemParameterNames.getStatus(), qianYunTongConfig.getStatus());
      contentMap.put("content", new Gson().toJson(request));
      log.info("【订单取消】请求地址:" + url);
      log.info("【订单取消】请求参数:" + JSON.toJSONString(contentMap));
      String result = OpenApiClient.sendCommonHttpRequst(url, headers, "POST", skprivateKeyFile, timeStamp, contentMap);
      log.info("【订单取消】请求结果:" + result);
      JSONObject jsonObject = JSON.parseObject(result);
      String resCode = jsonObject.getString("resCode");
      if (!"000000".equals(resCode)) {
         log.error("【订单取消】失败:" + jsonObject.getString("resMsg"));
         throw new RuntimeException("【订单取消】失败:" + jsonObject.getString("resMsg"));
      }
   }
}