Browse Source

优化调用微信失败问题

java110 5 years ago
parent
commit
97a6715359

+ 12 - 0
service-front/src/main/java/com/java110/front/FrontServiceApplicationStart.java

@@ -43,6 +43,18 @@ public class FrontServiceApplicationStart {
 
     private static Logger logger = LoggerFactory.getLogger(FrontServiceApplicationStart.class);
 
+    /**
+     * 实例化RestTemplate,通过@LoadBalanced注解开启均衡负载能力.
+     *
+     * @return restTemplate
+     */
+    @Bean
+    public RestTemplate outRestTemplate() {
+        StringHttpMessageConverter m = new StringHttpMessageConverter(Charset.forName("UTF-8"));
+        RestTemplate restTemplate = new RestTemplateBuilder().additionalMessageConverters(m).build();
+        return restTemplate;
+    }
+
 
     /**
      * 实例化RestTemplate,通过@LoadBalanced注解开启均衡负载能力.

+ 4 - 4
service-front/src/main/java/com/java110/front/smo/AppAbstractComponentSMO.java

@@ -69,7 +69,7 @@ public abstract class AppAbstractComponentSMO extends AbstractComponentSMO {
      * @return
      * @throws Exception
      */
-    protected Map<String, String> java110Payment(RestTemplate restTemplate,String feeName, String tradeType,String orderNum, double money, String openId) throws Exception {
+    protected Map<String, String> java110Payment(RestTemplate outRestTemplate,String feeName, String tradeType,String orderNum, double money, String openId) throws Exception {
         logger.info("【小程序支付】 统一下单开始, 订单编号=" + orderNum);
         SortedMap<String, String> resultMap = new TreeMap<String, String>();
 //生成支付金额,开发环境处理支付金额数到0.01、0.02、0.03元
@@ -77,7 +77,7 @@ public abstract class AppAbstractComponentSMO extends AbstractComponentSMO {
         double payAmount = PayUtil.getPayAmountByEnv(MappingCache.getValue("HC_ENV"), money);
 //添加或更新支付记录(参数跟进自己业务需求添加)
 
-        Map<String, String> resMap = this.java110UnifieldOrder(restTemplate,feeName, orderNum, tradeType, payAmount, openId);
+        Map<String, String> resMap = this.java110UnifieldOrder(outRestTemplate,feeName, orderNum, tradeType, payAmount, openId);
         if ("SUCCESS".equals(resMap.get("return_code")) && "SUCCESS".equals(resMap.get("result_code"))) {
             if(WechatAuthProperties.TRADE_TYPE_JSAPI.equals(tradeType)) {
                 resultMap.put("appId", wechatAuthProperties.getAppId());
@@ -109,7 +109,7 @@ public abstract class AppAbstractComponentSMO extends AbstractComponentSMO {
     /**
      * 小程序支付统一下单
      */
-    private Map<String, String> java110UnifieldOrder(RestTemplate restTemplate, String feeName, String orderNum, String tradeType, double payAmount, String openid) throws Exception {
+    private Map<String, String> java110UnifieldOrder(RestTemplate outRestTemplate, String feeName, String orderNum, String tradeType, double payAmount, String openid) throws Exception {
 //封装参数
         SortedMap<String, String> paramMap = new TreeMap<String, String>();
         paramMap.put("appid", wechatAuthProperties.getAppId());
@@ -128,7 +128,7 @@ public abstract class AppAbstractComponentSMO extends AbstractComponentSMO {
 
         logger.debug("调用支付统一下单接口" + xmlData);
 
-        ResponseEntity<String> responseEntity = restTemplate.postForEntity(
+        ResponseEntity<String> responseEntity = outRestTemplate.postForEntity(
                 wechatAuthProperties.getWxPayUnifiedOrder(), xmlData, String.class);
 
         logger.debug("统一下单返回" + responseEntity);

+ 5 - 1
service-front/src/main/java/com/java110/front/smo/payment/impl/ToPaySMOImpl.java

@@ -27,6 +27,10 @@ public class ToPaySMOImpl extends AppAbstractComponentSMO implements IToPaySMO {
     @Autowired
     private RestTemplate restTemplate;
 
+    @Autowired
+    private RestTemplate outRestTemplate;
+
+
     @Autowired
     private WechatAuthProperties wechatAuthProperties;
 
@@ -81,7 +85,7 @@ public class ToPaySMOImpl extends AppAbstractComponentSMO implements IToPaySMO {
         String openId = realUserInfo.getString("openId");
 
         //微信下单PayUtil
-        Map result = super.java110Payment(restTemplate,paramIn.getString("feeName"),paramIn.getString("tradeType"), orderId, money, openId);
+        Map result = super.java110Payment(outRestTemplate,paramIn.getString("feeName"),paramIn.getString("tradeType"), orderId, money, openId);
         responseEntity = new ResponseEntity(JSONObject.toJSONString(result), HttpStatus.OK);
 
         return responseEntity;

+ 4 - 1
service-front/src/main/java/com/java110/front/smo/wxLogin/impl/WxLoginSMOImpl.java

@@ -31,6 +31,9 @@ public class WxLoginSMOImpl extends AppAbstractComponentSMO implements IWxLoginS
 
     private final static Logger logger = LoggerFactory.getLogger(WxLoginSMOImpl.class);
 
+    @Autowired
+    private RestTemplate outRestTemplate;
+
     @Autowired
     private RestTemplate restTemplate;
 
@@ -58,7 +61,7 @@ public class WxLoginSMOImpl extends AppAbstractComponentSMO implements IWxLoginS
         ResponseEntity<String> responseEntity;
         String code = paramIn.getString("code");
         String urlString = "?appid={appId}&secret={secret}&js_code={code}&grant_type={grantType}";
-        String response = restTemplate.getForObject(
+        String response = outRestTemplate.getForObject(
                 wechatAuthProperties.getSessionHost() + urlString, String.class,
                 wechatAuthProperties.getAppId(),
                 wechatAuthProperties.getSecret(),