Browse Source

Merge branch 'release_toaliyun_real_haikangweishi' into release_toaliyun_real_202112

release_toaliyun_real
xiaohanzi 4 years ago
parent
commit
469dc00414
12 changed files with 334 additions and 73 deletions
  1. +16
    -0
      mallinkCApi/src/main/java/com/iformall/controller/WxCarController.java
  2. +31
    -25
      mallinkCallback/src/main/java/com/iformall/controller/callback/car/haikangweishi/WxCarHaiKangWeiShiCallBackController.java
  3. +2
    -0
      mallinkService/src/main/java/com/iformall/service/park/ParkAdapterService.java
  4. +6
    -0
      mallinkService/src/main/java/com/iformall/service/park/impl/bolink/BoLinkParkService.java
  5. +5
    -0
      mallinkService/src/main/java/com/iformall/service/park/impl/cyf/CYFParkService.java
  6. +6
    -0
      mallinkService/src/main/java/com/iformall/service/park/impl/dahua/DaHuaParkService.java
  7. +31
    -2
      mallinkService/src/main/java/com/iformall/service/park/impl/haikangweishi/HaiKangWeiShiParkService.java
  8. +205
    -44
      mallinkService/src/main/java/com/iformall/service/park/impl/haikangweishi/HaiKangWeiShiUtil.java
  9. +15
    -0
      mallinkService/src/main/java/com/iformall/service/park/impl/haikangweishi/entity/ChallengeCode.java
  10. +7
    -1
      mallinkService/src/main/java/com/iformall/service/park/impl/jieshun/JieShunParkService.java
  11. +5
    -0
      mallinkService/src/main/java/com/iformall/service/park/impl/shangan/ShangAnParkService.java
  12. +5
    -1
      mallinkService/src/main/java/com/iformall/service/park/impl/tjd/TJDParkService.java

+ 16
- 0
mallinkCApi/src/main/java/com/iformall/controller/WxCarController.java View File

@@ -85,6 +85,22 @@ public class WxCarController extends BaseController {
return wxPark;
}

