首页 > 开发 > PHP > 正文

使用PHP进行微信公众平台开发的示例

2024-05-04 22:35:05
字体:
来源:转载
供稿:网友

1. SAE 数据库的连接。

需要主机名和端口,以后的使用是一样的。

@ $db = new mysqli(SAE_MYSQL_HOST_M.':'.SAE_MYSQL_PORT,SAE_MYSQL_USER,SAE_MYSQL_PASS,'你的应用名'); 

2.XML 的处理。

微信发送的消息格式都是 XML 格式,你返回的消息也必须是 XML 格式。从 XML 里提取数据,用 SimpleXML,强大又容易使用。包装成 XML 消息呢?把消息模板保存为字符串,然后用 sprintf 进行格式化输出。

解析微信服务器 POST 的数据:

//---------- 接 收 数 据 ---------- //  $postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; //获取POST数据  //用SimpleXML解析POST过来的XML数据 $postObj = simplexml_load_string($postStr,'SimpleXMLElement',LIBXML_NOCDATA);  $fromUsername = $postObj->FromUserName; //获取发送方帐号(OpenID) $toUsername = $postObj->ToUserName; //获取接收方账号 $msgType = $postObj->MsgType; //消息内容 

返回文本消息:

function sendText($to, $from, $content, $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>";    //格式化消息模板   $msgType = "text";   $time = time();   $resultStr = sprintf($textTpl,$to,$from,   $time,$msgType,$content);   echo $resultStr; } 

3. API 接口的调用。

网上有很多 API 接口,如百度翻译,有道翻译,天气预报等,对接口的调用可以直接用 file_get_contents ,也可以用 curl 的方式进行抓取,然后根据返回数据的格式进行数据解析,一般都是 xml 格式或者 json 格式,处理时用 SimpleXML 和 json_decode 是很方便的。对于抓取 API 内容,用重新封装的函数:

function my_get_file_contents($url){    if(function_exists('file_get_contents')){      $file_contents = file_get_contents($url);    }   else   {         //初始化一个cURL对象     $ch = curl_init();      $timeout = 5;      //设置需要抓取的URL     curl_setopt ($ch, CURLOPT_URL, $url);      //设置cURL 参数,要求结果保存到字符串中还是输出到屏幕上     curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);      //在发起连接前等待的时间,如果设置为0,则无限等待     curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, $timeout);      //运行cURL,请求网页     $file_contents = curl_exec($ch);      //关闭URL请求     curl_close($ch);   }    return $file_contents; } 百度翻译 API 的调用如下:function baiduDic($word,$from="auto",$to="auto"){        //首先对要翻译的文字进行 urlencode 处理   $word_code=urlencode($word);        //注册的API Key   $appid="yourAPIkey";        //生成翻译API的URL GET地址   $baidu_url = "http://openapi.baidu.com/public/2.0/bmt/translate?client_id=".$appid."&q=".$word_code."&from=".$from."&to=".$to;        $text=json_decode(my_get_file_contents($baidu_url));    $text = $text->trans_result;    return $text[0]->dst; }             
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表