代小程序实现业务之代码管理
本文将描述在公司开发平台实现小程序代码的上传审核,审核结果获取更新及代码的发布流程,详细资料可参阅官方文档代小程序实现业务-代码管理;
小程序第三方平台模板
将小程序授权给第三方平台,授权完成之后,小程序将不能进行小程序代码的上传审核,此时需要第三方平台统一开发管理小程序模板,第三方平台开发小程序模板版本的迭代更新升级;
新版本小程序模板进行提交审核将进入到第三方平台草稿箱中,小程序想要上传发布代码,需将小程序模板添加到小程序模板库中,获取小程序模板id(templateID)配合代码程序实现代码的提交审核及发布
小程序模板草稿箱
小程序模板库及绑定测试小程序
代码实现
给指定小程序上传代码
请求参数
后台接口
/** * @Description: 小程序上传/提交审核 * @Author: Mr.Jkx * @Date: 2019/5/11 15:15 */ @RequestMapping("/appletsUploadCheck") @ResponseBody public Map<String, String> appletsUploadCheck(TWarrantMerchant tWarrantMerchant) throws IOException { TPayConfig payConfig = payService.getPayConfig(tWarrantMerchant); if(null != payConfig){ tWarrantMerchant.setPayConfig("1"); }else{ tWarrantMerchant.setPayConfig("0"); } Map<String, String> stringStringMap = appletsUploadCheck(tWarrantMerchant); if(StringUtils.equals("0", stringStringMap.get("errcode"))){ TUser tUser = new TUser(); tUser.setUserId(tWarrantMerchant.getWarrantCreater()); tUser.setTemplateType("1"); // 模板状态;1,已上传;0,未上传;2,审核通过;3,发布成功 int i = userService.updateTemplateType(tUser); if(i > 0){ LOGGER.info("--------小程序上传/提交审核,数据状态修改-------成功!!!"); }else { LOGGER.info("--------小程序上传/提交审核,数据状态修改-------失败!!!"); } } return stringStringMap; }
package com.litte.util;import com.google.gson.JsonArray;import com.litte.entity.reception.TWarrantMerchant;import net.sf.json.JSONArray;import net.sf.json.JSONObject;import org.apache.commons.lang.StringUtils;import org.slf4j.Logger;import org.slf4j.LoggerFactory;import java.io.IOException;import java.util.HashMap;import java.util.Map;/*** @Description: 第三方小程序配置相关* @Author: Mr.Jkx* @UpdateDate: 2019/5/11 15:29*/public class AppletsConfiguration { private static final Logger LOGGER = LoggerFactory.getLogger(AppletsConfiguration.class); // 设置小程序服务器域名 private static final String ACCESS_TOKEN_URL = "https://api.weixin.qq.com/wxa/modify_domain?access_token=TOKEN"; // 设置小程序业务域名(仅供第三方代小程序调用) private static final String SET_WEBVIEW_DOMAIN = "https://api.weixin.qq.com/wxa/setwebviewdomain?access_token=TOKEN"; // 为授权的小程序帐号上传小程序代码 private static final String APPLETS_CODE_COMMIT = "https://api.weixin.qq.com/wxa/commit?access_token=TOKEN"; // 请求参数模板数据 private static final String DOMAIN_NAME = "https://www.xxx.com"; // 模板id private static final String TEMPLATE_ID = "14"; // 获取授权小程序帐号已设置的类目 private static final String APPLETS_CATEGORY_URL = "https://api.weixin.qq.com/wxa/get_category?access_token=TOKEN"; // 获取小程序的第三方提交代码的页面配置 private static final String APPLETS_PAGE_URL = "https://api.weixin.qq.com/wxa/get_page?access_token=TOKEN"; // 将第三方提交的代码包提交审核 private static final String SUBMIT_AUDIT_URL = "https://api.weixin.qq.com/wxa/submit_audit?access_token=TOKEN"; // 查询最新一次提交的审核状态 private static final String GET_LATEST_AUDITSTATUS = "https://api.weixin.qq.com/wxa/get_latest_auditstatus?access_token=TOKEN"; // 发布已通过审核的小程序 private static final String APPLETS_RELEASE_URL = "https://api.weixin.qq.com/wxa/release?access_token=TOKEN"; /** * @Description: 代小程序实现业务 * 参考链接:https://open.weixin.qq.com/cgi-bin/showdocument?action=dir_list&t=resource/res_list&verify=1&id=open1489138143_WPbOO&token=52693293ec662d6feb87eb805f97c1fc23c80c50&lang=zh_CN * @Author: Mr.Jkx * @Date: 2019/5/11 15:29 */ public static Map<String, String> appletsUploadCheck(TWarrantMerchant tWarrantMerchant) throws IOException { HashMap<String, String> AppletsDomainNameMap = new HashMap<>(); // 设置小程序服务器域名 HashMap<String, String> domainNameMap = domainNameConfiguration(tWarrantMerchant); if(!StringUtils.equals("85017", domainNameMap.get("errcode")) && !StringUtils.equals("0", domainNameMap.get("errcode"))){ return domainNameMap; } // 设置小程序业务域名(仅供第三方代小程序调用) HashMap<String, String> businessDomainMap = businessDomainConfiguration(tWarrantMerchant); if(!StringUtils.equals("0", businessDomainMap.get("errcode"))){ return businessDomainMap; } // 为授权的小程序帐号上传小程序代码 HashMap<String, String> appletsCodeCommitMap = appletsCodeCommit(tWarrantMerchant); if(!StringUtils.equals("0", appletsCodeCommitMap.get("errcode"))){ return appletsCodeCommitMap; } // 获取授权小程序帐号已设置的类目 HashMap<String, String> submitAuditMap = appletsSubmitAudit(tWarrantMerchant); if("0" != submitAuditMap.get("errcode")){ return submitAuditMap; } AppletsDomainNameMap.put("errcode", "0"); AppletsDomainNameMap.put("errmsg", "SUCCESS"); return AppletsDomainNameMap; } /** * @Description: 设置小程序服务器域名 * @Author: Mr.Jkx * @Date: 2019/5/11 19:22 */ public static HashMap<String, String> domainNameConfiguration(TWarrantMerchant tWarrantMerchant) throws IOException { HashMap<String, String> domainNameMap = new HashMap<>(); JsonArray requestdomainArray = new JsonArray(); // 不要删除这里就是两个参数 requestdomainArray.add(DOMAIN_NAME); requestdomainArray.add(DOMAIN_NAME); JSONObject json = new JSONObject(); json.accumulate("action", "add"); json.accumulate("requestdomain", requestdomainArray.toString()); json.accumulate("wsrequestdomain", requestdomainArray.toString()); json.accumulate("uploaddomain", requestdomainArray.toString()); json.accumulate("downloaddomain", requestdomainArray.toString()); /**发送Https请求到微信*/ String url = ACCESS_TOKEN_URL.replace("TOKEN", tWarrantMerchant.getAuthorizerAccessToken()); LOGGER.info("==========设置小程序服务器域名=====请求参数{}", json.toString()); JSONObject retStr = WinxinUtil.doPostStr(url, json.toString()); LOGGER.info("==========设置小程序服务器域名=====回执参数{}", retStr); JSONObject retJSONObject = JSONObject.fromObject(retStr); domainNameMap.put("errcode", retJSONObject.getString("errcode")); domainNameMap.put("errmsg", retJSONObject.getString("errmsg")); return domainNameMap; } /** * @Description: 设置小程序业务域名(仅供第三方代小程序调用) * @Author: Mr.Jkx * @Date: 2019/5/11 19:27 */ public static HashMap<String, String> businessDomainConfiguration(TWarrantMerchant tWarrantMerchant) throws IOException { HashMap<String, String> businessDomainMap = new HashMap<>(); JsonArray requestdomainArray = new JsonArray(); requestdomainArray.add(DOMAIN_NAME); requestdomainArray.add(DOMAIN_NAME); JSONObject json = new JSONObject(); json.accumulate("action", "add"); json.accumulate("webviewdomain", requestdomainArray.