微信开发学习记录 01

  最近几天做了一下微信开发,总结了一些经验和教训。

  首先是微信token链接,最开始连接的时候总是出现token连接失败,总以为是设置的不对,结果第二天就好了。而且发现,如果上传的代码(我用的是新浪云)有错误的话,可能会连不上(不知道对不对,我只是根据连接的经历总结的)

  其次呢,就说一下编程时遇到的一些困难。最开始一两天的时候,总是觉得在网站上没有办法调试,根本不知道哪里会出错。后来发现其实是可以调试的,只是没有办法像编译器一样进行断点调试。但是一些语法问题还是可以发现的。

微信开发学习记录 01

点击画篮圈的链接,可以大致的发现一些语法问题或者一些调用函数的错误,同时一些错误它会给出错误代码。通过查询http://mp.weixin.qq.com/wiki/17/fa4e1434e57290788bde25603fa2fcbd.html可以大致知道问题的原因,当然了,因为没有断点,所以一些问题不会精确到哪一行或者那一部分,只能通过自己的经验和其他的方法去判断(我用的是注释的办法)。

  下面我贴出一些代码吧

第一个:获取access_token:

$appid = "wxab732ce4074ec712";
$appsecret = "**********************";//上面两个每个微信号都不一样,这个可以在微信公众号平台上找到
$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$appid&secret=$appsecret";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); 
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE); 
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($ch);
curl_close($ch);
$jsoninfo = json_decode($output, true);
$access_token = $jsoninfo["access_token"]

  

第二个 :创建自定义菜单:

$jsonmenu=‘
{
	"button":
	[
    	{
			"name":"查询空车位",
            "type":"click",
            "key":"123" 
		},
		
         {
			"name":"预定",
            "type":"click",
            "key":"456"  
		},
		{
			"name":"停车",
            "type":"click",
            "url":"789"  
		}
      
		
	]
}‘;
$url="https://api.weixin.qq.com/cgi-bin/menu/create?access_token=".$access_token;
$result=https_request($url,$jsonmenu);
var_dump($result);
function https_request($url,$data=null)
{
    $curl=curl_init();
    curl_setopt($curl,CURLOPT_URL ,$url);
    curl_setopt($curl,CURLOPT_SSL_VERIFYPEER,FALSE);
    curl_setopt($curl,CURLOPT_SSL_VERIFYHOST,FALSE);
    if(!empty($data))
    {
        curl_setopt($curl,CURLOPT_POST,1);
        curl_setopt($curl,CURLOPT_POSTFIELDS,$data);
    }
    curl_setopt($curl,CURLOPT_RETURNTRANSFER,1);
    $output=curl_exec($curl);
    curl_close($curl);
    return $output;
}

  在创建自定义菜单时,因为打算一个一个的做,先给菜单命名,没有写type和key,结果爆出了40017的错误。

第三个:按钮click自动回复:

 public function responseMsg()
    {
        $postStr = $GLOBALS["HTTP_RAW_POST_DATA"];

        if (!empty($postStr))
        {
            $postObj = simplexml_load_string($postStr, ‘SimpleXMLElement‘, LIBXML_NOCDATA);
            $fromUsername = $postObj->FromUserName;//获取用户openid
            $toUsername = $postObj->ToUserName;//
            $keyword = trim($postObj->Content);
            $key=$postObj->EventKey;//获取key的值,即上面自定义按钮中定义的值
            $time = time();
            $textTpl = "<xml>
                        <ToUserName><![CDATA[%s]]></ToUserName>
                        <FromUserName><![CDATA[%s]]></FromUserName>
                        <CreateTime>%s</CreateTime>
                        <MsgType><![CDATA[%s]]></MsgType>
                        <Content><![CDATA[%s]]></Content>
                        <FuncFlag>0</FuncFlag>
                        </xml>";
           
             else if($key=="456")
            {
                /***********代码事件*********/
                $resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);//回复¥contentStr
				echo $resultStr;
            }
        }
        else
        {
            echo "";
            exit;
        }
        
    }

  目前做的只有这些,以后还会继续发,希望能帮助一些才接触的人,同时也希望大牛们能给一些建议。

微信开发学习记录 01

上一篇:nodejs 中koa框架下的微信公众号开发初始篇


下一篇:Spring旅程(三) AOP--Spring AOP容器基础