| @@ -8,14 +8,14 @@ | |||
| <result column="type" jdbcType="INTEGER" property="type"/> | |||
| <result column="user_version" jdbcType="VARCHAR" property="userVersion"/> | |||
| <result column="version_desc" jdbcType="VARCHAR" property="versionDesc"/> | |||
| <result column="auditid" jdbcType="INTEGER" property="auditid"/> | |||
| <result column="auditid" jdbcType="Long" property="auditid"/> | |||
| <result column="audit_status" jdbcType="INTEGER" property="auditStatus"/> | |||
| <result column="audit_err_code" jdbcType="VARCHAR" property="auditErrCode"/> | |||
| <result column="audit_time" jdbcType="TIMESTAMP" property="auditTime"/> | |||
| </resultMap> | |||
| <sql id="allColumns"> | |||
| `id`,`tenant_id`,`app_id`,`type`,`user_version`,`version_desc`, `audit_status`,`audit_err_code`,`audit_time` | |||
| `id`,`tenant_id`,`app_id`,`type`,`user_version`,`version_desc`, `auditid`, `audit_status`,`audit_err_code`,`audit_time` | |||
| </sql> | |||
| <sql id="dynamicWhereConditions"> | |||
| @@ -87,6 +87,7 @@ | |||
| <result column="type" jdbcType="INTEGER" property="type"/> | |||
| <result column="user_version" jdbcType="VARCHAR" property="userVersion"/> | |||
| <result column="version_desc" jdbcType="VARCHAR" property="versionDesc"/> | |||
| <result column="auditid" jdbcType="Long" property="auditid"/> | |||
| <result column="audit_status" jdbcType="INTEGER" property="auditStatus"/> | |||
| <result column="audit_err_code" jdbcType="VARCHAR" property="auditErrCode"/> | |||
| <result column="audit_time" jdbcType="TIMESTAMP" property="auditTime"/> | |||
| @@ -95,7 +96,7 @@ | |||
| <sql id="allVoColumns"> | |||
| c.`id`,c.`tenant_id` as `tenant_id`,c.`app_id`,c.`type` as `type`,c.`user_version` as `user_version`,`version_desc`, | |||
| c.`audit_status`,c.`audit_err_code`,c.`audit_time` as `audit_time`, | |||
| c.`auditid`, c.`audit_status`,c.`audit_err_code`,c.`audit_time` as `audit_time`, | |||
| a.`name` | |||
| </sql> | |||
| @@ -116,6 +117,9 @@ | |||
| <if test=" null != userVersion "> | |||
| and c.`user_version` = #{userVersion} | |||
| </if> | |||
| <if test=" null != auditid "> | |||
| and `auditid` = #{auditid} | |||
| </if> | |||
| <if test=" null != auditStatus "> | |||
| and c.`audit_status` = #{auditStatus} | |||
| </if> | |||
| @@ -18,6 +18,8 @@ import me.chanjar.weixin.common.error.WxErrorException; | |||
| import me.chanjar.weixin.mp.bean.kefu.WxMpKefuMessage; | |||
| import me.chanjar.weixin.mp.bean.message.WxMpXmlMessage; | |||
| import me.chanjar.weixin.mp.bean.message.WxMpXmlOutMessage; | |||
| import me.chanjar.weixin.open.bean.WxOpenCreateResult; | |||
| import me.chanjar.weixin.open.bean.WxOpenGetResult; | |||
| import me.chanjar.weixin.open.bean.message.WxOpenXmlMessage; | |||
| import me.chanjar.weixin.open.bean.result.*; | |||
| import org.apache.commons.lang3.StringUtils; | |||
| @@ -35,6 +37,7 @@ import java.io.InputStream; | |||
| import java.io.PrintWriter; | |||
| import java.nio.charset.Charset; | |||
| import java.util.Date; | |||
| import java.util.Map; | |||
| @Controller | |||
| @RequestMapping("/wxOpen") | |||
| @@ -282,18 +285,17 @@ public class WechatCalllbackController extends BaseController { | |||
| public ResultData createOpenPlatform(@RequestParam(value = "appId") String appId) { | |||
| Gson gson = new GsonBuilder().create(); | |||
| try { | |||
| String responseStr = openService.getWxOpenComponentService().getWxMpServiceByAppid(appId).createOpenPlatform(appId); | |||
| logger.info(responseStr); | |||
| WxOpenPlatformResult openPlatformResult = gson.fromJson(responseStr, WxOpenPlatformResult.class); | |||
| if (openPlatformResult.isSuccess()) { | |||
| WxOpenCreateResult ret = openService.getWxOpenComponentService().createOpenAccount(appId); | |||
| logger.info(ret.toString()); | |||
| if (ret.isSuccess()) { | |||
| WxAuthorizerInfo authorizerInfo = authorizerInfoService.getByAppId(appId); | |||
| if (authorizerInfo != null) { | |||
| authorizerInfo.setId(authorizerInfo.getId()); | |||
| authorizerInfo.setOpenAppid(openPlatformResult.getOpenAppid()); | |||
| authorizerInfo.setOpenAppid(ret.getOpenAppid()); | |||
| authorizerInfoService.updateOpenAppid(authorizerInfo); | |||
| } | |||
| } | |||
| return new ResultData(responseStr); | |||
| return new ResultData(ret.toString()); | |||
| } catch (WxErrorException e) { | |||
| logger.error(e.getMessage()); | |||
| return new ResultData(Result.ERROR, e.getMessage()); | |||
| @@ -305,10 +307,8 @@ public class WechatCalllbackController extends BaseController { | |||
| public ResultData bindOpenPlatform(@RequestParam(value = "appId") String appId, @RequestParam(value = "openAppId") String openAppId) { | |||
| Gson gson = new GsonBuilder().create(); | |||
| try { | |||
| String responseStr = openService.getWxOpenComponentService().getWxMpServiceByAppid(appId).bindOpenPlatform(appId, openAppId); | |||
| logger.info(responseStr); | |||
| WxOpenResult openResult = gson.fromJson(responseStr, WxOpenResult.class); | |||
| if (openResult.isSuccess()) { | |||
| Boolean ret = openService.getWxOpenComponentService().bindOpenAccount(appId, openAppId); | |||
| if (ret) { | |||
| WxAuthorizerInfo authorizerInfo = authorizerInfoService.getByAppId(appId); | |||
| if (authorizerInfo != null) { | |||
| authorizerInfo.setId(authorizerInfo.getId()); | |||
| @@ -317,7 +317,7 @@ public class WechatCalllbackController extends BaseController { | |||
| } | |||
| return new ResultData(); | |||
| } | |||
| return new ResultData(Result.ERROR, responseStr); | |||
| return new ResultData(Result.ERROR, ret.toString()); | |||
| } catch (WxErrorException e) { | |||
| logger.error(e.getMessage()); | |||
| return new ResultData(Result.ERROR, e.getMessage()); | |||
| @@ -329,16 +329,14 @@ public class WechatCalllbackController extends BaseController { | |||
| public ResultData unbindOpenPlatform(@RequestParam(value = "appId") String appId, @RequestParam(value = "openAppId") String openAppId) { | |||
| Gson gson = new GsonBuilder().create(); | |||
| try { | |||
| String responseStr = openService.getWxOpenComponentService().getWxMpServiceByAppid(appId).unbindOpenPlatform(appId, openAppId); | |||
| logger.info(responseStr); | |||
| WxOpenResult openResult = gson.fromJson(responseStr, WxOpenResult.class); | |||
| if (openResult.isSuccess()) { | |||
| Boolean ret = openService.getWxOpenComponentService().unbindOpenAccount(appId, openAppId); | |||
| if (ret) { | |||
| WxAuthorizerInfo authorizerInfo = new WxAuthorizerInfo(); | |||
| authorizerInfo.setAuthorizerAppid(appId); | |||
| authorizerInfoService.removeOpenAppid(authorizerInfo); | |||
| return new ResultData(); | |||
| } | |||
| return new ResultData(Result.ERROR, responseStr); | |||
| return new ResultData(Result.ERROR, ret.toString()); | |||
| } catch (WxErrorException e) { | |||
| logger.error(e.getMessage()); | |||
| return new ResultData(Result.ERROR, e.getMessage()); | |||
| @@ -350,21 +348,20 @@ public class WechatCalllbackController extends BaseController { | |||
| public ResultData getOpenPlatform(@RequestParam(value = "appId") String appId) { | |||
| Gson gson = new GsonBuilder().create(); | |||
| try { | |||
| String responseStr = openService.getWxOpenComponentService().getWxMpServiceByAppid(appId).getBindOpenPlatform(appId); | |||
| logger.info(responseStr); | |||
| WxOpenPlatformResult openPlatformResult = gson.fromJson(responseStr, WxOpenPlatformResult.class); | |||
| if (openPlatformResult.isSuccess()) { | |||
| WxOpenGetResult ret = openService.getWxOpenComponentService().getOpenAccount(appId); | |||
| logger.info(ret.toString()); | |||
| if (ret.isSuccess()) { | |||
| WxAuthorizerInfo authorizerInfo = authorizerInfoService.getByAppId(appId); | |||
| if (authorizerInfo != null) { | |||
| if(StringUtils.isBlank(authorizerInfo.getOpenAppid()) && StringUtils.isNotBlank(openPlatformResult.getOpenAppid())) { | |||
| if(StringUtils.isBlank(authorizerInfo.getOpenAppid()) && StringUtils.isNotBlank(ret.getOpenAppid())) { | |||
| authorizerInfo.setId(authorizerInfo.getId()); | |||
| authorizerInfo.setOpenAppid(openPlatformResult.getOpenAppid()); | |||
| authorizerInfo.setOpenAppid(ret.getOpenAppid()); | |||
| authorizerInfoService.updateOpenAppid(authorizerInfo); | |||
| } | |||
| } | |||
| return new ResultData(openPlatformResult.getOpenAppid()); | |||
| return new ResultData(ret.getOpenAppid()); | |||
| } | |||
| return new ResultData(Result.ERROR, responseStr); | |||
| return new ResultData(Result.ERROR, ret.toString()); | |||
| } catch (WxErrorException e) { | |||
| logger.error(e.getMessage()); | |||
| return new ResultData(Result.ERROR, e.getMessage()); | |||
| @@ -387,17 +384,14 @@ public class WechatCalllbackController extends BaseController { | |||
| @ApiOperation("拉取当前所有已授权的帐号基本信息") | |||
| public ResultData getAuthorizerList() { | |||
| try { | |||
| String accessToken = openService.getWxOpenComponentService().getComponentAccessToken(true); | |||
| String ret = openService.getWxOpenComponentService().getApiGetAuthorizerList(accessToken, 0, 100); | |||
| logger.info("getAuthorizerList: " + ret); | |||
| JSONObject retObj = JSON.parseObject(ret); | |||
| if(retObj.getInteger("total_count") > 0) { | |||
| JSONArray dataList = retObj.getJSONArray("list"); | |||
| for(int i= 0;i<dataList.size();i++) { | |||
| JSONObject obj = dataList.getJSONObject(i); | |||
| String appId = obj.getString("authorizer_appid"); | |||
| String refreshToken = obj.getString("refresh_token"); | |||
| Date authDate = new Date(obj.getLong("auth_time")*1000); | |||
| WxOpenAuthorizerListResult authorizerListResult = openService.getWxOpenComponentService().getAuthorizerList(0, 100); | |||
| logger.info("getAuthorizerList: " + authorizerListResult); | |||
| if(authorizerListResult.getTotalCount() > 0) { | |||
| for (Map<String, String> data : authorizerListResult.getList()) { | |||
| String appId = data.get("authorizer_appid"); | |||
| String refreshToken = data.get("refresh_token"); | |||
| Long authTime = Long.valueOf(data.get("auth_time")); | |||
| Date authDate = new Date(authTime*1000); | |||
| if(StringUtils.isBlank(refreshToken)) { | |||
| continue; | |||
| @@ -412,7 +406,7 @@ public class WechatCalllbackController extends BaseController { | |||
| openService.getWxOpenComponentService().getWxOpenConfigStorage().setAuthorizerRefreshToken(appId, refreshToken); | |||
| } | |||
| } | |||
| return new ResultData(ret); | |||
| return new ResultData(authorizerListResult.toString()); | |||
| } catch (WxErrorException e) { | |||
| logger.error(e.getMessage()); | |||
| return new ResultData(Result.ERROR, e.getMessage()); | |||
| @@ -6,6 +6,7 @@ import com.google.gson.reflect.TypeToken; | |||
| import com.iformall.common.ErrorCode; | |||
| import com.iformall.common.Result; | |||
| import com.iformall.common.ResultData; | |||
| import com.iformall.controller.base.BaseController; | |||
| import com.iformall.domain.dto.WxWeappCodeAuditDto; | |||
| import com.iformall.domain.po.*; | |||
| import com.iformall.domain.vo.WxWeappCodeStatusVo; | |||
| @@ -45,7 +46,7 @@ import java.util.Map; | |||
| @RestController | |||
| @RequestMapping("/weappCode") | |||
| @Api(description = "微信第三方开发平台-小程序-代码管理") | |||
| public class WechatWeappCodeController { | |||
| public class WechatWeappCodeController extends BaseController { | |||
| private final Logger logger = LoggerFactory.getLogger(getClass()); | |||
| @Autowired | |||
| private FmOpenService openService; | |||
| @@ -254,6 +255,7 @@ public class WechatWeappCodeController { | |||
| WxWeappAuditStatus auditStatus = weappAuditStatusService.getByAppId(appId); | |||
| boolean submitStatus = false; | |||
| String codeErrCode = ""; | |||
| Long auditId = null; | |||
| try { | |||
| WxOpenMaService openMaService = openService.getWxOpenComponentService().getWxMaServiceByAppid(appId); | |||
| WxOpenMaSubmitAuditResult openRet = openMaService.submitAudit(subMessage); | |||
| @@ -261,6 +263,7 @@ public class WechatWeappCodeController { | |||
| if(openRet.isSuccess()) { | |||
| submitStatus = true; | |||
| codeErrCode = gson.toJson(openRet); | |||
| auditId = openRet.getAuditId(); | |||
| } else { | |||
| submitStatus = false; | |||
| codeErrCode = gson.toJson(openRet); | |||
| @@ -317,6 +320,23 @@ public class WechatWeappCodeController { | |||
| return new ResultData(ErrorCode.WEAPP_CODE_COMMIT_ERR); | |||
| } | |||
| @ApiOperation("查询服务商的当月提审限额(quota)和加急次数") | |||
| @GetMapping("/queryQuota") | |||
| @ApiImplicitParams({ | |||
| @ApiImplicitParam(name = "appId", value = "appId", dataType = "String", paramType = "query", required = true)}) | |||
| public ResultData queryQuota(String appId) { | |||
| logger.debug("[" + getIpAddr() + "] WechatWeappCodeController::queryQuota"); | |||
| try { | |||
| WxOpenMaService openMaService = openService.getWxOpenComponentService().getWxMaServiceByAppid(appId); | |||
| WxOpenMaQueryQuotaResult openRet = openMaService.queryQuota(); | |||
| logger.info(openRet.toString()); | |||
| return new ResultData(openRet.toString()); | |||
| } catch (WxErrorException e) { | |||
| logger.error(e.getMessage()); | |||
| return new ResultData(e.getMessage()); | |||
| } | |||
| } | |||
| @ApiOperation("将第三方提交的代码包提交审核") | |||
| @PostMapping("/submitAuditWithFeedBack") | |||
| public ResultData submitAudit(@RequestBody WxWeappCodeAuditDto codeAuditDto) { | |||
| @@ -348,6 +368,7 @@ public class WechatWeappCodeController { | |||
| WxWeappAuditStatus auditStatus = weappAuditStatusService.getByAppId(codeAuditDto.getAppId()); | |||
| boolean submitStatus = false; | |||
| String codeErrCode = ""; | |||
| Long auditId = null; | |||
| try { | |||
| WxOpenMaService openMaService = openService.getWxOpenComponentService().getWxMaServiceByAppid(codeAuditDto.getAppId()); | |||
| WxOpenMaSubmitAuditResult openRet = openMaService.submitAudit(subMessage); | |||
| @@ -355,6 +376,7 @@ public class WechatWeappCodeController { | |||
| if(openRet.isSuccess()) { | |||
| submitStatus = true; | |||
| codeErrCode = gson.toJson(openRet); | |||
| auditId = openRet.getAuditId(); | |||
| } else { | |||
| submitStatus = false; | |||
| codeErrCode = gson.toJson(openRet); | |||
| @@ -373,6 +395,7 @@ public class WechatWeappCodeController { | |||
| auditStatus.setType(codeStatus.getType()); | |||
| auditStatus.setUserVersion(codeStatus.getUserVersion()); | |||
| auditStatus.setVersionDesc(codeStatus.getVersionDesc()); | |||
| auditStatus.setAuditid(auditId); | |||
| if(submitStatus) { | |||
| auditStatus.setAuditStatus(EnumWeappAuditStatus.AUDITING.getCode()); | |||
| } else { | |||
| @@ -395,6 +418,7 @@ public class WechatWeappCodeController { | |||
| } | |||
| auditStatus.setUserVersion(codeStatus.getUserVersion()); | |||
| auditStatus.setVersionDesc(codeStatus.getVersionDesc()); | |||
| auditStatus.setAuditid(auditId); | |||
| auditStatus.setAuditTime(new Date()); | |||
| weappAuditStatusService.updateStatus(auditStatus); | |||
| } | |||
| @@ -411,6 +435,23 @@ public class WechatWeappCodeController { | |||
| return new ResultData(ErrorCode.WEAPP_CODE_COMMIT_ERR); | |||
| } | |||
| @ApiOperation("加速某个指定版本的审核状态") | |||
| @GetMapping("/speedAudit") | |||
| @ApiImplicitParams({ | |||
| @ApiImplicitParam(name = "appId", value = "appId", dataType = "String", paramType = "query", required = true), | |||
| @ApiImplicitParam(name = "auditid", value = "auditid", dataType = "Long", paramType = "query", required = true)}) | |||
| public ResultData speedAudit(String appId, Long auditid) { | |||
| logger.debug("[" + getIpAddr() + "] WechatWeappCodeController::speedAudit"); | |||
| try { | |||
| WxOpenMaService openMaService = openService.getWxOpenComponentService().getWxMaServiceByAppid(appId); | |||
| Boolean ret = openMaService.speedAudit(Long.valueOf(auditid)); | |||
| return new ResultData(ret.toString()); | |||
| } catch (WxErrorException e) { | |||
| logger.error(e.getMessage()); | |||
| return new ResultData(e.getMessage()); | |||
| } | |||
| } | |||
| @ApiOperation("查询某个指定版本的审核状态") | |||
| @PostMapping("/getAuditstatus") | |||
| public ResultData getAuditstatus(String appId, String auditidStr) { | |||
| @@ -696,9 +696,9 @@ public class WxWeappInfoController extends BaseController { | |||
| auditStatus.setType(codeStatus.getType()); | |||
| auditStatus.setUserVersion(codeStatus.getUserVersion()); | |||
| auditStatus.setVersionDesc(codeStatus.getVersionDesc()); | |||
| auditStatus.setAuditid(auditid); | |||
| if(submitStatus) { | |||
| auditStatus.setAuditStatus(EnumWeappAuditStatus.AUDITING.getCode()); | |||
| auditStatus.setAuditid(auditid); | |||
| } else { | |||
| auditStatus.setAuditStatus(EnumWeappAuditStatus.FAIL.getCode()); | |||
| } | |||
| @@ -706,6 +706,7 @@ public class WxWeappInfoController extends BaseController { | |||
| auditStatus.setAuditTime(new Date()); | |||
| weappAuditStatusService.saveStatus(auditStatus); | |||
| } else { | |||
| auditStatus.setAuditid(auditid); | |||
| if(!submitStatus) { | |||
| if(!auditStatus.getUserVersion().equals(codeStatus.getUserVersion()) | |||
| && auditStatus.getAuditStatus().equals(EnumWeappAuditStatus.AUDITING.getCode())) { | |||
| @@ -715,7 +716,6 @@ public class WxWeappInfoController extends BaseController { | |||
| auditStatus.setAuditStatus(EnumWeappAuditStatus.FAIL.getCode()); | |||
| } else { | |||
| auditStatus.setAuditStatus(EnumWeappAuditStatus.AUDITING.getCode()); | |||
| auditStatus.setAuditid(auditid); | |||
| } | |||
| auditStatus.setUserVersion(codeStatus.getUserVersion()); | |||
| auditStatus.setVersionDesc(codeStatus.getVersionDesc()); | |||
| @@ -72,7 +72,7 @@ public class WxCardController extends BaseController { | |||
| if (type.equalsIgnoreCase("groupon")) { | |||
| //团购券 | |||
| WxMpCardCreateMessage grouponMessage = new WxMpCardCreateMessage(); | |||
| WxMpCardCreateRequest grouponMessage = new WxMpCardCreateRequest(); | |||
| GrouponCardCreateRequest grouponCardCreateRequest = new GrouponCardCreateRequest(); | |||
| GrouponCard grouponCard = new GrouponCard(); | |||
| grouponCard.setBaseInfo(base); | |||
| @@ -90,7 +90,7 @@ public class WxCardController extends BaseController { | |||
| } | |||
| } else if (type.equalsIgnoreCase("cash")) { | |||
| //现金券 | |||
| WxMpCardCreateMessage cashMessage = new WxMpCardCreateMessage(); | |||
| WxMpCardCreateRequest cashMessage = new WxMpCardCreateRequest(); | |||
| CashCardCreateRequest cashCardCreateRequest = new CashCardCreateRequest(); | |||
| CashCard cashCard = new CashCard(); | |||
| cashCard.setBaseInfo(base); | |||
| @@ -107,7 +107,7 @@ public class WxCardController extends BaseController { | |||
| } | |||
| } else if (type.equalsIgnoreCase("discount")) { | |||
| //折扣券 | |||
| WxMpCardCreateMessage discountMessage = new WxMpCardCreateMessage(); | |||
| WxMpCardCreateRequest discountMessage = new WxMpCardCreateRequest(); | |||
| DiscountCardCreateRequest discountCardCreateRequest = new DiscountCardCreateRequest(); | |||
| DiscountCard discountCard = new DiscountCard(); | |||
| discountCard.setBaseInfo(base); | |||
| @@ -124,7 +124,7 @@ public class WxCardController extends BaseController { | |||
| } | |||
| } else if (type.equalsIgnoreCase("gift")) { | |||
| //兑换券 | |||
| WxMpCardCreateMessage giftMessage = new WxMpCardCreateMessage(); | |||
| WxMpCardCreateRequest giftMessage = new WxMpCardCreateRequest(); | |||
| GiftCardCreateRequest giftCardCreateRequest = new GiftCardCreateRequest(); | |||
| GiftCard giftCard = new GiftCard(); | |||
| giftCard.setBaseInfo(base); | |||
| @@ -140,9 +140,9 @@ public class WxCardController extends BaseController { | |||
| } | |||
| } else if (type.equalsIgnoreCase("generalcard")) { | |||
| //普通兑换券 | |||
| WxMpCardCreateMessage generalMessage = new WxMpCardCreateMessage(); | |||
| GeneralCardCreateRequest generalCardCreateRequest = new GeneralCardCreateRequest(); | |||
| GeneralCard generalCard = new GeneralCard(); | |||
| WxMpCardCreateRequest generalMessage = new WxMpCardCreateRequest(); | |||
| GeneralCouponCreateRequest generalCardCreateRequest = new GeneralCouponCreateRequest(); | |||
| GeneralCoupon generalCard = new GeneralCoupon(); | |||
| generalCard.setBaseInfo(base); | |||
| generalCard.setDefaultDetail("音乐木盒"); | |||
| @@ -1,16 +1,16 @@ | |||
| package com.iformall.mp.utils; | |||
| import com.iformall.domain.po.WxAppinfo; | |||
| import me.chanjar.weixin.mp.api.WxMpInMemoryConfigStorage; | |||
| import me.chanjar.weixin.mp.api.WxMpService; | |||
| import me.chanjar.weixin.mp.api.impl.WxMpServiceImpl; | |||
| import me.chanjar.weixin.mp.config.impl.WxMpDefaultConfigImpl; | |||
| /** | |||
| * @author Stormeye | |||
| */ | |||
| public class MpUtil { | |||
| static public WxMpService getMpService(WxAppinfo appinfo) { | |||
| WxMpInMemoryConfigStorage configStorage = new WxMpInMemoryConfigStorage(); | |||
| WxMpDefaultConfigImpl configStorage = new WxMpDefaultConfigImpl(); | |||
| configStorage.setAppId(appinfo.getAppId()); | |||
| configStorage.setSecret(appinfo.getSecret()); | |||
| configStorage.setToken(appinfo.getToken()); | |||
| @@ -23,11 +23,11 @@ | |||
| </parent> | |||
| <properties> | |||
| <weixin-java-common.version>3.4.0.A</weixin-java-common.version> | |||
| <weixin-java-mp.version>3.4.0.A</weixin-java-mp.version> | |||
| <weixin-java-miniapp.version>3.4.0.A</weixin-java-miniapp.version> | |||
| <weixin-java-pay.version>3.4.0.A</weixin-java-pay.version> | |||
| <weixin-java-open.version>3.4.0.A</weixin-java-open.version> | |||
| <weixin-java-common.version>3.6.0.A</weixin-java-common.version> | |||
| <weixin-java-mp.version>3.6.0.A</weixin-java-mp.version> | |||
| <weixin-java-miniapp.version>3.6.0.A</weixin-java-miniapp.version> | |||
| <weixin-java-pay.version>3.6.0.A</weixin-java-pay.version> | |||
| <weixin-java-open.version>3.6.0.A</weixin-java-open.version> | |||
| <quartz.version>2.3.0</quartz.version> | |||
| </properties> | |||