1.添加携程PC单点接口,和H5单点接口Test
This commit is contained in:
parent
a6987ca0fa
commit
e7a7b66d0a
|
@ -149,6 +149,10 @@ public class Constant {
|
|||
public static final String C_TRIP_TOKEN_PATH = "/dataservice/token/getAccessToken";
|
||||
public static final String C_TRIP_ORDER_SEARCH_PATH = "/switchapi/Order/SearchOrder";
|
||||
|
||||
public static final String C_TRIP_AUTH_LOGIN = "/corpservice/authorize/login";
|
||||
|
||||
public static final String C_TRIP_SINGLE_LOGIN = "/m/SingleSignOn/H5SignInfo";
|
||||
|
||||
|
||||
//同程
|
||||
public static final String L_Y_BASE_URL = "https://api.qa.dttrip.cn";
|
||||
|
|
|
@ -1,10 +1,34 @@
|
|||
package com.chint.interfaces.rest.ctrip;
|
||||
|
||||
import com.chint.infrastructure.util.Digest;
|
||||
import com.chint.infrastructure.util.Result;
|
||||
import com.chint.interfaces.rest.base.PostRequest;
|
||||
import com.chint.interfaces.rest.ctrip.dto.AuthenticationResponseList;
|
||||
import com.chint.interfaces.rest.ctrip.dto.login.CTripAuthLoginParam;
|
||||
import com.chint.interfaces.rest.ctrip.dto.login.CTripHSingleLoginParam;
|
||||
import com.chint.interfaces.rest.ctrip.dto.login.CTripLoginParam;
|
||||
import com.chint.interfaces.rest.ly.dto.LYBaseRequest;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.apache.http.HttpResponse;
|
||||
import org.apache.http.NameValuePair;
|
||||
import org.apache.http.client.HttpClient;
|
||||
import org.apache.http.client.entity.UrlEncodedFormEntity;
|
||||
import org.apache.http.client.methods.HttpPost;
|
||||
import org.apache.http.impl.client.DefaultHttpClient;
|
||||
import org.apache.http.impl.client.HttpClients;
|
||||
import org.apache.http.message.BasicNameValuePair;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.stereotype.Component;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.io.UnsupportedEncodingException;
|
||||
import java.nio.ByteBuffer;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.regex.Matcher;
|
||||
import java.util.regex.Pattern;
|
||||
|
||||
import static com.chint.infrastructure.constant.Constant.*;
|
||||
|
||||
@Component
|
||||
|
@ -12,9 +36,20 @@ public class CTripLoginRequest {
|
|||
|
||||
@Autowired
|
||||
private PostRequest postRequest;
|
||||
|
||||
@Autowired
|
||||
private CTripTicketRequest ticketRequest;
|
||||
@Autowired
|
||||
private CTripTokenRequest tokenRequest;
|
||||
private String loginUrl = C_TRIP_BASE_URL + C_TRIP_LOGIN_PATH;
|
||||
|
||||
//PC单点登录
|
||||
private String authLoginUrl = C_TRIP_BASE_URL + C_TRIP_AUTH_LOGIN;
|
||||
|
||||
private String hSinngleLoginUrl = C_TRIP_BASE_URL + C_TRIP_SINGLE_LOGIN;
|
||||
|
||||
//H5单点登录
|
||||
private String singleLoginUrl = C_TRIP_BASE_URL + C_TRIP_SINGLE_LOGIN;
|
||||
|
||||
private String IDPEntityID = C_TRIP_ENTITY_ID;
|
||||
private String corpId = C_TRIP_CORP_ID;
|
||||
|
||||
|
@ -22,4 +57,133 @@ public class CTripLoginRequest {
|
|||
loginParam.setCorpID(corpId);
|
||||
return postRequest.post(loginUrl + IDPEntityID, loginParam, String.class);
|
||||
}
|
||||
|
||||
|
||||
public HttpResponse authLogin(CTripAuthLoginParam authLoginParam) {
|
||||
|
||||
String ticket = ticketRequest.loadTicket();
|
||||
String token = tokenRequest.getToken();
|
||||
authLoginParam.setTicket(ticket);
|
||||
|
||||
String appKey = C_TRIP_APP_KEY;
|
||||
String uid = StringUtils.isNotBlank(authLoginParam.getUID())?authLoginParam.getUID():"";
|
||||
|
||||
String employeeId = StringUtils.isNotBlank(authLoginParam.getEmployeeID())?authLoginParam.getEmployeeID():"";
|
||||
String email = StringUtils.isNotBlank(authLoginParam.getEmail())?authLoginParam.getEmail():"";
|
||||
String ta = StringUtils.isNotBlank(authLoginParam.getTA())?authLoginParam.getTA():"";
|
||||
Integer forCorp = authLoginParam.getForCorp() == null? authLoginParam.getForCorp():0;
|
||||
String forCopStr = forCorp.toString();
|
||||
|
||||
String cost1 = StringUtils.isNotBlank(authLoginParam.getCost1())?authLoginParam.getCost1():"";
|
||||
if (isContainsChinese(cost1)){
|
||||
ByteBuffer byteBuffer = StandardCharsets.UTF_8.encode(cost1);
|
||||
cost1 = StandardCharsets.UTF_8.decode(byteBuffer).toString();
|
||||
}
|
||||
String cost2 = StringUtils.isNotBlank(authLoginParam.getCost2())?authLoginParam.getCost2():"";
|
||||
if (isContainsChinese(cost2)){
|
||||
ByteBuffer byteBuffer = StandardCharsets.UTF_8.encode(cost2);
|
||||
cost2 = StandardCharsets.UTF_8.decode(byteBuffer).toString();
|
||||
}
|
||||
String cost3 = StringUtils.isNotBlank(authLoginParam.getCost3())?authLoginParam.getCost3():"";
|
||||
if (isContainsChinese(cost3)){
|
||||
ByteBuffer byteBuffer = StandardCharsets.UTF_8.encode(cost3);
|
||||
cost3 = StandardCharsets.UTF_8.decode(byteBuffer).toString();
|
||||
}
|
||||
String mdAppSecurity = Digest.md5(C_TRIP_APP_SECURITY);
|
||||
|
||||
|
||||
String finallySign =
|
||||
Digest.md5(appKey+uid+employeeId+email+ta+forCopStr+cost1+cost2+cost3+mdAppSecurity);
|
||||
|
||||
authLoginParam.setSignature(finallySign);
|
||||
// Result post = postRequest.post(authLoginUrl, authLoginParam, Result.class);
|
||||
|
||||
// HttpClient client = HttpClients.createDefault();
|
||||
HttpPost httpPost = new HttpPost(authLoginUrl);
|
||||
List entitys = new ArrayList<>();
|
||||
entitys.add(new BasicNameValuePair("AppKey",appKey));
|
||||
entitys.add(new BasicNameValuePair("Token",token));
|
||||
|
||||
entitys.add(new BasicNameValuePair("Ticket",ticket));
|
||||
entitys.add(new BasicNameValuePair("EmployeeID",authLoginParam.getEmployeeID()));
|
||||
entitys.add(new BasicNameValuePair("Signature",finallySign));
|
||||
entitys.add(new BasicNameValuePair("ForCorp","0"));
|
||||
|
||||
try {
|
||||
httpPost.setEntity(new UrlEncodedFormEntity(entitys));
|
||||
HttpClient client = new DefaultHttpClient();
|
||||
try {
|
||||
return client.execute(httpPost);
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
} catch (UnsupportedEncodingException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public HttpResponse hSingleLogin(CTripHSingleLoginParam hSingleLoginParam) {
|
||||
String ticket = ticketRequest.loadTicket();
|
||||
String token = tokenRequest.getToken();
|
||||
String accessUserId = C_TRIP_APP_KEY;
|
||||
String employeeId = StringUtils.isNotBlank(hSingleLoginParam.getEmployeeId())?hSingleLoginParam.getEmployeeId():"";
|
||||
String corpPayType = StringUtils.isNotBlank(hSingleLoginParam.getCorpPayType())?
|
||||
hSingleLoginParam.getCorpPayType():"public";
|
||||
|
||||
String costCenter1 = StringUtils.isNotBlank(hSingleLoginParam.getCostCenter1())?
|
||||
hSingleLoginParam.getCostCenter1():"";
|
||||
if (isContainsChinese(costCenter1)){
|
||||
ByteBuffer byteBuffer = StandardCharsets.UTF_8.encode(costCenter1);
|
||||
costCenter1 = StandardCharsets.UTF_8.decode(byteBuffer).toString();
|
||||
}
|
||||
|
||||
String costCenter2 = StringUtils.isNotBlank(hSingleLoginParam.getCostCenter2())?
|
||||
hSingleLoginParam.getCostCenter2():"";
|
||||
if (isContainsChinese(costCenter2)){
|
||||
ByteBuffer byteBuffer = StandardCharsets.UTF_8.encode(costCenter2);
|
||||
costCenter2 = StandardCharsets.UTF_8.decode(byteBuffer).toString();
|
||||
}
|
||||
|
||||
String costCenter3 = StringUtils.isNotBlank(hSingleLoginParam.getCostCenter3())?
|
||||
hSingleLoginParam.getCostCenter3():"";
|
||||
if (isContainsChinese(costCenter3)){
|
||||
ByteBuffer byteBuffer = StandardCharsets.UTF_8.encode(costCenter3);
|
||||
costCenter3 = StandardCharsets.UTF_8.decode(byteBuffer).toString();
|
||||
}
|
||||
String mdAppSecurity = Digest.md5(C_TRIP_APP_SECURITY);
|
||||
String finallySign =
|
||||
Digest.md5(accessUserId+employeeId+corpPayType+costCenter1+costCenter2+costCenter3+mdAppSecurity);
|
||||
|
||||
hSingleLoginParam.setSignature(finallySign);
|
||||
|
||||
HttpPost httpPost = new HttpPost(hSinngleLoginUrl);
|
||||
List entitys = new ArrayList<>();
|
||||
entitys.add(new BasicNameValuePair("accessUserId",accessUserId));
|
||||
entitys.add(new BasicNameValuePair("employeeId",employeeId));
|
||||
entitys.add(new BasicNameValuePair("token",token));
|
||||
entitys.add(new BasicNameValuePair("appId","zhengtai"));
|
||||
entitys.add(new BasicNameValuePair("signature",finallySign));
|
||||
entitys.add(new BasicNameValuePair("corpPayType","public"));
|
||||
try {
|
||||
UrlEncodedFormEntity entity = new UrlEncodedFormEntity(entitys,"UTF-8");
|
||||
|
||||
httpPost.setEntity(entity);
|
||||
HttpClient client = new DefaultHttpClient();
|
||||
try {
|
||||
return client.execute(httpPost);
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
} catch (UnsupportedEncodingException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
private static boolean isContainsChinese(String input) {
|
||||
Pattern pattern = Pattern.compile("[\\u4e00-\\u9fa5]");
|
||||
Matcher matcher = pattern.matcher(input);
|
||||
return matcher.find();
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -0,0 +1,36 @@
|
|||
package com.chint.interfaces.rest.ctrip.dto.login;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class CTripAuthLoginParam {
|
||||
private String AppKey;
|
||||
private String Ticket;
|
||||
private String UID;
|
||||
private String EmployeeID;
|
||||
private String Email;
|
||||
private String Signature;
|
||||
private String Token;
|
||||
|
||||
private String TA;
|
||||
private Integer ForCorp;
|
||||
private String Cost1;
|
||||
private String Cost2;
|
||||
private String Cost3;
|
||||
private String Cost4;
|
||||
private String Cost5;
|
||||
private String Cost6;
|
||||
private String JourneyReason;
|
||||
private String Project;
|
||||
private String DefineFlag;
|
||||
private String DefineFlag2;
|
||||
private String SearchType;
|
||||
private String AuthorizerEmployeeID;
|
||||
private String Authorizer2EmployeeID;
|
||||
private String InitPage;
|
||||
private String CurrentLang;
|
||||
private String OrderId;
|
||||
private Boolean OnlyInitPage;
|
||||
|
||||
|
||||
}
|
|
@ -0,0 +1,38 @@
|
|||
package com.chint.interfaces.rest.ctrip.dto.login;
|
||||
|
||||
import lombok.Data;
|
||||
|
||||
@Data
|
||||
public class CTripHSingleLoginParam {
|
||||
private String AccessUserId;
|
||||
private String EmployeeId;
|
||||
private String Token;
|
||||
private String AppId;
|
||||
private String Signature;
|
||||
private String EndorsementID;
|
||||
private String SearchType;
|
||||
private String WebViewEnv;
|
||||
private String CorpPayType;
|
||||
private String InitPage;
|
||||
private String site;
|
||||
|
||||
private String orderNumber;
|
||||
private Integer Callback;
|
||||
private String browserBack;
|
||||
private String CostCenter1;
|
||||
private String CostCenter2;
|
||||
private String CostCenter3;
|
||||
private String CostCenter4;
|
||||
private String CostCenter5;
|
||||
private String CostCenter6;
|
||||
private String Project;
|
||||
private String JourneyReason;
|
||||
private String CostCenterCustom1;
|
||||
private String CostCenterCustom2;
|
||||
private String Language;
|
||||
private String NeedConfirmPerson1;
|
||||
private String NeedConfirmPerson2;
|
||||
private String OnError;
|
||||
|
||||
|
||||
}
|
|
@ -3,6 +3,7 @@ package com.chint;
|
|||
import com.chint.domain.aggregates.user.User;
|
||||
import com.chint.domain.repository.CityRepository;
|
||||
import com.chint.infrastructure.util.BaseContext;
|
||||
import com.chint.infrastructure.util.Result;
|
||||
import com.chint.interfaces.rest.ctrip.CTripEstimateRequest;
|
||||
import com.chint.interfaces.rest.ctrip.CTripLocationHttpRequest;
|
||||
import com.chint.interfaces.rest.ctrip.CTripLoginRequest;
|
||||
|
@ -13,11 +14,17 @@ import com.chint.interfaces.rest.ctrip.dto.estimate.request.RouteInfo;
|
|||
import com.chint.interfaces.rest.ctrip.dto.estimate.response.BookingRelatedApiResponse;
|
||||
import com.chint.interfaces.rest.ctrip.dto.location.CTripCity;
|
||||
import com.chint.interfaces.rest.ctrip.dto.location.CTripCountry;
|
||||
import com.chint.interfaces.rest.ctrip.dto.login.CTripAuthLoginParam;
|
||||
import com.chint.interfaces.rest.ctrip.dto.login.CTripHSingleLoginParam;
|
||||
import com.chint.interfaces.rest.ctrip.dto.login.CTripLoginParam;
|
||||
import org.apache.http.HttpEntity;
|
||||
import org.apache.http.HttpResponse;
|
||||
import org.apache.http.util.EntityUtils;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.springframework.beans.factory.annotation.Autowired;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.List;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
|
@ -79,6 +86,50 @@ public class CTripTest {
|
|||
loginRequest.login(cTripLoginParam);
|
||||
}
|
||||
|
||||
@Test
|
||||
void authLogin() {
|
||||
// BaseContext.setCurrentUser(user);
|
||||
// CTripLoginParam cTripLoginParam = new CTripLoginParam();
|
||||
// cTripLoginParam.setEmployeeID(String.valueOf(user.getEmployeeNo()));
|
||||
|
||||
CTripAuthLoginParam param = new CTripAuthLoginParam();
|
||||
param.setEmployeeID("230615020");
|
||||
param.setForCorp(0);
|
||||
HttpResponse response = loginRequest.authLogin(param);
|
||||
|
||||
HttpEntity entity = response.getEntity();
|
||||
String result = null;
|
||||
try {
|
||||
result = EntityUtils.toString(entity,"UTF-8");
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
|
||||
System.out.println(result);
|
||||
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
void hSingleLogin() {
|
||||
// BaseContext.setCurrentUser(user);
|
||||
// CTripLoginParam cTripLoginParam = new CTripLoginParam();
|
||||
// cTripLoginParam.setEmployeeID(String.valueOf(user.getEmployeeNo()));
|
||||
|
||||
CTripHSingleLoginParam param = new CTripHSingleLoginParam();
|
||||
param.setEmployeeId("230615020");
|
||||
param.setCorpPayType("public");
|
||||
HttpResponse response = loginRequest.hSingleLogin(param);
|
||||
HttpEntity entity = response.getEntity();
|
||||
String result = null;
|
||||
try {
|
||||
result = EntityUtils.toString(entity,"UTF-8");
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
|
||||
System.out.println(result);
|
||||
}
|
||||
@Test
|
||||
void estimate() {
|
||||
BaseContext.setCurrentUser(user);
|
||||
|
|
Loading…
Reference in New Issue