New file |
| | |
| | | package com.supersavedriving.driver.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.supersavedriving.driver.modular.system.util.SpringContextsUtil; |
| | | import com.supersavedriving.driver.modular.system.util.UUIDUtil; |
| | | import com.supersavedriving.driver.modular.system.util.qianyuntong.model.*; |
| | | import lombok.extern.slf4j.Slf4j; |
| | | |
| | | import java.net.InetAddress; |
| | | import java.net.UnknownHostException; |
| | | import java.text.SimpleDateFormat; |
| | | import java.util.*; |
| | | |
| | | /** |
| | | * @author zhibing.pu |
| | | * @Date 2025/7/24 9:34 |
| | | */ |
| | | @Slf4j |
| | | public class OrderUtil { |
| | | |
| | | private static QianYunTongConfig qianYunTongConfig = SpringContextsUtil.getBean(QianYunTongConfig.class).getQianYunTongConfig(); |
| | | |
| | | |
| | | public static void main(String[] args) { |
| | | //创建行程 |
| | | // CreateTravelItineraryRequest request = new CreateTravelItineraryRequest(); |
| | | // request.setScene("TRAFFIC"); |
| | | // request.setPartnerId("522700"); |
| | | // request.setOrderNo("3456789012345678"); |
| | | // request.setCustomerId("11448156"); |
| | | // request.setDriverId("11448158"); |
| | | // request.setSupplierShopId("981100006005951"); |
| | | // request.setServiceType(1); |
| | | // String travelItinerary = createTravelItinerary(request); |
| | | // System.err.println(travelItinerary);//1951088602595872768 |
| | | |
| | | //修改行程状态 |
| | | // ModifyTravelItineraryRequest request = new ModifyTravelItineraryRequest(); |
| | | // request.setScene("TRAFFIC"); |
| | | // request.setPartnerId("522700"); |
| | | // request.setOrderId("1951088602595872768"); |
| | | // 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("1951088602595872768"); |
| | | // tradeOrderCreateData.setOrderNo("3456789012345678"); |
| | | // tradeOrderCreateData.setCustomerId("11448156"); |
| | | // tradeOrderCreateData.setPayPartnerId("5400004"); |
| | | // tradeOrderCreateData.setPartnerPayId("1951088602595872768"); |
| | | // 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("wxcc3c9058e2b294db"); |
| | | // goodsInfoRequest.setSubOpenId("oVLur61wBKJEO7QPR1dsmzS5TSfs"); |
| | | // 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("1951088602595872768"); |
| | | // tradePayOff1Data.setCurrency("RMB"); |
| | | // tradePayOff1Data.setTotalFee("1"); |
| | | // tradePayOff1Data.setRetUrl("pages/advoad-city-search/advoad-message/electronic-wait-pay/electronic-wait-pay"); |
| | | // 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("wxcc3c9058e2b294db"); |
| | | // goodsInfoRequest.setSubOpenId("oVLur61wBKJEO7QPR1dsmzS5TSfs"); |
| | | // 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) { |
| | | tradePayOff1Data.setPartnerId("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"); |
| | | |
| | | goodsInfoRequest.setAreaInfo("520100"); |
| | | goodsInfoRequest.setPayType("0"); |
| | | goodsInfoRequest.setBusinessType("10408"); |
| | | }); |
| | | |
| | | |
| | | TradeRequest request = new TradeRequest<TradePayOff1Data>(); |
| | | request.setSceneId("1911676727023968256"); |
| | | request.setAppId(qianYunTongConfig.getAppkey()); |
| | | request.setConfigVersion(1); |
| | | request.setRequestId(UUIDUtil.getRandomCode()); |
| | | request.setData(tradePayOff1Data); |
| | | //请求路径 |
| | | String url = qianYunTongConfig.getApiUrl() + "/openapi/rest/1.0/tradePayOff"; |
| | | //私钥文件 |
| | | 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 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 = qianYunTongConfig.getApiUrl() + "/openapi/rest/1.0/createTravelItinerary"; |
| | | //私钥文件 |
| | | 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")); |
| | | } |
| | | return jsonObject.getString("busiResp"); |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 修改行程单 |
| | | * |
| | | * @param request |
| | | */ |
| | | public static Boolean modifyTravelItinerary(ModifyTravelItineraryRequest request) { |
| | | request.setScene("TRAFFIC"); |
| | | request.setPartnerId("522700"); |
| | | //请求路径 |
| | | String url = qianYunTongConfig.getApiUrl() + "/openapi/rest/1.0/modifyTravelItinerary"; |
| | | //私钥文件 |
| | | 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")); |
| | | } |
| | | return true; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 行程单列表查询 |
| | | * |
| | | * @param request |
| | | * @return |
| | | */ |
| | | public static ListPage<List<TravelItinerary>> getTravelItineraryList(GetTravelItineraryListRequest request) { |
| | | request.setScene("TRAFFIC"); |
| | | request.setPartnerId("522700"); |
| | | |
| | | //请求路径 |
| | | String url = qianYunTongConfig.getApiUrl() + "/openapi/rest/1.0/getTravelItineraryList"; |
| | | //私钥文件 |
| | | 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 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<List<TravelItinerary>>(); |
| | | listPage.setTotal(total); |
| | | listPage.setPageNum(pageNum); |
| | | listPage.setPageSize(pageSize); |
| | | listPage.setList(travelItineraryList); |
| | | return listPage; |
| | | } |
| | | |
| | | /** |
| | | * 订单创建及拉起支付 |
| | | * |
| | | * @param tradeOrderCreateData |
| | | * @return |
| | | */ |
| | | public static TradeOrderCreate tradeOrderCreate1(TradeOrderCreateData tradeOrderCreateData) { |
| | | tradeOrderCreateData.setScene("TRAFFIC"); |
| | | tradeOrderCreateData.setPartnerId("522700"); |
| | | tradeOrderCreateData.setTimeout("72H"); |
| | | tradeOrderCreateData.setOrderAppId("52270015"); |
| | | tradeOrderCreateData.setChannelSource("GRJYCXWXXCX"); |
| | | tradeOrderCreateData.setPayPartnerId("5400004"); |
| | | tradeOrderCreateData.setCurrency("RMB"); |
| | | tradeOrderCreateData.setNeedLoginFlag("N"); |
| | | tradeOrderCreateData.setAccessMode("APP"); |
| | | tradeOrderCreateData.getGoodsInfo().forEach(goodsInfoRequest -> { |
| | | goodsInfoRequest.setId("981100006005901"); |
| | | goodsInfoRequest.setSubAppId("wxcc3c9058e2b294db"); |
| | | goodsInfoRequest.setAreaInfo("520100"); |
| | | goodsInfoRequest.setPayType("0"); |
| | | goodsInfoRequest.setBusinessType("10408"); |
| | | }); |
| | | |
| | | |
| | | TradeRequest request = new TradeRequest<TradeOrderCreateData>(); |
| | | request.setSceneId("1945688132719169536"); |
| | | request.setAppId(qianYunTongConfig.getAppkey()); |
| | | request.setConfigVersion(1); |
| | | request.setRequestId(UUIDUtil.getRandomCode()); |
| | | request.setData(tradeOrderCreateData); |
| | | |
| | | //请求路径 |
| | | String url = qianYunTongConfig.getApiUrl() + "/openapi/rest/1.0/tradeOrderCreate"; |
| | | //私钥文件 |
| | | 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")); |
| | | } |
| | | TradeOrderCreate busiResp = jsonObject.getObject("busiResp", TradeOrderCreate.class); |
| | | return busiResp; |
| | | } |
| | | |
| | | /** |
| | | * 订单创建 |
| | | * |
| | | * @param createOrderRequest |
| | | * @return |
| | | */ |
| | | public static OrderInfo tradeOrderCreate(CreateOrderRequest createOrderRequest) { |
| | | createOrderRequest.setOrderAppId("52270015"); |
| | | createOrderRequest.setScene("TRAFFIC"); |
| | | createOrderRequest.setPartnerId("522700"); |
| | | createOrderRequest.setChannelSource("GRJYCXWXXCX"); |
| | | |
| | | TradeRequest request = new TradeRequest<CreateOrderRequest>(); |
| | | request.setSceneId("1948289607125864448"); |
| | | request.setAppId(qianYunTongConfig.getAppkey()); |
| | | request.setConfigVersion(1); |
| | | request.setRequestId(UUIDUtil.getRandomCode()); |
| | | request.setData(createOrderRequest); |
| | | //请求路径 |
| | | String url = qianYunTongConfig.getApiUrl() + "/openapi/rest/1.0/tradeOrderCreate"; |
| | | //私钥文件 |
| | | 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 busiResp = jsonObject.getJSONObject("busiResp"); |
| | | OrderInfo orderInfo = busiResp.getObject("orderInfo", OrderInfo.class); |
| | | return orderInfo; |
| | | } |
| | | |
| | | /** |
| | | * (补偿单)拉起支付 |
| | | * |
| | | * @param tradePayOffData |
| | | * @return |
| | | */ |
| | | public static PayInfo tradePayOff(TradePayOffData tradePayOffData) { |
| | | tradePayOffData.setPartnerId("5400005"); |
| | | tradePayOffData.setTimeout("72H"); |
| | | tradePayOffData.setScene("TRAFFIC"); |
| | | tradePayOffData.setCurrency("RMB"); |
| | | tradePayOffData.setRetUrl(""); |
| | | InetAddress inetAddress = null; |
| | | try { |
| | | inetAddress = InetAddress.getLocalHost(); |
| | | } catch (UnknownHostException e) { |
| | | throw new RuntimeException(e); |
| | | } |
| | | String ip = inetAddress.getHostAddress(); |
| | | tradePayOffData.setClientIp(ip); |
| | | tradePayOffData.setNeedLoginFlag("N"); |
| | | tradePayOffData.setAccessMode("APP"); |
| | | List<PaymentInfoRequest> paymentInfoRequests = new ArrayList<>(); |
| | | PaymentInfoRequest paymentInfoRequest = new PaymentInfoRequest(); |
| | | paymentInfoRequest.setPayModeId("501212"); |
| | | paymentInfoRequest.setRealFee(tradePayOffData.getTotalFee().toString()); |
| | | paymentInfoRequest.setTradeFee(tradePayOffData.getTotalFee().toString()); |
| | | paymentInfoRequest.setAccountTyp("501"); |
| | | paymentInfoRequests.add(paymentInfoRequest); |
| | | tradePayOffData.setPaymentInfos(paymentInfoRequests); |
| | | List<GoodsInfo> goodsInfo = new ArrayList<>(); |
| | | GoodsInfo goodsInfo1 = new GoodsInfo(); |
| | | goodsInfo1.setMerchantCode("B00000905"); |
| | | goodsInfo1.setCustId("CB0000004686"); |
| | | goodsInfo1.setCustName("证联消费平台交易客户"); |
| | | goodsInfo1.setBusinessType("10408"); |
| | | goodsInfo1.setAgreementNo("00000000468618354161754464398681"); |
| | | goodsInfo1.setProfitSharing("1"); |
| | | goodsInfo.add(goodsInfo1); |
| | | tradePayOffData.setGoodsInfo(goodsInfo); |
| | | |
| | | |
| | | TradeRequest request = new TradeRequest<TradePayOffData>(); |
| | | request.setSceneId("1774717104844095488"); |
| | | request.setAppId(qianYunTongConfig.getAppkey()); |
| | | request.setConfigVersion(2); |
| | | request.setRequestId(UUIDUtil.getRandomCode()); |
| | | request.setData(tradePayOffData); |
| | | //请求路径 |
| | | String url = qianYunTongConfig.getApiUrl() + "/openapi/rest/1.0/tradePayOff"; |
| | | //私钥文件 |
| | | 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 busiResp = jsonObject.getJSONObject("busiResp"); |
| | | PayInfo payInfo = busiResp.getObject("payInfo", PayInfo.class); |
| | | return payInfo; |
| | | } |
| | | |
| | | |
| | | /** |
| | | * 查询支付单信息 |
| | | * |
| | | * @param getPaymentInfoDataRequest |
| | | * @return |
| | | */ |
| | | public static GetPaymentInfo paymentInfo(GetPaymentInfoDataRequest getPaymentInfoDataRequest) { |
| | | getPaymentInfoDataRequest.setPartnerId("5400004"); |
| | | |
| | | GetPaymentInfoRequest request = new GetPaymentInfoRequest(); |
| | | request.setRequstType("POST"); |
| | | request.setBusType(1); |
| | | request.setData(getPaymentInfoDataRequest); |
| | | |
| | | //请求路径 |
| | | String url = qianYunTongConfig.getApiUrl() + "/openapi/rest/1.0/paymentInfo"; |
| | | //私钥文件 |
| | | 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("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) { |
| | | request.setScene("TRAFFIC"); |
| | | request.setMhltiCenterAppId("52270015"); |
| | | request.setPayType(4); |
| | | request.setPayChannel(6); |
| | | request.setIsCompensate(1); |
| | | //请求路径 |
| | | String url = qianYunTongConfig.getApiUrl() + "/openapi/rest/1.0/paymentOrder"; |
| | | //私钥文件 |
| | | 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")); |
| | | } |
| | | OrderInfo orderInfo = jsonObject.getObject("busiResp", OrderInfo.class); |
| | | return orderInfo; |
| | | } |
| | | |
| | | |
| | | } |