<?php

namespace App\Http\Controllers\Wechat\ThirdWx;

use App\Http\Controllers\WechatController;
use App\Http\Requests;
use Illuminate\Http\Request;
use Illuminate\Http\Response;
use EasyWeChat\Foundation\Application;
use WechatOP;
use Cookie;

/**
 * 维护第三方平台的基础配置
 * @author zhoulingjie
 *
 */
class MsgsController extends WechatController
{
    
    /**
     * 接收微信的第三方平台信息推送
     * grep -nr component_verify_ticket storage/*
     * @param Request $request
     */
    function receive_component_verify_ticket(Request $request){
    	v('receive_tickt_start');
    	v($request->all());
    	$server = WechatOP::server();

    	v('start_setmessage');
        if(env('DEVELOP_MODE') == 'local'){
     		v('local_test');
     		$message = $this->get_fake_data();
     		$res = $this->deal_callback($message);
     	}else{
     		v('online_test');
    		$server->setMessageHandler(function($message) {
     			$res = $this->deal_callback($message);
     		});
     	}
    	
 		v('receive_tickt_end');
 		return $server->serve();
    }
    
    function deal_callback($message){
    	v('thirdwx_deal_callback');v($message);
    	v('InfoType:'.$message->get('InfoType'));
    	switch ($message->get('InfoType')) {
    		case "component_verify_ticket":
    			v('save_ticket:'.$message->get('ComponentVerifyTicket'));
    			// 保存开放平台 ticket
    			$save_ticket_res = app('wechat_op')->saveTicket($message->get('ComponentVerifyTicket'));
    			v('save_ticket_res');v($save_ticket_res);
    			break;
    		case "unauthorized":
    			// 公众号取消授权记录
    			$appid = $message->get('AuthorizerAppid');
    			v('gzh_unauthorized:'.$appid);
    			parent::__construct($appid);
    			$this->WechatApi->cancel_oauth_official_account($appid);
    			break;
    		case "authorized":
    			// 公众号授权
    			v('gzh_authorized');
    			break;
    		default:
    			break;
    	}
    }
    
//     {"\u0000*\u0000items":{
//     	"AppId":"wx46d3ea76723d890c","CreateTime":"1506602969","InfoType":"component_verify_ticket","ComponentVerifyTicket":"ticket@@@MX6T2u23fgQ6BWYyU5dteplNwP_Nu-HEjoVhzmjSIKeTNu8dTVUfdCjdJqVGX4uF5ODSJKJMRqH1blDFUYgpSw"}
//     }
    function get_fake_data(){
    	$message = new \stdClass();
    	$test = 'ticket';
    	if($test == 'ticket'){
    		$message->InfoType = 'EVENT_UNAUTHORIZED';
    		$message->AuthorizationCode = '200';
    	}
    	 
    	return $message;
    }

}