package com.java110.front.smo; import com.java110.core.component.AbstractComponentSMO; import com.java110.core.context.IPageData; import com.java110.core.factory.WechatFactory; import com.java110.dto.smallWeChat.SmallWeChatDto; import com.java110.front.properties.WechatAuthProperties; import com.java110.utils.cache.MappingCache; import com.java110.utils.constant.CommonConstant; import com.java110.utils.constant.WechatConstant; import com.java110.utils.util.Assert; import com.java110.utils.util.PayUtil; import com.java110.utils.util.StringUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.*; import org.springframework.web.client.HttpStatusCodeException; import org.springframework.web.client.RestTemplate; import java.util.Map; import java.util.SortedMap; import java.util.TreeMap; public abstract class AppAbstractComponentSMO extends AbstractComponentSMO { private static final Logger logger = LoggerFactory.getLogger(AppAbstractComponentSMO.class); protected static final String DEFAULT_PAY_ADAPT = "wechatPayAdapt";// 默认微信通用支付 @Autowired private WechatAuthProperties wechatAuthProperties; @Autowired private RestTemplate restTemplate; //微信支付 public static final String DOMAIN_WECHAT_PAY = "WECHAT_PAY"; // 微信服务商支付开关 public static final String WECHAT_SERVICE_PAY_SWITCH = "WECHAT_SERVICE_PAY_SWITCH"; //开关ON打开 public static final String WECHAT_SERVICE_PAY_SWITCH_ON = "ON"; private static final String WECHAT_SERVICE_APP_ID = "SERVICE_APP_ID"; private static final String WECHAT_SERVICE_MCH_ID = "SERVICE_MCH_ID"; /** * 调用中心服务 * * @return */ @Override protected ResponseEntity callCenterService(RestTemplate restTemplate, IPageData pd, String param, String url, HttpMethod httpMethod) { Assert.notNull(pd.getAppId(), "请求头中未包含应用信息"); ResponseEntity responseEntity = null; HttpHeaders header = new HttpHeaders(); header.add(CommonConstant.HTTP_APP_ID.toLowerCase(), pd.getAppId()); header.add(CommonConstant.HTTP_USER_ID.toLowerCase(), StringUtil.isEmpty(pd.getUserId()) ? CommonConstant.ORDER_DEFAULT_USER_ID : pd.getUserId()); header.add(CommonConstant.HTTP_TRANSACTION_ID.toLowerCase(), pd.getTransactionId()); header.add(CommonConstant.HTTP_REQ_TIME.toLowerCase(), pd.getRequestTime()); header.add(CommonConstant.HTTP_SIGN.toLowerCase(), ""); header.add("content-type", "application/json"); HttpEntity httpEntity = new HttpEntity(param, header); //logger.debug("请求中心服务信息,{}", httpEntity); try { responseEntity = restTemplate.exchange(url, httpMethod, httpEntity, String.class); } catch (HttpStatusCodeException e) { //这里spring 框架 在4XX 或 5XX 时抛出 HttpServerErrorException 异常,需要重新封装一下 responseEntity = new ResponseEntity(e.getResponseBodyAsString(), e.getStatusCode()); } catch (Exception e) { responseEntity = new ResponseEntity(e.getMessage(), HttpStatus.INTERNAL_SERVER_ERROR); } finally { logger.debug("请求地址为,{} 请求中心服务信息,{},中心服务返回信息,{}", url, httpEntity, responseEntity); } return responseEntity; } }