主机参考:VPS测评参考推荐/专注分享VPS服务器优惠信息!若您是商家可以在本站进行投稿,查看详情!此外我们还提供软文收录、PayPal代付、广告赞助等服务,查看详情! |
我们发布的部分优惠活动文章可能存在时效性,购买时建议在本站搜索商家名称可查看相关文章充分了解该商家!若非中文页面可使用Edge浏览器同步翻译!PayPal代付/收录合作 |
假设您有多个业务和公众号/小程序,且功能模型相同。 只是小程序开发,是否需要在微信公众号后台复制多套代码、更改appid信息、配置域名服务器和密钥等繁琐信息,每次更改都提交发布,如此重复。步。 随着时间的推移,需要维护的公众号/小程序数量不断增加,需要投入的资源和成本也随之增加。
这个想法是,你可以开发一套公众号/小程序代码作为模板,然后将所有在后端完成的处理移至你的后端管理系统中。我们的官方帐户? 在同一个业务中创建小程序,您只需要管理员权限,只需点击系统内的几个按钮,就可以将您的小程序发布到网上。 可一次性开发N个公众账号,并提供满足基本业务需求的标准化接口服务。 多个公众账号可通过扫描二维码平台认证进行业务。 无需了解复杂的参数设置,也不向开发者提供密码,保证安全,真正解放学生和开发者的双手。 我希望我有更多的时间和我的女朋友聊天。 没错,微信第三方平台的开发就是为了节省更多的泡妞时间。
相关学习推荐:微信公众号开发教程
概述
微信公众平台-第三方平台(简称第三方平台)是一个向开发者开放的平台。 通过开发者认证或使用。 第三方平台开发者经公众号、小程序运营者(以下简称运营者)批准后,可以通过致电公众号、小程序运营者申请账号并创建小程序。方案,我们可以提供技术。 微信开放平台接口功能。 综合服务包括开发、行业解决方案、活动营销和插件功能。 同一账户的运营商可以选择多个第三方来提供适合其组织的产品功能或外包运营。
从业务特点来看,第三方平台应该如图所示。
针对具体业务场景,第三方平台包括以下场景:
我们提供电商行业解决方案、旅游行业解决方案等行业解决方案。
行业:提供(横向)更专业的运营能力。对用户公众账号或小程序的复杂操纵。
特色:(纵向)优化公共平台功能,例如专门优化图文消息视觉风格和布局的工具,专门定制的CRM用户管理功能。
接入第三方开发的前提是微信开放平台应用。 请参阅详细的创建说明。
developers.weixin.qq.com/doc/oplatfo...
1. 获取验证票
验证票(component_verify_ticket)。 第三方平台创建并通过审核后,微信服务器每隔10分钟会向其“授权事件接收URL”发送一个POST。 Push component_verify_ticket
当收到POST请求时,直接返回字符串success即可。 为了加强安全性,在申请服务时,post数据中的xml会使用加解密密钥进行加密,收到推送后必须进行解密。
public void saveTicket(HttpServletRequest request, HttpServletResponse response) throws IOException { String msgSignature = request.getParameter("msg_signature");//微信加密签名 String timeStamp = request.getParameter("timestamp");//时间戳String nonce = request.getParameter("nonce"); // 随机数 BufferedReader br = new BufferedReader(new InputStreamReader(request.getInputStream(),"UTF-8")); new StringBuffer(); while ((line = br.readLine()) != null) { sb = sb.append( line ); String postData = sb.toString(); 尝试 { AuthorizedUtils.saveComponentVerifyTicket(msgSignature, timeStamp, nonce, postData); catch (Exception e) { logger.error("系统异常", e); }finally { // 响应消息 PrintWriter out = response.getWriter(); } }复制代码
2.获取token
token(component_access_token)为第三方平台接口的调用凭证。 代币获取有限制。 每个令牌的有效期为 2 小时。 请自行管理您的代币。 当Token即将过期时(例如1小时50分钟),再次调用接口取回Token。
public static ComponentToken getComponentToken(String Ticket) { RedisService redisService = RedisService.load();ComponentToken ComponentToken = redisService.load(ComponentToken.COMPONENTTOKEN_ID, ComponentToken.class); if (componentToken == null) { String encryptAppId = ThirdPlat.PLAT_APPID; String appId = EnDecryptUtil.d3esDecode(encryptAppId); 字符串加密密钥 = ThirdPlat.PLAT_SECRET;细绳 requestUrl = AuthAccessUrl.COMPONENT_ACCESS_URL; Map Map = new HashMap(); //第三方平台 appid map.put("component_appsecret", Secret); /不。 第三方平台 appsecret map.put("component_verify_ticket", Ticket); String 输出 Str = JSONObject.toJSONString(map); logger.warn("请求数据"+outputStr); JSONObject jsonObject = HttpRequestUtils.httpRequest(requestUrl, " POST" , OutputStr); if (null != jsonObject) { long expires = System.currentTimeMillis() + 7200; try{ expires = System.currentTimeMillis() + jsonObject.getIntValue("expires_in"); }catch (异常 e) { } try {componentToken = new ComponentToken.setComponentAccessToken; (jsonObject.getString("component_access_token")); ComponentToken.setExpiresIn(expired); redisService.save(componentToken, ComponentToken.class); catch (异常 e) {componentToken = null; logger.error("系统异常", e); currentTimeMillis(); if (sysTime >=ComponentToken.getExpiresIn()) { redisService.delete(ComponentToken.COMPONENTTOKEN_ID, ComponentToken.class); 组件 token = getComponentToken(ticket); }其他{ }}返回ComponentToken;}复制代码
3.快速创建小程序
快速创建小程序接口,优化小程序注册和授权流程,让第三方平台可以帮助您快速成长商家并扩展您的商家服务。 拓展并抢占小程序线下商机。 用企业人脸识别取代小额支付等认证流程,将大幅降低小程序主体和品类采集凭证的人力成本。 第三方平台只需采集法人名称、法人微信账号、公司名称、公司代码信息四项信息,即可向法人发送模板消息采集法人人脸。 输入您的信息并完成整个注册和验证过程。 然后,当法人收到成功创建的小程序APPID后,就会向法人发送一条模板消息,提示法人设置邮箱地址和密码,以便法人登录小程序。 用于后续管理的控制台。
通过该接口创建的小程序默认为“已认证”。 降低小程序接入成本门槛,通过该接口创建的小程序无需缴纳300元认证费。
public AjaxResult fastRegister(StringMerchantId) { seller =MerchantService.getById(merchantId); if (merchant == null) { logger.warn("创建一个简单的小程序 --[k3 ][k3 ] >失败,卖家为空"); return AjaxResult.error("快速创建小程序失败,卖家为null",null); } else { RedisService redisService = RedisService.load();ad(ComponentVerifyTicket.COMPONENT_VERIFY_TICKET_ID, ComponentVerifyTicket.class); if (componentVerifyTicket == null) { logger.warn("快速创建小程序---->失败。component_verify_ticket为null");返回 AjaxResult.error("快速创建小程序失败。component_verify_ticket 为 null",null); } else { ComponentToken component token = AuthorizedUtils.getComponentToken(componentVerifyTicket.getComponentVerifyTicket()); .getName()) .setCode(merchant.getCode()) .setCode_type(merchant.getCodeType()) .setLegal_persona_wechat(merchant.getLegalPersonalaWechat()) .setLegal_persona_name(merchant.getLegalPersonalName()).setComponent_phone(merchant.getComponentPhone()); if (obj.getInteger("errcode") == 0 && "ok".equalsIgnoreCase(obj.getString("errmsg"); )) { 返回 AjaxResult.success() } else { return AjaxResult.error(obj.getInteger("errcode"),obj.getString("errmsg")); 复制代码
4. 获取预授权码
- 授权码( pre_auth_code )是第三方平台实现授权托管所需的信息。 每个预授权码的有效期为10分钟。 您必须在调用之前获取令牌。
public static String getPreAuthCode(String Ticket) {ComponentTokenComponentToken = getComponentToken(ticket);String encryptAppId = ThirdPlat.PLAT_APPID;String appId = EnDecryptUtil.d3esDecode(encryptAppId);String url = AuthAccessUrl.PRE_AUTH_CODE_URL +ComponentToken.getComponentAccessToken();Map map = new HashMap();map.put("component_appid", appId); JSONObject jsonObject = HttpRequestUtils.httpRequest(url, "POST", JSONObject. toJSONString(map)); 返回 jsonObject.getString("pre_auth_code");}复制代码
5.引导卖家获取凭证
第三方服务商构建认证链接并在您自己的网站上。 当用户点击它时,会弹出一个身份验证页面。
public AjaxResult getMchWebAuthUrl(@PathVariable("id") String id) {RedisService redisService = RedisService.load();ComponentVerifyTicket ComponentVerifyTicket = redisService.load(ComponentVerifyTicket.COMPONENT_VERIFY_TICKET_ID, ComponentVerifyTicket.class);if( componentVerifyTicket ==空){ return AjaxResult.error("引导用户进入授权页面失败。component_verify_ticket为null",null);}else{字符串 preAuthCode = AuthorizedUtils.getPreAuthCode(componentVerifyTicket.getComponentVerifyTicket()); 字符串 encryptAppId = ThirdPlat.PLAT_APPID; 字符串 appId = EnDecryptUtil.d3esDecode(encryptAppId); AuthAccessUrl.WEB_AUTH_URL; 尝试 { requestUrl = requestUrl.replace("COMPONENT_APPID", appId).replace("PRE_AUTH_CODE", preAuthCode) .replace("REDIRECT_URI", URLEncoder.encode(ThirdPlat.REDIRECT_URI.replace("MERCHANTID") id),"UTF-8")).replace("AUTH_TYPE", auth_type); } catch (UnsupportedEncodingException e) { e.printStackTrace(); logger.warn("第 2 步:将用户引导至身份验证页面----> 成功,URL为:" + requestUrl); return AjaxResult.success("操作成功"t;,requestUrl); }}复制代码
6.设置小程序的基本信息
设置小程序的名称。 如果名称与关键字不匹配,则设置成功。 如果您的名字符合关键字,您需要提交支持材料以供审核。 更换小程序头像。 修正了功能介绍。 更改小程序的隐私设置。 换句话说,它改变了是否可搜索。
public AjaxResult setBasicInfo(BasicInfo BasicInfo) throws IOException { Merchant =MerchantService.getById(basicInfo.getMerchantId()); if (merchant == null) { logger.warn("设置基本信息-[k3 ] [ k3]->失败,卖家为空"); return AjaxResult.error("设置基本信息失败,卖家为空",null); } else { AuthorizationInfo information = AuthorizedUtils.getAuthorizationInfo(merchant.getAppid()); //更改头像 if (StringUtils.isNotEmpty (basicInfo.getHeadImage( )) )) { UploadIn uli = new UploadIn(); uli.setType("Image").setUrlPath(basicInfo.getHeadImage()); JSONObject UploadJson = BaseUtils.upload(info,uli);String mediaId = UploadJson.getString("media_id");ModifyHeadImageIn mhi = new ModifyHeadImageIn().setX1("0").setY1("0").setX2("1").setY2( “1”); BaseUtils.modifyHeadImage(info,mhi); if (!obj.getInteger(ResStatus.ERRCODE).equals(ResStatus.CODE) || !ResStatus.MSG.equalsIgnoreCase(obj.getString(ResStatus.ERRMSG))) { return AjaxResult.error(obj.getInteger(ResStatus.ERRCODE),obj.getString(ResStatus.ERRMSG)); else {merchant.setAppletsHeadImg(basicInfo.getHeadImage()); } } //重命名 if (StringUtils.isNotEmpty (basicInfo .getNickname) ())) { 上传 uli = new UploadIn();pe("image").setUrlPath(merchant.getBusinessLicense()); JSONObject UploadJson = BaseUtils.upload(info,uli); String mediaId = UploadJson.getString("media_id"); SetNicknameIn sni = new SetNicknameIn(); setNick_name(basicInfo.getNickname()); sni.setLicense(mediaId); JSONObject obj = BaseUtils.setNickname(info,sni); if (!obj.getInteger(ResStatus.ERRCODE).equals(ResStatus.CODE) || !ResStatus.MSG.equalsIgnoreCase(obj.getString( ResStatus.ERRMSG))) { return AjaxResult.error(obj.getInteger(ResStatus.ERRCODE),obj.getString(ResStatus.ERRMSG)) etc.setAppletsName(basicInfo.getNickname( )); } 否则 { 如果 (obj.containsKey("audit_id") && StringUtils.isNotEmpty(obj.getString("audit_id"))) {merchant.setAuditId(obj.getString("audit_id")); } } } //引入change函数 if (StringUtils.isNotEmpty(basicInfo.getSignature())) { ModifySignatureIn msi = 新的ModifySignatureIn(); msi.setSignature(basicInfo.getSignature()); JSONObject obj = BaseUtils.modifySignature(info, msi); if (!obj.getInteger(ResStatus.ERRCODE).equals(ResStatus.CODE) || !ResStatus.MSG.equalsIgnoreCase(obj.getString(ResStatus.ERRMSG))) { return AjaxResult.error(obj.getInteger(ResStatus.ERRCODE),obj.getString(ResStatus.ERRMSG)) else {merchant.setAppletsSignature(basicInfo .获取签名()); //更改隐私设置。 也就是改变是否可以被搜索(StringUtils.isNotEmpty(basicInfo.getStatus())) { SearchStatusIn ssi = new SearchStatusIn(); JSONObject obj = BaseUtils.changeWxaSearchStatus(info, ssi); (!obj.getInteger(ResStatus.ERRCODE).equals(ResStatus.CODE) || !ResStatus.MSG.equalsIgnoreCase(obj.getString(ResStatus.ERRMSG))) { return AjaxResult.error(obj.getInteger(ResStatus.ERRCODE),obj.getString(ResStatus.ERRMSG)); else {merchant.setSearchStatus(basicInfo.getStatus()); return AjaxResult.success(); }}复制代码
7. 付款授权
输入您的卖家编号和卖家编号密钥并上传您的 p12 证书。
8.配置服务器域名
第三方授权小程序的服务器域名只能是第三方平台的服务器。 一旦小程序通过第三方平台发布代码并上线,小程序原有配置的服务器域名将被移除,仅保留第三方平台。 由于域名是第三方平台,之前代表小程序发布代码,您必须调用该接口将第三方平台自己的域名添加到您的小程序中。
注意:
调用接口进行配置前,必须将域名注册为第三方平台小程序服务器的域名。
您最多可以添加 1,000 个合法服务器域名。 其中,最多支持200个请求域名、socket域名、上传文件域名、下载域名、UDP域名。
每月最多可提交50次修改申请。
public AjaxResultmodifyDomain(ModifyDomainmodifyDomain) { seller =MerchantService.getById(modifyDomain.getMerchantId()); if (merchant == null) { logger.warn("服务器域名 --[k3 ][ k3 ] 设置失败,卖家为空"); return AjaxResult.error("设置服务器域名失败。卖家为空",null); } else { AuthorizationInfo information = AuthorizedUtils.getAuthorizationInfo(merchant.getAppid()); .getAction()); String[] 请求 =modifyDomain.getRequestdomain().split(","); ListrequestList = Arrays.asList(requests); out.setRequestdomain(请求列表); String[] wsrequests =modifyDomain.getWsrequestdomain().split(","); List wsrequestList = Arrays.asList(wsrequests); setWsrequestdomain(wsrequestList); 上传 =modifyDomain.getUploaddomain().split(","); UploadList = Arrays.asList(uploads); out.setUploaddomain(uploadList); String[] 下载 =modifyDomain.getDownloaddomain("," ) ; List downloadsList = Arrays.asList(downloads); out.setDownloaddomain(downloadsList); JSONObject obj = BaseUtils.modifyDomain(info, out); if("0".equals(obj.getString("errcode")) && "ok".equalsIgnoreCase(obj.getString("errmsg"))){ return AjaxResult.success(); } else { return AjaxResult.error(obj.getInteger("errcode"),obj.getString("errmsg"));复制代码
9.设置您的企业域名
第三方授权小程序的企业 域名只能作为第三方平台的服务器。 当小程序通过第三方发布并上线时,小程序原有设置的企业域名将被移除,仅保留第三方平台的域名。 因此,在第三方平台代表您的小程序发布代码之前,您必须调用接口将您的业务域名添加到您的小程序中。
注意:
调用配置接口之前,您必须在第三方平台的小程序业务域名中注册您的业务域名。
您在为已审核通过的小程序配置域名时,可以配置子域名。 例如,如果您的第三方注册的企业域名是qq.com,您可以直接添加qq.com,其子域名(如xxx.qq.com)也会被设置为Approved Applets。
您最多可以添加 100 个商家
public AjaxResult webviewDomain(WebviewDomain webviewDomain) { Merchant Merchant =MerchantService.getById(webviewDomain.getMerchantId()); if (merchant == null) { logger . warn("企业域名----> return AjaxResult.error("设置商家域名失败,卖家为空"); return AjaxResult.error("设置商家域名失败。erchant 为 null",null); } else { AuthorizationInfo info = AuthorizedUtils.getAuthorizationInfo(merchant.getAppid()); SetWebViewDomainOut out = new SetWebViewDomainOut(); out.setAction(webviewDomain.getAction()); String[] webviews = webviewDomain .getWebviewdomain().split(","); webviewList = Arrays.asList(webviews); out.setWebviewdomain(webviewList); JSONObject obj = BaseUtils.setWebViewDomain(info, out); if("0".equals(obj.getString("errcode")) && "ok". qualsIgnoreCase(obj.getString("errmsg"))){ 返回 AjaxResult.success(); } else { return AjaxResult.error(obj.getInteger("errcode"),obj.getString("errmsg")); }}复制代码
10.程序代码
第三方平台首先需要向代码模板库添加草稿或者从代码模板库中选择代码模板,获取对应的模板ID(template_id)。 然后调用该接口调用授权小程序的上传代码。
public AjaxResult commit(CommitModel model) { Merchant =MerchantService.selectMerchantById(model.getMerchantId()); if (merchant == null) { logger.warn("上传代码--[k3 ] [ k3]>失败,卖家为空"); return AjaxResult.error("上传代码。卖家为空",null); items = value.split("_"); 字符串版本 = items[2]; commitIn.setTemplate_id(items[0]) .setUser_desc(items[1]) .setUser_version(version); //第三方自定义配置 JSONObject obj = new JSONObject();ot;,merchant.getAppid());Mapmap = new HashMap();map.put("merchantId", model.getMerchantId());map.put("userVersion", commitIn. getUser_version()); obj.put("ext", Map); Map = new HashMap Map = new HashMap(); map.put("页面/索引/索引", map); obj.put("extPages", map); commitIn.setExt_json(JSONObject.toJSONString(obj)); /接受微信Data返回的数据 obj = CodeUtils.commit(info, commitIn); if("0".equals(obj.getString("errcode")) && "ok".equalsIgnoreCase(obj.getString("errmsg"))){ AppletsRelease ar = appletReleaseService.getOne(new LambdaQueryWrapper() . eq(AppletsRelease::getMerchantId,merchant.getId())); if(ar == null){ ar = new AppletsRelease(); ar.setMerchantId(model.getMerchantId()).setHistoryversion(version); } else{ ar.setHistoryversion(version) ; AppletReleaseService.saveOrUpdate(ar); 返回 AjaxResult.success(); } else { return AjaxResult.error(obj.getInteger("errcode"),obj.getString("errmsg")); }}复制代码
11. 第三方支持在该平台上,小程序运营者可以先体验代码审查,然后再对审核通过的小程序提交代码审查。 体验前需将运营商个人微信号添加至小程序体验列表中。
注意:如果操作者同时是小程序的管理员,则无需绑定小程序。 管理员默认拥有体验权限。
/*** 绑定体验者* @paraambindTester* @return*/@Overridepublic AjaxResult bindingTester(BindTester bindingTester) { 商家 Merchant =MerchantService.getById(bindTester.getMerchantId()) if (merchant == null) { logger .warn("经验者 绑定---->失败,商户为空"); return AjaxResult.error("绑定体验失败,商户为空", null); } else { AuthorizationInfo info = AuthorizedUtils.getAuthorizationInfo(merchant.getAppid()); JSONObject obj = MemberUtils.bindTester (信息,bindTester.getWechatId()); if("0".equals(obj.getString("errcode")) && "ok".equalsIgnoreCase(obj.getString("errmsg"))){ AppletsTester at = new AppletsTester(); at.setMerchantId(bindTester.getMerchantId()).setWechatId(bindTester.getWechatId()).setUserStr(obj.getString("userstr")); return AjaxResult.success(); AjaxResult.error(obj.getInteger("errcode"),obj.getString("errmsg")); }}}/*** 解除绑定测试器* @paramtesterIds* @return*/@Overridepublic AjaxResult unbindTester(Long[] testerIds) { for (Long id : testerIds) { AppletsTester tester = appletTesterService.getById(id); == null) { logger.warn("经验 ----> 发布失败,测试人员为空"); return AjaxResult.error("发布体验,测试人员为空",null); Merchant=MerchantService.getById( tester.getMerchantId() ); if (商户== null) { logger.warn("体验者 ----> 卖家为空"); return AjaxResult.error("解锁体验者,卖家为空"); ,null); AuthorizationInfo information = AuthorizedUtils.getAuthorizationInfo(merchant.getAppid() ); JSONObject obj = MemberUtils.unbindTester(信息, 测试者.getWechatId()); if("0".equals(obj.getString("errcode")) && "ok".equalsIgnoreCase(obj.getString("errmsg"))){ appletTesterService.removeById(id);返回 AjaxResult.error(obj.getInteger("errcode"),obj.getString("errmsg")); } } return AjaxResult.success();}复制代码
12. 获取试用二维码
public AjaxResult getQrcode(StringMerchantId) { Merchant Merchant =MerchantService.getById(merchantId); if (merchant == null) { logger.warn("体验二维码-[ 获取k3失败] -- 卖家为空"); 返回 AjaxResult.error("正在获取体验二维码,卖家为空",null);information, "Page/Index/Index"); return AjaxResult.success("操作成功",qrcodeUrl);} 复制代码
13. 提交审核
public AjaxResult SubmitAudit(SubmitAudit Submit) { Merchant Merchant =MerchantService .getById(submit.getMerchantId()); if (merchant == null) { logger.warn("体验二维码 [k3 ][k3 ]--检索失败。卖家为空");返回 AjaxResult.error("正在获取体验二维码,卖家为空", null); List Category = Submit.getCategory(categorys. get(0).split("-")[0]) .setFirst_class(categorys.get(0).split("-")[1]) .setSecond_id(category.get(1).split("-")[0]) .setSecond_class(categories.get (1).split("-")[1]) .setTag(submit.getTag().replace(",", " ")); List 提交 = new ArrayList(); Submits.add(提交) ; JSONObject sa = CodeUtils.submitAudit(信息, 提交); (sa.getInteger(ResStatus.ERRCODE).equals(ResStatus.CODE) && ResStatus.MSG.equalsIgnoreCase(sa.getString(ResStatus.ERRMSG))) { JSONObject obj = CodeUtils.getAuditStatus(info, sa.getString("auditid") ) )); 如果 (obj.getInteger(ResStatus.ERRCODE).equals(ResStatus.CODE) && ResStatus.MSG.equalsIgnoreCase(obj.getString(ResStatus.ERRMSG))) { AppletsRelease ar = appletReleaseService.getOne(new LambdaQueryWrapper() .eq(AppletsRelease::getMerchantId,merchant.getId())); if (ar == nul);l) { return AjaxResult.error("请先上传您的代码"); ar.setMerchantId(submit.getMerchantId()) .setAuditId(sa.getString("auditid")) .setStatus(obj.getString("status") ) .setRemark(obj.getString("屏幕截图")); (AppletsRelease.STATUS_0.equals(ar.getStatus())) { ar.setRemark(AppletsRelease.MSG_0); } else if (AppletsRelease.STATUS_1.equals(ar.getStatus())) { ar.setReason(obj.getString( “原因”)) .setScreenshot(obj.getString("screenshot")) .setRemark(AppletsRelease.MSG_1) ; } else if (AppletsRelease.STATUS_2.equals(ar.getStatus())) { ar.setRemark(AppletsRelea)se.MSG_2); else if (AppletsRelease.STATUS_3.equals(ar.getStatus())) { ar.setRemark(AppletsRelease.MSG_3); else if (AppletsRelease.STATUS_4.equals(ar.getStatus())) { ar. setRemark(AppletsRelease.MSG_4); AppletReleaseService.updateById(ar); 返回 AjaxResult.success()。 } else { return AjaxResult.error(obj.getInteger(ResStatus.ERRCODE), obj.getString(ResStatus.ERRMSG)); else { return AjaxResult.error(sa.getInteger(ResStatus.ERRCODE), sa.getString(ResStatus.ERRMSG); ) )); }}复制代码
14. 审核提现
注意:每个账户每天最多审核提现次数不超过1次,每月不超过10次。
public AjaxResult undoCodeAudit(String[] ids) { StringBuilder sb = new StringBuilder(); for (String id : ids) { Merchant =MerchantService.getByID(id); AuthorizedUtils.getAuthorizationInfo(merchant.getAppid()); if (obj.getInteger(ResStatus.ERRCODE).equals(ResStatus.CODE) && ResStatus.MSG.equalsIgnoreCase(obj.getString(ResStatus.ERRMSG))) { AppletsRelease ar = appletReleaseService.getOne(new LambdaQueryWrapper() .eq(AppletsRelease::getMerchantId,merchant.getId())); ar.setStatus(AppletsRelease.MSG_3); appletReleaseService.updateById(ar) } else{ sb.append(merchant.getName()+","); if (sb.length() == 0) { return AjaxResult .success (); } else { 字符串名称 = sb.substring(0, sb.length()-1); 返回 AjaxResult.error(name+&quo);t;审核撤销失败"); }}复制代码
15.发布审核通过的小程序
public AjaxResult releaseApplets(String[] ids) { StringBuilder sb = new StringBuilder(); for (String id : ids) { 卖家 =MerchantService.getById(id); AuthorizedUtils.getAuthorizationInfo(merchant.getAppid()); JSONObject obj = CodeUtils.release(info); if (obj.getInteger(ResStatus.ERRCODE).equals(ResStatus.CODE) && ResStatus.MSG.equalsIgnoreCase(obj.getString(ResStatus) ) .ERRMSG))) { AppletsRelease ar = appletReleaseService.getOne(new LambdaQueryWrapper() .eq(AppletsRelease::getMerchantId,merchant.getId())); ar.setStatus(AppletsRelease.STATUS_5);chant.getName()+","); if (sb.length() == 0) { return AjaxResult.success(); } else { String name = sb.substring(0, sb.length()[k3 ] 1); return AjaxResult.error(name+"发布失败"); }} 复制代码
16. 回滚小程序版本
如果没有之前的上线版本,则无法回滚。
您只能回滚到一个版本,即当前版本。 版本回退后,您将无法再调用版本回退接口。
public AjaxResult revertCodeRelease(String[] ids) { StringBuilder sb = new StringBuilder(); for (String id : ids) { Merchant =MerchantService.getById(id); AuthorizationInfo information = AuthorizedUtils.getAuthorizationInfo(merchant.getAppid ( )); JSON对象 obj = CodeUtils.revertCodeRelease(info); if (!(obj.getInteger(ResStatus.ERRCODE).equals(ResStatus.CODE) && ResStatus.MSG.equalsIgnoreCase(obj.getString(ResStatus.ERRMSG)))) { sb.append(merchant) .getName()+","); if (sb.length() == 0) { return AjaxResult.success(); } else { 字符串名称 = sb.substring(0, sb.length()- 1 ) ; return AjaxResult.error(null,name+"审核取消失败"); 复制代码
17. 获取小程序代码。
public AjaxResult getMiniQrcode(@PathVariable("merchantId") StringMerchantId) { Merchant Merchant =MerchantService.getById(merchantId); if (merchant == null) { logger.warn("获取小程序代码-[ k3 ]- ->失败,卖家为空"); return AjaxResult.error("获取小程序代码,商户为空",null); if (StringUtils.isNotEmpty(merchant.getAppletImage())) { qrcode = trade.getAppletImage() } else { AuthorizationInfo Information = AuthorizedUtils. getAuthorizationInfo(merchant.getAppid()); 二维码 = WxUtils.getMiniQrcode(merchantId, "pages/index/index", "merchant", "miniQrcode", info.getAuthorizer_access_token());merchantservice.updateById(merchant);成功",qrcode);}复制微信码 下载应用程序
微信是一款移动通讯软件,支持通过移动网络发送语音消息、视频、照片和文本。 微信带来了全新的移动通信体验,您可以单独或群组聊天,还可以根据您的地理位置查找附近的人。 有需要的朋友,请快来保存您的下载体验吧!
这几篇文章你可能也喜欢:
- 从前端角度梳理微信支付的流程(微信支付流程开发)
- 详细解释mp、开放和付费平台之间的直接关系(mp平台是什么意思)
- 我最后整理了一下,和微信第三方平台授权了小程序业务(微信第三方授权)。
- 关于微信开放平台、第三方平台开发(微信开放平台功能)
- 从前端角度梳理微信支付的流程(从前端角度微信支付有哪些流程)
本文由主机参考刊发,转载请注明:关于微信开放平台和第三方平台开发(微信开放平台是做什么的?) https://zhujicankao.com/141384.html
评论前必须登录!
注册