From 7c48261114a964c5cc3a964bcf00772152d2b531 Mon Sep 17 00:00:00 2001 From: liujie <1793218484@qq.com> Date: 星期五, 01 八月 2025 13:47:05 +0800 Subject: [PATCH] Merge branch 'master' of http://120.76.84.145:10101/gitblit/r/java/QianYunTong --- DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/OrderUtil.java | 595 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 595 insertions(+), 0 deletions(-) diff --git a/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/OrderUtil.java b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/OrderUtil.java new file mode 100644 index 0000000..b0314db --- /dev/null +++ b/DriverQYTTravel/guns-admin/src/main/java/com/stylefeng/guns/modular/system/util/qianyuntong/OrderUtil.java @@ -0,0 +1,595 @@ +package com.stylefeng.guns.modular.system.util.qianyuntong; + +import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.google.gson.Gson; +import com.open.common.util.OpenApiClient; +import com.open.common.util.SystemParameterNames; +import com.stylefeng.guns.modular.system.util.UUIDUtil; +import com.stylefeng.guns.modular.system.util.qianyuntong.model.*; +import lombok.extern.slf4j.Slf4j; + +import java.text.SimpleDateFormat; +import java.util.*; + +/** + * @author zhibing.pu + * @Date 2025/7/24 9:34 + */ +@Slf4j +public class OrderUtil { + + + public static void main(String[] args) { + //创建行程 +// CreateTravelItineraryRequest request = new CreateTravelItineraryRequest(); +// request.setScene("TRAFFIC"); +// request.setPartnerId("522700"); +// request.setOrderNo("01234567890"); +// request.setCustomerId("11448156"); +// request.setDriverId("11448158"); +// request.setSupplierShopId("981100006005951"); +// request.setServiceType(1); +// String travelItinerary = createTravelItinerary(request); +// System.err.println(travelItinerary);//1950363840206753792 + + //修改行程状态 +// ModifyTravelItineraryRequest request = new ModifyTravelItineraryRequest(); +// request.setScene("TRAFFIC"); +// request.setPartnerId("522700"); +// request.setOrderId("1950363840206753792"); +// request.setStatus(7); +// request.setDriverId("11448158"); +// request.setSupplierShopId("981100006005951"); +// Boolean aBoolean = modifyTravelItinerary(request); + + //订单创建及拉起支付 +// TradeOrderCreateData tradeOrderCreateData = new TradeOrderCreateData(); +// tradeOrderCreateData.setScene("TRAFFIC"); +// tradeOrderCreateData.setPartnerId("522700"); +// tradeOrderCreateData.setTreatShopId("11448158"); +// tradeOrderCreateData.setOrderAppId("52270015"); +// tradeOrderCreateData.setField1("{\"profitSharing\":\"1\",\"isPromote\":\"0\"}"); +// tradeOrderCreateData.setCharge(new BigDecimal("0.01")); +// tradeOrderCreateData.setChannelSource("GRJYCXWXXCX"); +// tradeOrderCreateData.setOrderId("1950363840206753792"); +// tradeOrderCreateData.setOrderNo("01234567890"); +// tradeOrderCreateData.setCustomerId("11448156"); +// tradeOrderCreateData.setPayPartnerId("5400004"); +// tradeOrderCreateData.setPartnerPayId("1950363840206753792"); +// tradeOrderCreateData.setCurrency("RMB"); +// tradeOrderCreateData.setTotalFee("1"); +// tradeOrderCreateData.setRetUrl("pages/advoad-city-search/advoad-message/electronic-wait-pay/electronic-wait-pay"); +// tradeOrderCreateData.setClientIp("127.0.0.1"); +// tradeOrderCreateData.setNeedLoginFlag("N"); +// tradeOrderCreateData.setOrderDesc("出行订单支付"); +// tradeOrderCreateData.setAccessMode("APP"); +// +// List<GoodsInfoRequest> goodsInfo = new ArrayList<>(); +// GoodsInfoRequest goodsInfoRequest = new GoodsInfoRequest(); +// goodsInfoRequest.setId("981100006005901"); +// goodsInfoRequest.setSubAppId("wxcbad113185a243e1"); +// goodsInfoRequest.setSubOpenId("oVLur6yFtED8ruXBWUFKXjzXJ_BQ"); +// goodsInfoRequest.setProfitSharing("1"); +// goodsInfoRequest.setAreaInfo("520100"); +// goodsInfoRequest.setPayType("0"); +// goodsInfoRequest.setBusinessType("10408"); +// goodsInfo.add(goodsInfoRequest); +// tradeOrderCreateData.setGoodsInfo(goodsInfo); +// TradeOrderCreate tradeOrderCreate = tradeOrderCreate1(tradeOrderCreateData); +// System.err.println(tradeOrderCreate); + //TradeOrderCreate(orderInfo=OrderInfo(orderId=1950072223939842048, status=null), payInfo=PayInfo(retCode=000000, retMsg=success, success=true, data=PayInfoData(redirectUrl=https://qhsctest.qytzt.cn/gray/mobile/index.html?f=allCashDesk&accessToken=It5FPM1DUjzwIAin7zwiHvUANWKC6I5USCLE8EKoRkg%3D, payId=540000420250729000135600, status=null, payTime=null, payFee=null, paymentInfos=null), sign=525cb843b1eeb5a0451eeb5fbbe02f0f)) + + //查询支付单信息 +// GetPaymentInfoDataRequest getPaymentInfoDataRequest = new GetPaymentInfoDataRequest(); +// getPaymentInfoDataRequest.setPartnerId("5400004"); +// getPaymentInfoDataRequest.setPartnerPayId("1948685426689200128"); +// GetPaymentInfo getPaymentInfo = paymentInfo(getPaymentInfoDataRequest); +// System.err.println(getPaymentInfo); + + //拉起支付 +// TradePayOff1Data tradePayOff1Data = new TradePayOff1Data(); +// tradePayOff1Data.setPartnerId("5400004"); +// tradePayOff1Data.setScene("TRAFFIC"); +// tradePayOff1Data.setPartnerPayId("1948685426689200128"); +// tradePayOff1Data.setCurrency("RMB"); +// tradePayOff1Data.setTotalFee("1"); +// tradePayOff1Data.setRetUrl("/home/"); +// tradePayOff1Data.setClientIp("127.0.0.1"); +// tradePayOff1Data.setNeedLoginFlag("N"); +// tradePayOff1Data.setOrderDesc("出行订单支付"); +// tradePayOff1Data.setAccessMode("APP"); +// List<GoodsInfoRequest> goodsInfo = new ArrayList<>(); +// GoodsInfoRequest goodsInfoRequest = new GoodsInfoRequest(); +// goodsInfoRequest.setId("981100006005901"); +// goodsInfoRequest.setSubAppId("wxcbad113185a243e1"); +// goodsInfoRequest.setSubOpenId("oVLur6yFtED8ruXBWUFKXjzXJ_BQ"); +// goodsInfoRequest.setProfitSharing("1"); +// goodsInfoRequest.setAreaInfo("520100"); +// goodsInfoRequest.setPayType("0"); +// goodsInfoRequest.setBusinessType("10408"); +// goodsInfo.add(goodsInfoRequest); +// tradePayOff1Data.setGoodsInfo(goodsInfo); +// PayInfo payInfo = tradePayOff1(tradePayOff1Data); +// System.err.println(payInfo); + //PayInfo(retCode=000000, retMsg=success, success=true, data=PayInfoData(redirectUrl=https://qhsctest.qytzt.cn/gray/mobile/index.html?f=allCashDesk&accessToken=5nUBXayFpfZz%2FXUZiMu9LzeRXmqmlqaCS%2BHfu5udIt4%3D, payId=540000420250725000135549, status=null, payTime=null, payFee=null, paymentInfos=null), sign=8154ba2728280900b122c56352c1c7fe) + + + // (补偿单)拉起支付 +// TradePayOffData tradePayOffData = new TradePayOffData(); +// tradePayOffData.setPartnerId("5400004"); +// tradePayOffData.setScene("TRAFFIC"); +// tradePayOffData.setPartnerPayId("1948685426689200128"); +// tradePayOffData.setCurrency("RMB"); +// tradePayOffData.setTotalFee("1"); +// tradePayOffData.setRetUrl("/home/"); +// tradePayOffData.setClientIp("127.0.0.1"); +// tradePayOffData.setNeedLoginFlag("N"); +// tradePayOffData.setOrderDesc("出行订单支付"); +// tradePayOffData.setAccessMode("APP"); +// List<PaymentInfoRequest> paymentInfoRequests = new ArrayList<>(); +// PaymentInfoRequest paymentInfoRequest = new PaymentInfoRequest(); +// paymentInfoRequest.setPayModeId("501212"); +// paymentInfoRequests.add(paymentInfoRequest); +// tradePayOffData.setPaymentInfos(paymentInfoRequests); +// List<GoodsInfo> goodsInfo = new ArrayList<>(); +// GoodsInfo goodsInfo1 = new GoodsInfo(); +// goodsInfo1.setMerchantCode(""); +// goodsInfo1.setCustId(""); +// goodsInfo1.setCustName(""); +// goodsInfo1.setProfitSharing("1"); +// goodsInfo.add(goodsInfo1); +// tradePayOffData.setGoodsInfo(goodsInfo); +// PayInfo payInfo1 = tradePayOff(tradePayOffData); +// System.err.println(payInfo1); + + //订单创建 +// CreateOrderRequest createOrderRequest = new CreateOrderRequest(); +// createOrderRequest.setTreatShopId("11448158"); +// createOrderRequest.setOrderAppId("52270015"); +// createOrderRequest.setScene("TRAFFIC"); +// createOrderRequest.setPartnerId("522700"); +// createOrderRequest.setField1("{\"profitSharing\":\"1\",\"isPromote\":\"0\"}"); +// createOrderRequest.setCharge(new BigDecimal("0.01")); +// createOrderRequest.setChannelSource("GRJYCXWXXCX"); +// createOrderRequest.setOrderId("1948685426689200128"); +// createOrderRequest.setOrderNo("0123456"); +// createOrderRequest.setCustomerId("11448156"); +// OrderInfo orderInfo = tradeOrderCreate(createOrderRequest); +// System.err.println(orderInfo); + + //行程单列表查询 +// GetTravelItineraryListRequest request = new GetTravelItineraryListRequest(); +// request.setScene("TRAFFIC"); +// request.setPartnerId("522700"); +// request.setCustomerId("11448156"); +// request.setOrderNo("0123456"); +// request.setDriverId("11448158"); +// ListPage<TravelItinerary> travelItineraryList = getTravelItineraryList(request); +// System.err.println(travelItineraryList); + + } + + /** + * 拉起支付 + * + * @param tradePayOff1Data + * @return + */ + public static PayInfo tradePayOff1(TradePayOff1Data tradePayOff1Data) { + TradeRequest request = new TradeRequest<TradePayOff1Data>(); + request.setSceneId("1911676727023968256"); + request.setAppId(QianYunTongProperties.appkey); + request.setConfigVersion(1); + request.setRequestId(UUIDUtil.getRandomCode()); + request.setData(tradePayOff1Data); + //请求路径 + String url = QianYunTongProperties.apiUrl + "/openapi/rest/1.0/tradePayOff"; + //私钥文件 + String skprivateKeyFile = QianYunTongProperties.privateKeyPath; + //注意:私钥文件需要开发者手动新建.pem文件,将委办局提供的私钥串复制进文件里用于sign加密 + String appKey = QianYunTongProperties.appkey;//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(), QianYunTongProperties.userName); + contentMap.put(SystemParameterNames.getStatus(), QianYunTongProperties.status); + 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 busiResp = jsonObject.getJSONObject("busiResp"); + PayInfo payInfo = busiResp.getObject("payInfo", PayInfo.class); + return payInfo; + } + + /** + * 创建行程单 + * @param request + * @return 行程单ID + */ + public static String createTravelItinerary(CreateTravelItineraryRequest request){ + request.setScene("TRAFFIC"); + request.setPartnerId("522700"); + //请求路径 + String url = QianYunTongProperties.apiUrl + "/openapi/rest/1.0/createTravelItinerary"; + //私钥文件 + String skprivateKeyFile = QianYunTongProperties.privateKeyPath; + //注意:私钥文件需要开发者手动新建.pem文件,将委办局提供的私钥串复制进文件里用于sign加密 + String appKey = QianYunTongProperties.appkey;//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(), QianYunTongProperties.userName); + contentMap.put(SystemParameterNames.getStatus(), QianYunTongProperties.status); + 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")); + } + return jsonObject.getString("busiResp"); + } + + + + /** + * 修改行程单 + * @param request + */ + public static Boolean modifyTravelItinerary(ModifyTravelItineraryRequest request){ + request.setScene("TRAFFIC"); + request.setPartnerId("522700"); + //请求路径 + String url = QianYunTongProperties.apiUrl + "/openapi/rest/1.0/modifyTravelItinerary"; + //私钥文件 + String skprivateKeyFile = QianYunTongProperties.privateKeyPath; + //注意:私钥文件需要开发者手动新建.pem文件,将委办局提供的私钥串复制进文件里用于sign加密 + String appKey = QianYunTongProperties.appkey;//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(), QianYunTongProperties.userName); + contentMap.put(SystemParameterNames.getStatus(), QianYunTongProperties.status); + 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")); + } + return true; + } + + + /** + * 行程单列表查询 + * @param request + * @return + */ + public static ListPage<TravelItinerary> getTravelItineraryList(GetTravelItineraryListRequest request){ + //请求路径 + String url = QianYunTongProperties.apiUrl + "/openapi/rest/1.0/getTravelItineraryList"; + //私钥文件 + String skprivateKeyFile = QianYunTongProperties.privateKeyPath; + //注意:私钥文件需要开发者手动新建.pem文件,将委办局提供的私钥串复制进文件里用于sign加密 + String appKey = QianYunTongProperties.appkey;//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(), QianYunTongProperties.userName); + contentMap.put(SystemParameterNames.getStatus(), QianYunTongProperties.status); + 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 busiResp = jsonObject.getJSONObject("busiResp"); + Integer total = busiResp.getInteger("total"); + Integer pageNum = busiResp.getInteger("pageNum"); + Integer pageSize = busiResp.getInteger("pageSize"); + JSONArray list = busiResp.getJSONArray("list"); + List<TravelItinerary> travelItineraryList = new ArrayList<>(); + for (int i = 0; i < list.size(); i++) { + TravelItinerary object = list.getObject(i, TravelItinerary.class); + travelItineraryList.add(object); + } + ListPage listPage = new ListPage<TravelItinerary>(); + listPage.setTotal(total); + listPage.setPageNum(pageNum); + listPage.setPageSize(pageSize); + listPage.setList(travelItineraryList); + return listPage; + } + + /** + * 订单创建及拉起支付 + * + * @param tradeOrderCreateData + * @return + */ + public static TradeOrderCreate tradeOrderCreate1(TradeOrderCreateData tradeOrderCreateData) { + TradeRequest request = new TradeRequest<TradeOrderCreateData>(); + request.setSceneId("1945688132719169536"); + request.setAppId(QianYunTongProperties.appkey); + request.setConfigVersion(1); + request.setRequestId(UUIDUtil.getRandomCode()); + request.setData(tradeOrderCreateData); + + //请求路径 + String url = QianYunTongProperties.apiUrl + "/openapi/rest/1.0/tradeOrderCreate"; + //私钥文件 + String skprivateKeyFile = QianYunTongProperties.privateKeyPath; + //注意:私钥文件需要开发者手动新建.pem文件,将委办局提供的私钥串复制进文件里用于sign加密 + String appKey = QianYunTongProperties.appkey;//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(), QianYunTongProperties.userName); + contentMap.put(SystemParameterNames.getStatus(), QianYunTongProperties.status); + 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")); + } + TradeOrderCreate busiResp = jsonObject.getObject("busiResp", TradeOrderCreate.class); + return busiResp; + } + + /** + * 订单创建 + * + * @param createOrderRequest + * @return + */ + public static OrderInfo tradeOrderCreate(CreateOrderRequest createOrderRequest) { + TradeRequest request = new TradeRequest<CreateOrderRequest>(); + request.setSceneId(QianYunTongProperties.sceneId); + request.setAppId(QianYunTongProperties.appkey); + request.setConfigVersion(1); + request.setRequestId(UUIDUtil.getRandomCode()); + request.setData(createOrderRequest); + //请求路径 + String url = QianYunTongProperties.apiUrl + "/openapi/rest/1.0/tradeOrderCreate"; + //私钥文件 + String skprivateKeyFile = QianYunTongProperties.privateKeyPath; + //注意:私钥文件需要开发者手动新建.pem文件,将委办局提供的私钥串复制进文件里用于sign加密 + String appKey = QianYunTongProperties.appkey;//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(), QianYunTongProperties.userName); + contentMap.put(SystemParameterNames.getStatus(), QianYunTongProperties.status); + 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 busiResp = jsonObject.getJSONObject("busiResp"); + OrderInfo orderInfo = busiResp.getObject("orderInfo", OrderInfo.class); + return orderInfo; + } + + /** + * (补偿单)拉起支付 + * + * @param tradePayOffData + * @return + */ + public static PayInfo tradePayOff(TradePayOffData tradePayOffData) { + TradeRequest request = new TradeRequest<TradePayOffData>(); + request.setSceneId("1774717104844095488"); + request.setAppId(QianYunTongProperties.appkey); + request.setConfigVersion(1); + request.setRequestId(UUIDUtil.getRandomCode()); + request.setData(tradePayOffData); + //请求路径 + String url = QianYunTongProperties.apiUrl + "/openapi/rest/1.0/tradePayOff"; + //私钥文件 + String skprivateKeyFile = QianYunTongProperties.privateKeyPath; + //注意:私钥文件需要开发者手动新建.pem文件,将委办局提供的私钥串复制进文件里用于sign加密 + String appKey = QianYunTongProperties.appkey;//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(), QianYunTongProperties.userName); + contentMap.put(SystemParameterNames.getStatus(), QianYunTongProperties.status); + 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 busiResp = jsonObject.getJSONObject("busiResp"); + PayInfo payInfo = busiResp.getObject("payInfo", PayInfo.class); + return payInfo; + } + + + /** + * 查询支付单信息 + * @param getPaymentInfoDataRequest + * @return + */ + public static GetPaymentInfo paymentInfo(GetPaymentInfoDataRequest getPaymentInfoDataRequest){ + GetPaymentInfoRequest request = new GetPaymentInfoRequest(); + request.setRequstType("POST"); + request.setBusType(1); + request.setData(getPaymentInfoDataRequest); + + //请求路径 + String url = QianYunTongProperties.apiUrl + "/openapi/rest/1.0/paymentInfo"; + //私钥文件 + String skprivateKeyFile = QianYunTongProperties.privateKeyPath; + //注意:私钥文件需要开发者手动新建.pem文件,将委办局提供的私钥串复制进文件里用于sign加密 + String appKey = QianYunTongProperties.appkey;//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(), QianYunTongProperties.userName); + contentMap.put(SystemParameterNames.getStatus(), QianYunTongProperties.status); + 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("retCode"); + if(!"0".equals(resCode)){ + log.error("【查询支付单信息】失败:" + jsonObject.getString("retMsg")); + throw new RuntimeException("【查询支付单信息】失败:" + jsonObject.getString("retMsg")); + } + JSONObject object = jsonObject.getJSONObject("object"); + String retCode = object.getString("retCode"); + if(!"000000".equals(retCode)){ + log.error("【查询支付单信息】失败:" + jsonObject.getString("retMsg")); + throw new RuntimeException("【查询支付单信息】失败:" + jsonObject.getString("retMsg")); + } + GetPaymentInfo payInfo = object.getObject("data", GetPaymentInfo.class); + return payInfo; + } + + + /** + * (补偿单)支付成功通知 + * @param request + * @return + */ + public static OrderInfo paymentOrder(PaymentOrderRequest request){ + //请求路径 + String url = QianYunTongProperties.apiUrl + "/openapi/rest/1.0/paymentOrder"; + //私钥文件 + String skprivateKeyFile = QianYunTongProperties.privateKeyPath; + //注意:私钥文件需要开发者手动新建.pem文件,将委办局提供的私钥串复制进文件里用于sign加密 + String appKey = QianYunTongProperties.appkey;//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(), QianYunTongProperties.userName); + contentMap.put(SystemParameterNames.getStatus(), QianYunTongProperties.status); + 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(!"0".equals(resCode)){ + log.error("【(补偿单)支付成功通知】失败:" + jsonObject.getString("resMsg")); + throw new RuntimeException("【(补偿单)支付成功通知】失败:" + jsonObject.getString("resMsg")); + } + OrderInfo orderInfo = jsonObject.getObject("busiResp", OrderInfo.class); + return orderInfo; + } + + + + + + + + +} -- Gitblit v1.7.1