Maison  >  Article  >  Applet WeChat  >  Comment créer une barre de menu personnalisée pour le compte officiel WeChat ? Voici la réponse faisant autorité

Comment créer une barre de menu personnalisée pour le compte officiel WeChat ? Voici la réponse faisant autorité

php是最好的语言
php是最好的语言original
2018-07-27 17:18:076040parcourir

Quand j'ai ouvert le compte officiel WeChat pour la première fois, j'étais curieux. En fait, je n'en savais pas grand-chose à l'époque. Après consultation et analyse, j'ai découvert que le front-end était configuré manuellement via un menu personnalisé. , et le menu n'a pas été généré via le backend. J'y réfléchirai plus tard. Il y a eu un problème lors de l'obtention des informations sur l'événement, j'ai donc réétudié les documents pertinents et les partage avec tout le monde

Dans. en fait, générer le menu est très simple, il suffit de saisir le code :

Adresse du document officiel : https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421141013

Créer plusieurs classes d'entités pour générer le json nécessaire à la création de menus :

/**
 * 微信公众号菜单 view 模式
 * 
 * @author cdj
 * @date 2018年7月26日 下午2:02:57
 */
public class ViewEntity {
	public String type;
	public String name;
	public String url;

	public ViewEntity() {
		super();
		// TODO Auto-generated constructor stub
	}

	public ViewEntity(String type, String name, String url) {
		super();
		this.type = type;
		this.name = name;
		this.url = url;
	}

	public String getType() {
		return type;
	}

	public void setType(String type) {
		this.type = type;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public String getUrl() {
		return url;
	}

	public void setUrl(String url) {
		this.url = url;
	}
}
/**
 * 微信公众号多级菜单按钮实体类
 * 
 * @author cdj
 * @date 2018年7月26日 下午2:08:40
 */
public class MenuEntity {
	public String name;
	/**下级菜单按钮 集合 */
	public List<Object> sub_button;

	public MenuEntity() {
		super();
		// TODO Auto-generated constructor stub
	}

	public MenuEntity(String name, List<Object> sub_button) {
		super();
		this.name = name;
		this.sub_button = sub_button;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public List<Object> getSub_button() {
		return sub_button;
	}

	public void setSub_button(List<Object> sub_button) {
		this.sub_button = sub_button;
	}

}

Écrire une classe d'outils pour obtenir directement json, zl

import java.util.ArrayList;
import java.util.List;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.modou.park.entity.wechat.MenuEntity;
import com.modou.park.entity.wechat.ViewEntity;

/**
 * 微信公众号获取button创建
 * @author cdj
 * @date 2018年7月26日 下午2:22:02
 */
public class WxCreateButtonUtils {

	/**
	 * 获得微信公众号菜单
	 * @return
	 */
	public static String getWxCreateButtonJson() {
		JSONObject jsonObject = new JSONObject();
		List<Object> lobjs = new ArrayList<>();
		List<Object> firstvl = new ArrayList<>();
		ViewEntity infoEntity = new ViewEntity("view", "个人信息", "http://www.xxx.com/xxxxxxxxx.html");//写自己的要跳转的url
		firstvl.add(infoEntity);
		MenuEntity thirdEntity = new MenuEntity("我的",firstvl);
		lobjs.add(thirdEntity);
		jsonObject.put("button", lobjs);
		System.out.println(jsonObject);
		return JSON.toJSONString(jsonObject);
	}
}

Contrôleur :

	@ApiOperation("微信公众号创建菜单")
	@ApiImplicitParams({
	})
	@PostMapping("/WxCreateButton")
	public JsonResult wxCreateButton() {
		try {
			wxInfoService.createButton();
			return JsonResult.success("创建成功");
		} catch (Exception e) {
			// TODO: handle exception
			LOG.error(e.getMessage());
			return JsonResult.failMsg(e.getMessage());
		}
	}

service :

	@Override
	public void createButton() {
	    //String accessToken = wxPublicAccessTokenUtils.getAccessToken();
		//String createButton_Url = UserInfoUtil.getCreateButton_Url(accessToken);
		String weixin_jssdk_acceToken_url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=%s&secret=%s";
		String jssdkAcceTokenUrl = String.format(weixin_jssdk_acceToken_url, WxPublicProperties.APPID, WxPublicProperties.APPSCREAT);
		String accesstoken = HttpsUtil.httpsRequestToString(jssdkAcceTokenUrl, "GET", null);
		WxToken accToken = JSONObject.parseObject(accesstoken, WxToken.class);
		String accessToken = accToken.getAccessToken();
		String createurl = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=%s";
		String createButton_Url = String.format(createurl, accessToken);
		String buttonJson = WxCreateButtonUtils.getWxCreateButtonJson();
		String httpsRequestToString = HttpsUtil.httpsRequestToString(createButton_Url, "POST", buttonJson);
		System.out.println(httpsRequestToString);
	}

Commentaires réussis : {"errcode":0,"errmsg":"ok"}apache php mysql

json Il existe de nombreux types de types, tels que click (peut être lié à l'événement click), miniprogramme (petit programme : des paramètres (appid, chemin de page, url, etc.) sont requis. Différents paramètres de contenu ont des paramètres différents et ont des effets différents. Vous pouvez lire le correspondant documents pour en savoir plus.

Il y aura de nombreux petits bugs lors des tests. Vous pouvez utiliser les codes d'erreur Baidu. Il existe de nombreuses réponses en ligne ;

Résumé : Il n'est pas difficile de créer un nouveau menu, mais vous devez l'être. soyez prudent et le format du contenu doit être correct, la clé de json ne doit pas être fausse et il ne doit y avoir aucun paramètre qui ne puisse être inclus. Ne me demandez pas comment je le sais.

Articles connexes :

La plate-forme publique WeChat développe des codes QR et crée des menus

php implémente la classe de menu personnalisée du compte de la plate-forme publique WeChat, Public compte

Vidéos associées :

Menu personnalisé (1) -Tutoriel vidéo de développement de plateforme publique PHP WeChat

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn