| @@ -250,7 +250,7 @@ public class WxOrderController extends BaseController { | |||||
| WxComposeOrder order = (WxComposeOrder) resultData.data; | WxComposeOrder order = (WxComposeOrder) resultData.data; | ||||
| Map<String, Object> data = new HashMap<>(); | Map<String, Object> data = new HashMap<>(); | ||||
| data.put("out_order_no",order.getMainOrderId().toString()); | data.put("out_order_no",order.getMainOrderId().toString()); | ||||
| data.put("pay_expire_seconds",10*60); | |||||
| data.put("pay_expire_seconds",14*60); | |||||
| data.put("order_entry_schema",wxOrderService.getOrderEntrySchema(order.getMainOrderId())); | data.put("order_entry_schema",wxOrderService.getOrderEntrySchema(order.getMainOrderId())); | ||||
| // List<Map<String,Object>> goodsValid = new ArrayList<>(); | // List<Map<String,Object>> goodsValid = new ArrayList<>(); | ||||
| // for (Long couponChannelId:order.getCouponChannelMap().keySet()) { | // for (Long couponChannelId:order.getCouponChannelMap().keySet()) { | ||||
| @@ -75,13 +75,18 @@ public class TtWebGoodsGetRequestExecutor implements RequestExecutor<String, Str | |||||
| try (CloseableHttpResponse response = requestHttp.getRequestHttpClient().execute(httpGet)) { | try (CloseableHttpResponse response = requestHttp.getRequestHttpClient().execute(httpGet)) { | ||||
| String responseContent = Utf8ResponseHandler.INSTANCE.handleResponse(response); | String responseContent = Utf8ResponseHandler.INSTANCE.handleResponse(response); | ||||
| logger.info("response{}"+responseContent); | logger.info("response{}"+responseContent); | ||||
| int code = 0; | |||||
| String msg = null; | |||||
| try { | |||||
| JSONObject jsonObject = JSON.parseObject(responseContent); | |||||
| JSONObject base = jsonObject.getJSONObject("base"); | |||||
| code = base.getInteger("gateway_code"); | |||||
| msg = base.getString("gateway_msg"); | |||||
| }catch(Exception e){} | |||||
| if(code != 0){ | |||||
| throw new WxErrorException(WxError.builder().errorCode(code).errorMsg(msg).build()); | |||||
| } | |||||
| return responseContent; | return responseContent; | ||||
| // JSONObject jsonObject = JSON.parseObject(responseContent); | |||||
| // JSONObject data = jsonObject.getJSONObject("data"); | |||||
| // WxError error = WxError.fromJson(data.toJSONString()); | |||||
| // if (error.getErrorCode() != 0) { | |||||
| // throw new WxErrorException(error); | |||||
| // } | |||||
| // return data.toString(); | // return data.toString(); | ||||
| } finally { | } finally { | ||||
| httpGet.releaseConnection(); | httpGet.releaseConnection(); | ||||
| @@ -80,6 +80,17 @@ public class TtWebGoodsPostRequestExecutor implements RequestExecutor<String, St | |||||
| if (responseContent.isEmpty()) { | if (responseContent.isEmpty()) { | ||||
| throw new WxErrorException(WxError.builder().errorCode(9999).errorMsg("无响应内容").build()); | throw new WxErrorException(WxError.builder().errorCode(9999).errorMsg("无响应内容").build()); | ||||
| } | } | ||||
| int code = 0; | |||||
| String msg = null; | |||||
| try { | |||||
| JSONObject jsonObject = JSON.parseObject(responseContent); | |||||
| JSONObject base = jsonObject.getJSONObject("base"); | |||||
| code = base.getInteger("gateway_code"); | |||||
| msg = base.getString("gateway_msg"); | |||||
| }catch(Exception e){} | |||||
| if(code != 0){ | |||||
| throw new WxErrorException(WxError.builder().errorCode(code).errorMsg(msg).build()); | |||||
| } | |||||
| return responseContent; | return responseContent; | ||||
| // if (responseContent.startsWith("<xml>")) { | // if (responseContent.startsWith("<xml>")) { | ||||
| @@ -1,21 +1,13 @@ | |||||
| package com.iformall.douyin.web.api.impl; | package com.iformall.douyin.web.api.impl; | ||||
| import com.alibaba.fastjson.JSONObject; | |||||
| import com.alibaba.fastjson.TypeReference; | import com.alibaba.fastjson.TypeReference; | ||||
| import com.google.gson.Gson; | import com.google.gson.Gson; | ||||
| import com.google.gson.GsonBuilder; | import com.google.gson.GsonBuilder; | ||||
| import com.google.gson.JsonObject; | |||||
| import com.iformall.common.ErrorCode; | |||||
| import com.iformall.douyin.pay.exception.TtPayException; | |||||
| import com.iformall.douyin.payv2.request.CallBackSettingsRequest; | |||||
| import com.iformall.douyin.payv2.result.BaseTtPayResult; | |||||
| import com.iformall.douyin.web.api.*; | import com.iformall.douyin.web.api.*; | ||||
| import com.iformall.douyin.web.bean.*; | import com.iformall.douyin.web.bean.*; | ||||
| import com.iformall.exception.MallinkException; | |||||
| import lombok.AllArgsConstructor; | import lombok.AllArgsConstructor; | ||||
| import me.chanjar.weixin.common.error.WxError; | import me.chanjar.weixin.common.error.WxError; | ||||
| import me.chanjar.weixin.common.error.WxErrorException; | import me.chanjar.weixin.common.error.WxErrorException; | ||||
| import me.chanjar.weixin.common.util.json.GsonHelper; | |||||
| import org.apache.commons.lang3.StringUtils; | import org.apache.commons.lang3.StringUtils; | ||||
| import java.util.HashMap; | import java.util.HashMap; | ||||
| @@ -15,27 +15,20 @@ import me.chanjar.weixin.common.util.DataUtils; | |||||
| import me.chanjar.weixin.common.util.http.*; | import me.chanjar.weixin.common.util.http.*; | ||||
| import me.chanjar.weixin.common.util.http.apache.ApacheHttpClientBuilder; | import me.chanjar.weixin.common.util.http.apache.ApacheHttpClientBuilder; | ||||
| import me.chanjar.weixin.common.util.http.apache.DefaultApacheHttpClientBuilder; | import me.chanjar.weixin.common.util.http.apache.DefaultApacheHttpClientBuilder; | ||||
| import me.chanjar.weixin.common.util.json.WxGsonBuilder; | |||||
| import org.apache.http.Consts; | |||||
| import org.apache.http.HttpEntity; | |||||
| import org.apache.http.HttpHost; | import org.apache.http.HttpHost; | ||||
| import org.apache.http.client.config.RequestConfig; | import org.apache.http.client.config.RequestConfig; | ||||
| import org.apache.http.client.methods.CloseableHttpResponse; | import org.apache.http.client.methods.CloseableHttpResponse; | ||||
| import org.apache.http.client.methods.HttpPost; | 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.MultipartEntityBuilder; | |||||
| import org.apache.http.impl.client.BasicResponseHandler; | import org.apache.http.impl.client.BasicResponseHandler; | ||||
| import org.apache.http.impl.client.CloseableHttpClient; | import org.apache.http.impl.client.CloseableHttpClient; | ||||
| import java.io.IOException; | import java.io.IOException; | ||||
| import java.lang.reflect.Field; | |||||
| import java.nio.charset.Charset; | |||||
| import java.util.HashMap; | import java.util.HashMap; | ||||
| import java.util.Map; | import java.util.Map; | ||||
| import java.util.concurrent.locks.Lock; | import java.util.concurrent.locks.Lock; | ||||
| import static cn.binarywang.wx.miniapp.constant.WxMaConstants.ErrorCode.*; | |||||
| import static com.iformall.douyin.web.config.TtWebConstants.ErrorCode.*; | |||||
| /** | /** | ||||
| * @author | * @author | ||||
| @@ -242,9 +235,7 @@ public class TtWebServiceImpl implements TtWebService, RequestHttp<CloseableHttp | |||||
| /* | /* | ||||
| * 发生以下情况时尝试刷新access_token | * 发生以下情况时尝试刷新access_token | ||||
| */ | */ | ||||
| if (error.getErrorCode() == ERR_40001 | |||||
| || error.getErrorCode() == ERR_42001 | |||||
| || error.getErrorCode() == ERR_40014) { | |||||
| if (error.getErrorCode() == ERR_200104) { | |||||
| // 强制设置WxMaConfig的access token过期了,这样在下一次请求里就会刷新access token | // 强制设置WxMaConfig的access token过期了,这样在下一次请求里就会刷新access token | ||||
| this.getTtWebConfig().expireAccessToken(); | this.getTtWebConfig().expireAccessToken(); | ||||
| if (this.getTtWebConfig().autoRefreshToken()) { | if (this.getTtWebConfig().autoRefreshToken()) { | ||||
| @@ -0,0 +1,24 @@ | |||||
| package com.iformall.douyin.web.config; | |||||
| /** | |||||
| * <pre> | |||||
| * 小程序常量. | |||||
| * </pre> | |||||
| * | |||||
| * @author <a href="https://github.com/binarywang">Binary Wang</a> | |||||
| */ | |||||
| public class TtWebConstants { | |||||
| /** | |||||
| * 微信接口返回的参数errcode. | |||||
| */ | |||||
| public static final String ERRCODE = "errcode"; | |||||
| public static final class ErrorCode { | |||||
| /** | |||||
| * 200104 token已过期 | |||||
| */ | |||||
| public static final int ERR_200104 = 200104; | |||||
| } | |||||
| } | |||||
| @@ -119,7 +119,7 @@ public class TtMiniAppPayAdapterService extends BaseTtPayAdapterService implemen | |||||
| request.setTotalAmount(composeOrder.getPayment()); | request.setTotalAmount(composeOrder.getPayment()); | ||||
| request.setOpenId(openId); | request.setOpenId(openId); | ||||
| request.setOutOrderNo(record.getPayOrderNo()); | request.setOutOrderNo(record.getPayOrderNo()); | ||||
| request.setPayExpireSeconds(10*60); | |||||
| request.setPayExpireSeconds(14*60); | |||||
| TtPayUnifiedOrderV2Request.PageEntry pageEntry = new TtPayUnifiedOrderV2Request.PageEntry(); | TtPayUnifiedOrderV2Request.PageEntry pageEntry = new TtPayUnifiedOrderV2Request.PageEntry(); | ||||
| pageEntry.setPath(Constant.mainPageUrl); | pageEntry.setPath(Constant.mainPageUrl); | ||||
| Map<String,Object> paramMap = new HashMap<>(); | Map<String,Object> paramMap = new HashMap<>(); | ||||