@ApiOperation(value = "车厂初始化配置", notes = "返回\n{\"vendor\":integer}")
@GetMapping("/parkInitConfig")
public ResultData parkInitConfig() {
// 1, get mall's park
WxPark park = getCurrentPark(getTenantInfo());
if (park.getVendorType().equals(EnumCarVendor.CAR_ETCP.getCode())) {
return new ResultData();
}else {
try {
return parkFactory.getParkService(park.getVendorType()).parkInitConfig(park);
} catch (Exception e) {
return new ResultData(Result.ERROR,"车厂初始化配置失败。"+e.getMessage());
}
}
}
@ApiOperation(value = "获取车场支持的厂家", notes = "返回\n{\"vendor\":integer}")
@GetMapping("/getVendor")
public ResultData getVendor() {


+ 31
- 25
mallinkCallback/src/main/java/com/iformall/controller/callback/car/haikangweishi/WxCarHaiKangWeiShiCallBackController.java View File

@@ -191,31 +191,37 @@ public class WxCarHaiKangWeiShiCallBackController extends WxParkCallBackBaseCont
*/
@PostMapping(value = "/notify")
public Map notify(@RequestBody Map<String, Object> paramMap) {
log.info("["+getIpAddr()+"] hkwsCarCallback notify: " + paramMap.toString());
Map params = (Map)paramMap.get("params");
String eventType = params.get("eventType").toString();
Result result = null;
if ("771760131".equals(eventType)) {
//解析车易付参数
result = super.parkInCallBack(EnumCarVendor.CAR_HAIKANGWEISHI, EnumCarCmd.CAR_HAIKANGWEISHI_CALLBACK_PARK_IN, paramMap);
}else if ("771760134".equals(eventType)) {
result = super.parkOutCallBack(EnumCarVendor.CAR_HAIKANGWEISHI, EnumCarCmd.CAR_HAIKANGWEISHI_CALLBACK_PARK_OUT, paramMap);
}
Map retMap = new HashMap();
int errcode = 0;
String msg = "success";
if (null != result) {
if (result.code != Result.SUCCESS) {
errcode = result.code;
msg = result.message;
}
}else {
errcode = Result.ERROR;
msg = "no result.eventType["+eventType+"]";
}
retMap.put("errcode", errcode);
retMap.put("errmsg", msg);
Map retMap = new HashMap();
try {
log.info("["+getIpAddr()+"] hkwsCarCallback notify: " + paramMap.toString());
Map params = (Map)paramMap.get("params");
String eventType = params.get("eventType").toString();
Result result = null;
if ("771760131".equals(eventType)) {
//解析车易付参数
result = super.parkInCallBack(EnumCarVendor.CAR_HAIKANGWEISHI, EnumCarCmd.CAR_HAIKANGWEISHI_CALLBACK_PARK_IN, paramMap);
}else if ("771760134".equals(eventType)) {
result = super.parkOutCallBack(EnumCarVendor.CAR_HAIKANGWEISHI, EnumCarCmd.CAR_HAIKANGWEISHI_CALLBACK_PARK_OUT, paramMap);
}
int errcode = 0;
String msg = "success";
if (null != result) {
if (result.code != Result.SUCCESS) {
errcode = result.code;
msg = result.message;
}
}else {
errcode = Result.ERROR;
msg = "no result.eventType["+eventType+"]";
}
retMap.put("errcode", errcode);
retMap.put("errmsg", msg);
} catch(Exception e) {
retMap.put("errcode", Result.ERROR);
retMap.put("errmsg", "notify error."+e.getLocalizedMessage());
}
retMap.put("data", null);
return retMap;
}


+ 2
- 0
mallinkService/src/main/java/com/iformall/service/park/ParkAdapterService.java View File

@@ -15,6 +15,8 @@ import com.iformall.domain.vo.WxCouponOrderCarCVo;
*/
public interface ParkAdapterService {
ResultData parkInitConfig(WxPark park) throws Exception;
/**
* 停车场初始化登陆
* @param paramMap


+ 6
- 0
mallinkService/src/main/java/com/iformall/service/park/impl/bolink/BoLinkParkService.java View File

@@ -21,6 +21,12 @@ import com.iformall.service.park.impl.BaseParkService;
@Service
public class BoLinkParkService extends BaseParkService implements ParkAdapterService {

@Override
public ResultData parkInitConfig(WxPark park) throws Exception {
// TODO Auto-generated method stub
return null;
}
@Override
public String initLogin(Map<String, String> paramMap, WxPark park, WxCUserBasicInfo member) {
return null;


+ 5
- 0
mallinkService/src/main/java/com/iformall/service/park/impl/cyf/CYFParkService.java View File

@@ -37,6 +37,11 @@ public class CYFParkService extends BaseParkService implements ParkAdapterServic
CYFUtil cyf = new CYFUtil();
@Override
public ResultData parkInitConfig(WxPark park) throws Exception {
// TODO Auto-generated method stub
return null;
}
@Override
public String initLogin(Map<String, String> paramMap, WxPark park, WxCUserBasicInfo member) throws Exception{


+ 6
- 0
mallinkService/src/main/java/com/iformall/service/park/impl/dahua/DaHuaParkService.java View File

@@ -21,6 +21,12 @@ public class DaHuaParkService extends BaseParkService implements ParkAdapterServ

private final Logger logger = LoggerFactory.getLogger(this.getClass());
@Override
public ResultData parkInitConfig(WxPark park) throws Exception {
// TODO Auto-generated method stub
return null;
}
@Override
public String initLogin(Map<String, String> paramMap, WxPark park, WxCUserBasicInfo member) {
return null;


+ 31
- 2
mallinkService/src/main/java/com/iformall/service/park/impl/haikangweishi/HaiKangWeiShiParkService.java View File

@@ -17,6 +17,7 @@ import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.iformall.common.ErrorCode;
import com.iformall.common.IdWorker;
import com.iformall.common.Result;
import com.iformall.common.ResultData;
import com.iformall.domain.po.WxCUserBasicInfo;
import com.iformall.domain.po.WxCarJSOrder;
@@ -39,7 +40,16 @@ import com.iformall.utils.RedisLock;

/**
* 认证平台 https://www.hikyun.com 武汉富茂链客/zfy151431113
*
* pms.hikyun.com 停车场管理云平台 账号sdw1112131,密码mcgc123456
* https://open.hikyun.com/1/document/0
@配置说明
clientId,clientSecret 停车场管理系统控制台的。
productCode: 停车场管理系统产品在云耀注册的id,固定。
pmsName,pmsPassword : 停车场管理系统pms.hikyun.com 的账号密码
projectId,ak : 停车场管理系统在云曜推送接口上创建的一个认证标识,联系 超云(开发)给提供
* @author alascor
*
*/
@@ -90,6 +100,24 @@ public class HaiKangWeiShiParkService extends BaseParkService implements ParkAda
RedisCacheUtils.cache(redisTemplate, "carStop:haikangtoken:"+park.getId(), token, 36000);
}
@Override
public ResultData parkInitConfig(WxPark park) throws Exception {
Map retMap = new HashMap();
try {
JSONObject retObj = haikang.subscription(park, getCacheToken(park),haikang.getAuthorization(park,getCacheToken(park)));
if (retObj.getString("code").equals("0")){
return new ResultData();
}else {
logger.error("haikangweishi parkInitConfig error. haikangResult: {}",retObj);
String msg = retObj.getString("msg");
return new ResultData(retObj.getIntValue("code"), "当前海康威视停车场初始化配置失败:"+msg);
}
}catch(Exception e) {
return new ResultData(Result.ERROR, "当前海康威视停车场初始化配置失败:"+e.getMessage());
}
}
@Override
public String initLogin(Map<String, String> paramMap, WxPark park, WxCUserBasicInfo member) throws Exception{
return null;
@@ -129,7 +157,7 @@ public class HaiKangWeiShiParkService extends BaseParkService implements ParkAda
return new ResultData(21000,"车辆未入场");
}
JSONObject attribute = haikang.getFee(park, carNumber, getCacheToken(park));
JSONObject attribute = haikang.getFee(park, carNumber, getCacheToken(park),haikang.getAuthorization(park,getCacheToken(park)));
String appId = "";
String parkOrderId = attribute.getString("id");
@@ -163,7 +191,7 @@ public class HaiKangWeiShiParkService extends BaseParkService implements ParkAda
if (StringUtils.isBlank(planNo)) {
return new ResultData(ErrorCode.COUPON_IS_EMPTY.getCode(),"当前停车券没有关联停车场优惠券配置[planNo]。"+coupon.getTitle());
}
JSONObject retObj = haikang.useCoupon(park,planNo,carNumber,orderNo, getCacheToken(park));
JSONObject retObj = haikang.useCoupon(park,planNo,carNumber,orderNo, getCacheToken(park),haikang.getAuthorization(park,getCacheToken(park)));
if (retObj.getIntValue("code") == 0){
return new ResultData();
}else {
@@ -177,5 +205,6 @@ public class HaiKangWeiShiParkService extends BaseParkService implements ParkAda
public ResultData getParkStatus(WxPark park) throws Exception{
return new ResultData();
}

}

+ 205
- 44
mallinkService/src/main/java/com/iformall/service/park/impl/haikangweishi/HaiKangWeiShiUtil.java View File

@@ -6,20 +6,35 @@ import com.alibaba.fastjson.JSONObject;
import com.iformall.common.ErrorCode;
import com.iformall.domain.po.WxPark;
import com.iformall.exception.MallinkException;
import com.iformall.service.park.impl.haikangweishi.entity.ChallengeCode;
import com.iformall.utils.HashUtil;

import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.entity.ContentType;
import org.apache.http.entity.StringEntity;
import org.apache.http.entity.mime.HttpMultipartMode;
import org.apache.http.entity.mime.MultipartEntity;
import org.apache.http.entity.mime.MultipartEntityBuilder;
import org.apache.http.entity.mime.content.StringBody;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.protocol.HTTP;
import org.apache.http.util.EntityUtils;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.nio.charset.Charset;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.LocalDateTime;
@@ -41,9 +56,11 @@ import java.util.Map;
public class HaiKangWeiShiUtil {

public static final String TOKEN_URL = "https://open.hikyun.com/artemis/oauth/token";
public static final String CHALLENGE_CODE = "https://open.hikyun.com/artemis/api/eits/v1/challengeCode";
public static final String AUTHROZITAION = "https://open.hikyun.com/artemis/api/eits/v1/login";
public static final String GET_FEE = "https://open.hikyun.com/api/pmsc/v1/pay/ quickGetVehicleBill";
public static final String COUPON_USE = "https://open.hikyun.com/api/pmsc/v1/coupon/addition";
public static final String SUBSCRIPTION = "https://open.hikyun.com/api/pmsc/v1/sub/subscription";
public static final String SUBSCRIPTION = "https://open.hikyun.com/artemis/api/pmsc/v1/sub/subscription";

/**
@@ -70,43 +87,120 @@ public class HaiKangWeiShiUtil {
public String getToken(WxPark wxPark) {
String vendroParams = wxPark.getVendorParams();
JSONObject vp = JSON.parseObject(vendroParams);
String clientId = vp.getString("AppKey");
String clientSecret = vp.getString("SecretKey");
String clientId = vp.getString("clientId");
String clientSecret = vp.getString("clientSecret");
return getToken(clientId,clientSecret);
}
private ChallengeCode getChallengeCode(WxPark wxPark,String accessToken) {
String vendroParams = wxPark.getVendorParams();
JSONObject vp = JSON.parseObject(vendroParams);
Map<String,Object> params = new HashMap<String,Object>();
params.put("name", vp.getString("pmsName"));//pms.hikyun.com 的账号
params.put("productCode", vp.getString("productCode"));
params.put("type", "1");
String retCode = ProcBussiness(CHALLENGE_CODE, params,accessToken,null);
if (StringUtils.isBlank(retCode)) {
throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(), "haikang getChallengeCode error. has no result");
}
JSONObject result = JSON.parseObject(retCode);
Integer errStatus = result.getInteger("status");
if (null != errStatus) {
throw new MallinkException(errStatus,"haikang getChallengeCode error.["+result.getString("error")+"]"+result.getString("message"));
}
if (!result.getString("code").equals("200") ) {
String message = result.getString("msg");
throw new MallinkException(result.getInteger("code"), "haikang getChallengeCode error."+message);
}
JSONObject attribute = result.getJSONObject("data");
if (null == attribute) {
throw new MallinkException(result.getInteger("code"), "haikang getChallengeCode error. no result");
}
return new ChallengeCode(attribute.getString("pwdStatus"),attribute.getString("codeId"),attribute.getString("salt"),attribute.getString("vCode"));
}
private static String entryPmsPassword(String password,String salt,String vCode) {
return HashUtil.sha256(HashUtil.sha256(password+salt)+vCode);
}
//使用后不能再次使用,并且有很短的过期时间
public String getAuthorization(WxPark wxPark,String accessToken) {
String vendroParams = wxPark.getVendorParams();
JSONObject vp = JSON.parseObject(vendroParams);
ChallengeCode challengeCode = getChallengeCode(wxPark,accessToken);
Map<String,Object> params = new HashMap<String,Object>();
params.put("name", vp.getString("pmsName"));//pms.hikyun.com 的账号
params.put("productCode", vp.getString("productCode"));
params.put("type", "1");
params.put("codeId", challengeCode.getCodeId());
params.put("password", entryPmsPassword(vp.getString("pmsPassword"),challengeCode.getSalt(),challengeCode.getVCode()));
String retCode = ProcBussiness(AUTHROZITAION, params,accessToken,null);
if (StringUtils.isBlank(retCode)) {
throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(), "haikang getAuthorization error. has no result");
}
JSONObject result = JSON.parseObject(retCode);
Integer errStatus = result.getInteger("status");
if (null != errStatus) {
throw new MallinkException(errStatus,"haikang getAuthorization error.["+result.getString("error")+"]"+result.getString("message"));
}
if (!result.getString("code").equals("200") ) {
String message = result.getString("msg");
throw new MallinkException(result.getInteger("code"), "haikang getAuthorization error."+message);
}
JSONObject attribute = result.getJSONObject("data");
if (null == attribute) {
throw new MallinkException(result.getInteger("code"), "haikang getAuthorization error. no result");
}
return attribute.getString("Authorization");
}
private String getToken(String clientId,String clientSecret) {
String result = ProcLogin(clientId, clientSecret);
log.info("haikang token clientId:"+clientId+" clientSecret:"+clientSecret+" result: "+result);
if (StringUtils.isBlank(result)) {
return null;
}
JSONObject res = JSON.parseObject(result);
Integer code = res.getInteger("code");
if (null == code || code.intValue() != 0) {
String msg = res.getString("msg");
throw new MallinkException(code,msg);
Integer errStatus = res.getInteger("status");
if (null != errStatus) {
throw new MallinkException(errStatus,"haikang access_token error.["+res.getString("error")+"]"+res.getString("message"));
}
String accessToken = res.getString("access_token");
if (null != accessToken ) {
return accessToken;
}else {
throw new MallinkException(500,"haikang access_token error.["+res.getString("error")+"]"+res.getString("error_description"));
}
return res.getString("access_token");
}
/**
* 查询停车费 3.5.5 快速获取账单接口
* @return
*/
public JSONObject getFee(WxPark wxPark,String carNumber,String token) {
public JSONObject getFee(WxPark wxPark,String carNumber,String token,String Authrozitaion) {
String vendroParams = wxPark.getVendorParams();
JSONObject vp = JSON.parseObject(vendroParams);
ArrayList<NameValuePair> list = new ArrayList<NameValuePair>();
list.add(new BasicNameValuePair("chargeSource", "THIRD"));//商户编号
list.add(new BasicNameValuePair("parkId", wxPark.getParkingId()));
list.add(new BasicNameValuePair("plateNo", carNumber));
String retCode= ProcBussiness(GET_FEE, list, token);
Map<String,Object> params = new HashMap<String,Object>();
params.put("chargeSource", "THIRD");//商户编号
params.put("parkId", wxPark.getParkingId());
params.put("plateNo", carNumber);
String retCode= ProcBussiness(GET_FEE, params, token,Authrozitaion);
if (StringUtils.isBlank(retCode)) {
throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(), "haikang getFee error. has no result");
}
JSONObject result = JSON.parseObject(retCode);
if (result.getInteger("code") != 0 ) {
Integer errStatus = result.getInteger("status");
if (null != errStatus) {
throw new MallinkException(errStatus,"haikang getFee error.["+result.getString("error")+"]"+result.getString("message"));
}
if (!result.getString("code").equals("200") ) {
String message = result.getString("msg");
throw new MallinkException(result.getInteger("code"), "haikang getFee error."+message);
}
@@ -126,20 +220,26 @@ public class HaiKangWeiShiUtil {
完成一次优惠缴费
* 使用优惠券 3.5.9.1接口进行车牌和优惠信息绑定优惠券后,车辆出场时会自动抵扣
**/
public JSONObject useCoupon(WxPark wxPark,String couponNo,String carNumber,String orderNo,String token){
public JSONObject useCoupon(WxPark wxPark,String couponNo,String carNumber,String orderNo,String token,String Authrozitaion){
String vendroParams = wxPark.getVendorParams();
JSONObject vp = JSON.parseObject(vendroParams);
ArrayList<NameValuePair> list = new ArrayList<NameValuePair>();
Map<String,Object> params = new HashMap<String,Object>();
Map couponmap = new HashMap();
couponmap.put("plateNo", carNumber);
couponmap.put("ruleId", couponNo);
list.add(new BasicNameValuePair("coupons", "["+JSON.toJSONString(couponmap)+"]") );//商户编号
String retCode = ProcBussiness(COUPON_USE, list,token);
params.put("coupons", "["+JSON.toJSONString(couponmap)+"]");//商户编号
String retCode = ProcBussiness(COUPON_USE, params,token,Authrozitaion);
if (StringUtils.isBlank(retCode)) {
throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(), "haikang useCoupon error. has no result");
}
JSONObject result = JSON.parseObject(retCode);
if (result.getInteger("code") != 0 ) {
Integer errStatus = result.getInteger("status");
if (null != errStatus) {
throw new MallinkException(errStatus,"haikang useCoupon error.["+result.getString("error")+"]"+result.getString("message"));
}
if (!result.getString("code").equals("200") ) {
String message = result.getString("msg");
throw new MallinkException(result.getInteger("code"), "haikang useCoupon error."+message);
}
@@ -148,26 +248,39 @@ public class HaiKangWeiShiUtil {
/**
* 消息订阅 3.1.8
* * 这个接口需要你们实现的时候规定下:
1、POST格式,
2、接口返回参数JSON格式:{errcode:0, errmsg: "success",data:null}
3、接口建议接收到过车事件,立即返回接收成功

我这边根据这个 0 状态来判断你们是否接收成功,如果没成功,我这边会重发3次的
*
* @param clientId
* @param clientSecret
* @return
*/
public JSONObject subscription(WxPark wxPark,String couponNo,String carNumber,String orderNo,String token){
public JSONObject subscription(WxPark wxPark,String token,String Authrozitaion){
String vendroParams = wxPark.getVendorParams();
JSONObject vp = JSON.parseObject(vendroParams);
ArrayList<NameValuePair> list = new ArrayList<NameValuePair>();
list.add(new BasicNameValuePair("partnerAppKey", vp.getString("AppKey")));//商户编号
list.add(new BasicNameValuePair("projectId", vp.getString("projectId")));
list.add(new BasicNameValuePair("eventTypes", carNumber));
list.add(new BasicNameValuePair("subUrl", vp.getString("subUrl")));
String retCode = ProcBussiness(SUBSCRIPTION, list,token);
Map<String,Object> params = new HashMap<String,Object>();
params.put("partnerAppKey", vp.getString("ak"));//商户编号
params.put("projectId", vp.getString("projectId"));
params.put("eventTypes", new Integer[] {771760131,771760134});
params.put("subUrl", vp.getString("subUrl"));
String retCode = ProcBussiness(SUBSCRIPTION, params,token,Authrozitaion);
if (StringUtils.isBlank(retCode)) {
throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(), "haikang useCoupon error. has no result");
throw new MallinkException(ErrorCode.SYS_SERVER_ERROR.getCode(), "haikang subscription error. has no result");
}
JSONObject result = JSON.parseObject(retCode);
if (result.getInteger("code") != 0 ) {
Integer errStatus = result.getInteger("status");
if (null != errStatus) {
throw new MallinkException(errStatus,"haikang subscription error.["+result.getString("error")+"]"+result.getString("message"));
}
if (!result.getString("code").equals("0") ) {
String message = result.getString("msg");
throw new MallinkException(result.getInteger("code"), "haikang useCoupon error."+message);
throw new MallinkException(result.getInteger("code"), "haikang subscription error."+message);
}
return result;
}
@@ -177,12 +290,13 @@ public class HaiKangWeiShiUtil {
ArrayList<NameValuePair> list = new ArrayList<NameValuePair>();
list.add(new BasicNameValuePair("client_id", clientId));
list.add(new BasicNameValuePair("client_secret", clientSecret));
return Proc(TOKEN_URL,list,null,null);
return formData(TOKEN_URL,list,null,null);
}
private static String ProcBussiness(String url,ArrayList<NameValuePair> list,String token) {

private static String ProcBussiness(String url,Map<String,Object> list,String token,String authorization) {
try {
String authorization = "";
return Proc(url,list,token,authorization);
} catch (Exception e) {
log.error("haikang request error.",e);
@@ -190,13 +304,10 @@ public class HaiKangWeiShiUtil {
return null;
}
private static String Proc(String url, List<NameValuePair> pairs,String token,String authorization) {
private static String Proc(String url, Map<String,Object> pairs,String token,String authorization) {
CloseableHttpClient httpClient = HttpClients.createDefault();

HttpPost httpPost = new HttpPost(url);
httpPost.addHeader(HTTP.CONTENT_TYPE,"application/json");
httpPost.addHeader("Accept", "application/json");
httpPost.addHeader("Accept-Encoding", "UTF-8");
if (!StringUtils.isBlank(token)) {
httpPost.addHeader("access_token",token);
}
@@ -205,15 +316,13 @@ public class HaiKangWeiShiUtil {
}

if (null != pairs) {
HttpEntity en;
try {
en = new UrlEncodedFormEntity(pairs, HTTP.UTF_8);
httpPost.setEntity(en);
try {
StringEntity entity = new StringEntity(JSON.toJSONString(pairs));
entity.setContentType("application/json");
httpPost.setEntity(entity);
} catch (UnsupportedEncodingException e) {
log.error(e.getLocalizedMessage(),e);
return null;
}
}

if (null != pairs) {
@@ -248,4 +357,56 @@ public class HaiKangWeiShiUtil {
}
return result;
}
private static String formData(String url,List<NameValuePair> pairs,String token,String authorization) {
CloseableHttpClient httpClient = HttpClients.createDefault();
HttpPost httpPost = new HttpPost(url);
if (!StringUtils.isBlank(token)) {
httpPost.addHeader("access_token",token);
}
if (!StringUtils.isBlank(authorization)) {
httpPost.addHeader("Authorization",authorization);
}
MultipartEntityBuilder builder = MultipartEntityBuilder.create();
if (null != pairs) {
for (NameValuePair nvp : pairs) {
builder.addPart(nvp.getName(), new StringBody(nvp.getValue(),ContentType.TEXT_PLAIN));
}
}
HttpEntity entity = builder.build();
httpPost.setEntity(entity);
if (null != pairs) {
log.info("haikangweishi httpRequest:[url]"+url+"[params]"+JSON.toJSONString(pairs));
}else {
log.info("haikangweishi httpRequest:[url]"+url);
}
HttpResponse response = null;
try {
response = httpClient.execute(httpPost);
} catch (Exception e) {
log.error(e.getLocalizedMessage(),e);
}

String result = null;

//打印StatusLine
log.debug("StatusLine: " + response.getStatusLine());
try{
//获取实体
HttpEntity httpEntity= response.getEntity();
result = EntityUtils.toString(httpEntity, "UTF-8");
log.debug(result);
} catch (Exception e) {
log.error(e.getLocalizedMessage(),e);
}

try { //关闭流并释放资源
httpClient.close();
} catch (IOException e) {
log.error(e.getLocalizedMessage());
}
return result;
}
}

+ 15
- 0
mallinkService/src/main/java/com/iformall/service/park/impl/haikangweishi/entity/ChallengeCode.java View File

@@ -0,0 +1,15 @@
package com.iformall.service.park.impl.haikangweishi.entity;

import lombok.AllArgsConstructor;
import lombok.Data;

@Data
@AllArgsConstructor
public class ChallengeCode {

private String pwdStatus;
private String codeId;
private String salt;
private String vCode;
}

+ 7
- 1
mallinkService/src/main/java/com/iformall/service/park/impl/jieshun/JieShunParkService.java View File

@@ -101,7 +101,6 @@ public class JieShunParkService extends BaseParkService implements ParkAdapterSe
RedisCacheUtils.cache(redisTemplate, "carStop:jieshuntoken:"+park.getId(), token, 3600);
}
/**
* 先去捷顺注册,调用登陆获取令牌,然后根据令牌调用别的接口
* http://ap.jieshun.cn:9088/apply/ 注册信息地址 fumao/iformall2020
@@ -117,6 +116,13 @@ public class JieShunParkService extends BaseParkService implements ParkAdapterSe
3、所有接口要带车牌的一律带横杠。格式如:粤-B12345。
4、无效的数据签名是指sn加密方式不对。sn加密方式是对p+signkey进行Md5加密,加密后的字符串大写。
*/
@Override
public ResultData parkInitConfig(WxPark park) throws Exception {
// TODO Auto-generated method stub
return null;
}
@Override
public String initLogin(Map<String, String> paramMap, WxPark park, WxCUserBasicInfo member) throws Exception{
return null;


+ 5
- 0
mallinkService/src/main/java/com/iformall/service/park/impl/shangan/ShangAnParkService.java View File

@@ -29,6 +29,11 @@ public class ShangAnParkService extends BaseParkService implements ParkAdapterSe
@Autowired
WxCouponOrderService wxCouponOrderService;
@Override
public ResultData parkInitConfig(WxPark park) throws Exception {
// TODO Auto-generated method stub
return null;
}
@Override
public String initLogin(Map<String, String> paramMap, WxPark park, WxCUserBasicInfo member) {


+ 5
- 1
mallinkService/src/main/java/com/iformall/service/park/impl/tjd/TJDParkService.java View File

@@ -55,6 +55,11 @@ public class TJDParkService extends BaseParkService implements ParkAdapterServic
@Autowired
WxCouponService couponService;
@Override
public ResultData parkInitConfig(WxPark park) throws Exception {
// TODO Auto-generated method stub
return null;
}
@Override
public String initLogin(Map<String, String> paramMap, WxPark park, WxCUserBasicInfo member) {
@@ -249,5 +254,4 @@ public class TJDParkService extends BaseParkService implements ParkAdapterServic
public ResultData getParkStatus(WxPark park) {
return null;
}

}

Loading…
Cancel
Save