微信二次开发自定义菜单

微信二次开发,其实就是在微信上面建设自己需要的一些板块,而这些板块是原先并没有的,也就是微信二次开发。例如大转盘、刮刮乐等这些功能也属于二次开发,去年绿萝微信就说过,微信二次开发是微信营销的营销神器,通过开发一些互动功能,促进客户的粘度,跟客户一对一的交流了解客户最真实的需求。

微信公众平台是运营者通过公众号为微信用户提供资讯和服务的平台,而公众平台开发接口则是提供服务的基础,开发者在公众平台网站中创建公众号、获取接口权限后,可以通过阅读本接口文档来帮助开发。

为了识别用户,每个用户针对每个公众号会产生一个安全的OpenID,如果需要在多公众号、移动应用之间做用户共通,则需前往微信开放平台,将这些公众号和应用绑定到一个开放平台账号下,绑定后,一个用户虽然对多个公众号和应用有多个不同的OpenID,但他对所有这些同一开放平台账号下的公众号和应用,只有一个UnionID,可以在用户管理-获取用户基本信息(UnionID机制)文档了解详情。

<?php  
namespace Home\Controller;
use Think\Controller;
use LaneWeChat\Core\Menu;
class MenuController extends Controller {

	private $mp;

	public function _initialize(){
		$mp = getCurrentMp();
		if(empty($mp)){
			$this->error('无使用的公众号',U('mp/index'));
		}else{
			$this->mp = $mp;
		}

	}


	public function index(){
		$mp = $this->mp;
		$data = M('mp_menu')->where("mp_id={$mp['id']}")->order('id')->select();

		// dump($data);
		// exit;
		$data2 = $data;
		foreach ($data as $k => $v) {
			foreach ($data2 as $k2 => $v2) {
				if($v['index'] == $v2['pindex']){
					$data[$k]['sub'][] = $v2;
					unset($data[$k2]);
				}
			}
		}
		// print_r($data );
		// exit;
		$this->assign('mpInfo',$mp);
		$this->assign('list',$data);
		$this->display();
	}

	public function access_token(){
		var_dump(getAccess_token());
	}
	public function menuedit(){
		$mp = $this->mp;
		$data1 = I('post.data');
		// $data2 = $data1;
		// foreach ($data1 as $key1 => $value1) {
		// 	foreach ($data2 as $key2 => $value2) {
		// 		if($value1['index']== $value2['pindex']){
		// 			$data1[$key1]['type']='';
		// 			$data2[$key2]['content']='';

		// 			break;
		// 		}
		// 	}
			// unset($data1[$key1]['sort']);

		// 	if($value1['type']=='event'){
		// 		$data1[$key1]['type']=$value1['content'];
		// 		$data1[$key1]['content'] = 'K_'.rand(100,999);
		// 	}
		// }

		foreach ($data1 as &$value) {
			$value['mp_id'] = $mp['id'];
		}
		$model = M('mp_menu');
		$model->where("mp_id={$mp['id']}")->delete();
		$model->addAll($data1);

		include_once APP_PATH . 'LaneWeChat/lanewechat.php';
		$ret = Menu::setMenu($data1);
		file_put_contents('menu.txt', $ret);

		if($ret === true){
			$this->ajaxReturn(array('msg'=>'创建菜单成功'));
		}else{
			$this->ajaxReturn(array('msg'=>$ret));
		}
	}

	//同步菜单
	public function downmenu(){
		$mp = $this->mp;
		$mp_id = $mp['id'];

		include APP_PATH . 'LaneWeChat/lanewechat.php';
		$menu = Menu::getMenu($data1);

		$menu = $menu['menu']['button'];

		$arr = array();
		$index = 1;
		foreach ($menu as $key => &$value) {
			$value['mp_id']= $mp_id;
			$value['index'] = $index;
			$value['pindex'] = 0;
			$value['sort'] = $index;
			
			if(!empty($value['sub_button'])){
				$value['type'] = '';//设置一级菜单,默认值
				$value['content'] = '';//设置一级菜单,默认值

				$sub_menu = $value['sub_button']; //把二级菜单入到变量$sub_menu
				unset($value['sub_button']);
				$arr[] = $value;

				$subindex = 1;
				foreach ($sub_menu as $subkey=>&$subvalue) {
					$subvalue['mp_id'] = $mp_id;
					$subvalue['index'] = $index . $subindex;
					$subvalue['pindex'] = $index;
					$subvalue['sort'] = $subindex;

					if($subvalue['type']== 'click'){
						$subvalue['content'] = $subvalue['key'];
						unset($subvalue['key']);
					}else if($subvalue['type']=='view'){
						$subvalue['content'] = $subvalue['url'];
						unset($subvalue['url']);
					}else {
						 
						 $subvalue['content'] = $subvalue['type'];
						 $subvalue['type'] = 'event';
						 unset($subvalue['key']);
					}

					unset($subvalue['sub_button']);
					$arr[] = $subvalue;

					$subindex++;
				}
				
			}else{
				if($value['type']== 'click'){
					$value['content'] = $value['key'];
					unset($value['key']);
				}else if($value['type']=='view'){
					$value['content'] = $value['url'];
					unset($value['url']);
				}else {
					 
					 $value['content'] = $value['type'];
					 $value['type'] = 'event';
					 unset($value['key']);
				}

				unset($value['sub_button']);
				$arr[] = $value;
			}
			$index++;
		}
		$model = M('mp_menu');
		$model->where("mp_id={$mp['id']}")->delete();
		foreach ($arr as $key => $value) {
			$model->add($value);	
		}
		$this->redirect('index');
		
	}

	//删除
	public function delmenu(){
		$mp = $this->mp;

		include_once APP_PATH . 'LaneWeChat/lanewechat.php';
		$ret = Menu::delMenu($data1);

		$model = M('mp_menu');
		$model->where("mp_id={$mp['id']}")->delete();
		$this->redirect('index');
	}
}

获取access——token

<?php
// 获取正在使用的公众号
function getCurrentmp(){
	$mp = M('mp')->where("is_use=1")->find();
	return $mp;
}
// 获取正在使用的公众号的access_token
function getAccess_token(){
	$mp = M('mp')->where("is_use=1")->find();
	if(empty($mp)) return false;
	$id = $mp['id'];
	if(empty($mp['access_token']) || $mp['expire_time']<time()){
		$appid = $mp['appid'];
		$appsecret = $mp['appsecret'];
		$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" . $appid . "&secret=" . $appsecret;
		include APP_PATH . 'LaneWeChat/lanewechat.php';
		$arr = LaneWeChat\Core\Curl::callWebServer($url,'','GET');
		if(isset($arr['access_token'])){
			$data['access_token'] = $arr['access_token'];
			$data['expire_time'] = $arr['expires_in'] + time() - 200;
			M('mp')->where("id = $id")->save($data);
			return $mp['access_token'];
		}else{
			return false;
		}
	}else{
		return $mp['access_token'];
	}
}

?>


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值