文档章节

在Controller中调用YMP-WeChat模块微信API方法代码实例

有理想的鱼
 有理想的鱼
发布于 2014/03/21 00:04
字数 516
阅读 968
收藏 2
@Controller
public class OAuthController {

	@RequestMapping("/oauth/base")
	public IView oauth_base() throws Exception {
		String _url = WeChat.wxOAuthGetCodeURL(false, "state_str");
		Logs.debug(_url);
		return new RedirectView(_url);
	}

	@RequestMapping("/oauth/info")
	public IView oauth_info() throws Exception {
		String _url = WeChat.wxOAuthGetCodeURL(true, "state_str");
		Logs.debug(_url);
		return new RedirectView(_url);
	}

	@RequestMapping("/oauth/redirect")
	public IView redirect(@RequestParam(required = false) String code, @RequestParam(required = false) String state) throws Exception {
		JSONObject _return = new JSONObject();
		_return.put("code", code);
		_return.put("state", state);
		if (code != null) {
			WxOAuthToken _token = WeChat.wxOAuthGetToken(code);
			_return.put("oauth_token", _token);
			WxOAuthUser _info = WeChat.wxOAuthUserGetInfo(_token.getAccessToken(), _token.getOpenId(), null);
			_return.put("user_info", JSON.toJSON(_info));
		}
		return new JsonView(_return);
	}

	@RequestMapping("/menu/create")
	public IView createMenu() throws Exception {
		WxMenu _menu = WxMenu.create()
				.addItem(WxMenuItem.create().setName("消息测试")
						.addItem(WxMenuItem.create()
								.setName("文本消息")
								.setType(WX_MESSAGE.EVENT_CLICK)
								.setKey("TEST_MSG_TEXT"))
						.addItem(WxMenuItem.create()
								.setName("图片消息")
								.setType(WX_MESSAGE.EVENT_CLICK)
								.setKey("TEST_MSG_IMAGE"))
						.addItem(WxMenuItem.create()
								.setName("语音消息")
								.setType(WX_MESSAGE.EVENT_CLICK)
								.setKey("TEST_MSG_VOICE"))
						.addItem(WxMenuItem.create()
								.setName("视频消息")
								.setType(WX_MESSAGE.EVENT_CLICK)
								.setKey("TEST_MSG_VIDEO")))
				.addItem(WxMenuItem.create().setName("更多消息")
						.addItem(WxMenuItem.create()
								.setName("音乐消息")
								.setType(WX_MESSAGE.EVENT_CLICK)
								.setKey("TEST_MSG_MUSIC"))
						.addItem(WxMenuItem.create()
								.setName("图文消息")
								.setType(WX_MESSAGE.EVENT_CLICK)
								.setKey("TEST_MSG_NEWS")))
				.addItem(WxMenuItem.create().setName("接口测试")
						.addItem(WxMenuItem.create()
								.setName("用户基本信息")
								.setType(WX_MESSAGE.EVENT_CLICK)
								.setKey("TEST_API_USERINFO"))
						.addItem(WxMenuItem.create()
								.setName("网页授权1")
								.setType(WX_MESSAGE.EVENT_VIEW)
								.setUrl("http://localhost/web/oauth/base"))
						.addItem(WxMenuItem.create()
								.setName("网页授权2")
								.setType(WX_MESSAGE.EVENT_VIEW)
								.setUrl("http://localhost/web/oauth/info"))
						.addItem(WxMenuItem.create()
								.setName("WeixinJS")
								.setType(WX_MESSAGE.EVENT_VIEW)
								.setUrl("http://localhost/web/wxjs"))
						.addItem(WxMenuItem.create()
								.setName("关于")
								.setType(WX_MESSAGE.EVENT_VIEW)
								.setUrl("http://localhost/web/aboutus")));
		//
		Logs.debug("Create New Menu: " + WeChat.wxMenuCreate(_menu));
		return new JsonView(_menu);
	}

	@RequestMapping("/menu/delete")
	public IView deleteMenu() throws Exception {
		Logs.debug("Delete Menu: " + WeChat.wxMenuDelete());
		return new TextView("Delete Success");
	}

	@RequestMapping("/menu/get")
	public IView getMenu() throws Exception {
		WxMenu _menu = WeChat.wxMenuGet();
		return new JsonView(JSON.toJSON(_menu));
	}

	@RequestMapping("/group/get")
	public IView getGroups() throws Exception {
		return new JsonView(WeChat.wxGroupGetList());
	}

	@RequestMapping("/user/get")
	public IView getUser(@RequestParam(required = false) String uid) throws Exception {
		List<WxUser> _results = new ArrayList<WxUser>();
		if (StringUtils.isBlank(uid)) {
			WxFollwersResult _list = WeChat.wxUserGetList("");
			for (String _openId : _list.getOpenIds()) {
				WxUser _u = WeChat.wxUserGetInfo(_openId, null);
				if (_u != null) {
					_results.add(_u);
				}
			}
		} else {
			WxUser _u = WeChat.wxUserGetInfo(uid, null);
			if (_u != null) {
				_results.add(_u);
			}
		}
		return new JsonView(_results);
	}

