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(QianYunTongProperties.sceneId);
|
request.setPartnerId("522700");
|
request.setOrderNo("123456");
|
request.setCustomerId("11448156");
|
request.setDriverId("11448158");
|
request.setSupplierShopId("981100006005951");
|
request.setServiceType(1);
|
String travelItinerary = createTravelItinerary(request);
|
System.err.println(travelItinerary);
|
|
// CreateOrderRequest createOrderRequest = new CreateOrderRequest();
|
// createOrderRequest.setTreatShopId("");
|
// createOrderRequest.setOrderAppId("52270015");
|
// createOrderRequest.setScene("TRAFFIC");
|
// createOrderRequest.setPartnerId("522700");
|
// createOrderRequest.setField1("{\"profitSharing\":\"0\",\"isPromote\":\"0\"}");
|
// createOrderRequest.setCharge(new BigDecimal("0.01"));
|
// createOrderRequest.setChannelSource("GRJYCXWXXCX");
|
// createOrderRequest.setOrderId("");
|
// createOrderRequest.setOrderNo("");
|
// createOrderRequest.setCustomerId("");
|
// OrderInfo orderInfo = tradeOrderCreate(createOrderRequest);
|
|
}
|
|
|
|
/**
|
* 订单创建
|
* @param createOrderRequest
|
* @return
|
*/
|
public static OrderInfo tradeOrderCreate(CreateOrderRequest createOrderRequest){
|
TradeRequest request = new TradeRequest<CreateOrderRequest>();
|
request.setSceneId(QianYunTongProperties.sceneId);
|
request.setAppId(QianYunTongProperties.appId);
|
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 request
|
* @return 行程单ID
|
*/
|
public static String createTravelItinerary(CreateTravelItineraryRequest request){
|
//请求路径
|
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){
|
//请求路径
|
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(QianYunTongProperties.sceneId);
|
request.setAppId(QianYunTongProperties.appId);
|
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 tradePayOffData
|
* @return
|
*/
|
public static PayInfo tradePayOff(TradePayOffData tradePayOffData){
|
TradeRequest request = new TradeRequest<TradePayOffData>();
|
request.setSceneId(QianYunTongProperties.sceneId);
|
request.setAppId(QianYunTongProperties.appId);
|
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 tradePayOff1Data
|
* @return
|
*/
|
public static PayInfo tradePayOff1(TradePayOff1Data tradePayOff1Data){
|
TradeRequest request = new TradeRequest<TradePayOff1Data>();
|
request.setSceneId(QianYunTongProperties.sceneId);
|
request.setAppId(QianYunTongProperties.appId);
|
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 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;
|
}
|
|
|
|
|
|
|
|
|
}
|