	@RequestMapping("/message/all")
	public IView sendToAll(@RequestParam String message) throws Exception {
		WxFollwersResult _list = WeChat.wxUserGetList("");
		for (String _openId : _list.getOpenIds()) {
			TextOutMessage _msg = new TextOutMessage(_openId);
			_msg.setContent(message);
			WeChat.wxMessageSendCustom(_msg);
		}
		return new JsonView(_list);
	}

	@RequestMapping("/message/to")
	public IView sendTo(@RequestParam String to, @RequestParam String message) throws Exception {
		TextOutMessage _msg = new TextOutMessage(to);
		_msg.setContent(message);
		return new TextView(WeChat.wxMessageSendCustom(_msg));
	}

	@RequestMapping("/qrcode/create")
	public IView qrcodeCreate(@RequestParam int scene) throws Exception {
		return new JsonView(WeChat.wxQRCodeCreate(scene, 1800));
	}

	@RequestMapping("/qrcode/show")
	public IView qrcodeShow(@RequestParam String ticket) throws Exception {
		return new RedirectView(WeChat.wxQRCodeShowURL(ticket));
	}

	@RequestMapping("/aboutus")
	public IView aboutus() {
		return new JspView("aboutus.jsp");
	}

}



© 著作权归作者所有

共有 人打赏支持
有理想的鱼

有理想的鱼

粉丝 38
博文 10
码字总数 43696
作品 13
沈阳
高级程序员
私信 提问
Scala实战-通过微信聊天窗口实现应答式点餐 1:连接微信API

当前代码tag: v0.0.1,https://github.com/yangbajing/wechat-meal/tree/v0.0.1 微信公众号提供了详尽的API文档说明,提供了明文和加密两种接入方式。这里,我们选择加密的接入方式微信公众号...

羊八井
2015/08/18
0
0
node-wechat 微信实践

node-wechat 从去年开始微信开发越来越火了,体现在sdk和h5上(h5如果大家想听,可以回复),这里就简单介绍一下sdk开发 既然是noder,那肯定要用nodejs写,不然会被鄙视的。 node-webot简介...

i5ting
2015/07/10
0
3
微信开放平台服务接入模块--YMP-WeChat

基于YMP框架实现的微信开放平台服务接入模块,有关YMP框架内容点这里。 目前已完成除支付以外的全部接口封装。 2014-03-20 [更新] 优化接口方法,规避了手动获取AccessToken和JSONObject返回...

有理想的鱼
2014/03/19
4.2K
3
【微信公众平台开发】之一:入门与BAE3.0下操作

0、资料 * 官方文档(http://mp.weixin.qq.com/wiki/home/index.html) *《微信公众平台搭建与开发揭秘》 * 玩转微信公众平台(http://blog.csdn.net/column/details/weixin-start530.html)...

realsa
2014/09/17
0
2
关于IAccountDataProvider的默认实现

1、问题:DefaultAccountDataProvider中 if (_accessToken == null || (_currentTime >= _accessToken.getLong("expires_time"))) { _accessToken = WeChat.__doCheckJsonResult(HttpClient......

南平狼
2014/04/17
178
1

没有更多内容

加载失败,请刷新页面

加载更多

jquery通过id显示隐藏

var $div3 = $('#div3'); 显示 $div3.show(); 隐藏 $div3.hide();

yan_liu
今天
3
0
《乱世佳人》读书笔记及相关感悟3900字

《乱世佳人》读书笔记及相关感悟3900字: 之前一直听「荔枝」,后来不知怎的转向了「喜马拉雅」,一听就是三年。上班的时候听房产,买房了以后听装修,兴之所至时听旅行,分手后听亲密关系,...

原创小博客
今天
3
0
大数据教程(9.6)map端join实现

上一篇文章讲了mapreduce配合实现join,本节博主将讲述在map端的join实现; 一、需求 实现两个“表”的join操作,其中一个表数据量小,一个表很大,这种场景在实际中非常常见,比如“订单日志...

em_aaron
今天
3
0
cookie与session详解

session与cookie是什么? session与cookie属于一种会话控制技术.常用在身份识别,登录验证,数据传输等.举个例子,就像我们去超市买东西结账的时候,我们要拿出我们的会员卡才会获取优惠.这时...

士兵7
今天
3
0
十万个为什么之为什么大家都说dubbo

Dubbo是什么? 使用背景 dubbo为什么这么流行, 为什么大家都这么喜欢用dubbo; 通过了解分布式开发了解到, 为适应访问量暴增,业务拆分后, 子应用部署在多台服务器上,而多台服务器通过可以通过d...

尾生
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部