i漂泊

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 4182|回复: 0

微信公众平台开发人员POSTXML助手[php版]

[复制链接]
TA的礼物信息
  • 收到:0
  • 送出:2
发表于 2013-7-15 10:07:54 | 显示全部楼层 |阅读模式
估计网上搜索有微信开发不返回信息的,各种问题出现,但是是服务端模拟的,没法测试,今天我就写了一个类,专门测试微信开发中遇到的问题,这个类使用简单,并且能够模拟提交,返回模拟的微信服务器返回的信息!这样开发起来就很简单明了了!需要的可以拿走!
  1. <?php
  2. /*
  3. *@author widuu
  4. *@time 2013-7-4
  5. *@模拟提交测试微信数据
  6. */
  7. class WinXinPost{
  8.     private $event = "";
  9.     private $content = "";
  10.     private $time;
  11.    
  12.     /*
  13.      *使用严格遵守微信公众平台参数配置http://mp.weixin.qq.com/wiki/index.php?title=消息接口指南
  14.      *如果是text或者image类型就直接输入$content
  15.      *其他的就输入array 譬如地理位置输入
  16.      *<Location_X>23.134521</Location_X>
  17.      *<Location_Y>113.358803</Location_Y>
  18.      *   <Scale>20</Scale>
  19.      * <Label><![CDATA[位置信息]]></Label>
  20.      * array('1.29290','12.0998','20','位置信息');
  21.      *
  22.      */
  23.     public function __construct($event,$url,$content){
  24.         $this-> event = $event;
  25.         $this-> url = $url;
  26.         $this-> content = $content;
  27.         $this-> time = time();
  28.     }

  29.     //返回接收的消息
  30.     public function result(){
  31.         $postObj = simplexml_load_string($this->post(), 'SimpleXMLElement', LIBXML_NOCDATA);
  32.         foreach ((array)$postObj as $key => $value) {
  33.                 $str.=$key.'=>'.$value."<br>";
  34.         }
  35.         return $str;

  36.     }

  37.     //处理成xml数据
  38.     private  function xml_data(){
  39.         $str = "
  40.             <xml>
  41.                  <ToUserName>100012</ToUserName>
  42.                  <FromUserName>100012</FromUserName>
  43.                  <CreateTime>{$this->time}</CreateTime>
  44.                  <MsgType>{$this->event}</MsgType>
  45.                  {$this->judgment()}
  46.                  <MsgId>1234567890123456</MsgId>
  47.             </xml>
  48.          ";
  49.          return $str;
  50.     }

  51.     //模拟post提交
  52.     private function post(){
  53.         $header[] = "Content-type: text/xml";//定义content-type为xml
  54.         $ch = curl_init(); //初始化curl
  55.         curl_setopt($ch, CURLOPT_URL, $this->url);//设置链接
  56.         curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//设置是否返回信息
  57.         curl_setopt($ch, CURLOPT_HTTPHEADER, $header);//设置HTTP头
  58.         curl_setopt($ch, CURLOPT_POST, 1);//设置为POST方式
  59.         curl_setopt($ch, CURLOPT_POSTFIELDS, $this->xml_data());//POST数据
  60.         $response = curl_exec($ch);//接收返回信息
  61.         if(curl_errno($ch)){//出错则显示错误信息
  62.              print curl_error($ch);
  63.         }
  64.          curl_close($ch); //关闭curl链接
  65.          return $response;
  66.      }

  67.     //文本消息
  68.     private function text(){
  69.         return  "<Content>{$this->content}</Content>";
  70.     }

  71.     //图形消息
  72.     private function image(){
  73.         return "<PicUrl>{$this->content}</PicUrl>";
  74.     }

  75.     //链接消息
  76.     private function link(){
  77.         $data = $this->content;
  78.         $str = "
  79.             <Title>{$data[0]}</Title>
  80.             <Description>{$data[1]}</Description>
  81.             <Url>{$data[2]}</Url>
  82.         ";
  83.         return $str;
  84.     }

  85.     //地理位置消息
  86.     private function location(){
  87.         $data = $this->content;
  88.         $str = "
  89.             <Location_X>{$data[0]}</Location_X>
  90.             <Location_Y>{$data[1]}</Location_Y>
  91.             <Scale>20</Scale>
  92.             <Label>{$data[3]}</Label>";
  93.          return $str;
  94.     }
  95.    
  96.     //根据消息类型加载相应的东西
  97.     private function judgment(){
  98.         $type = $this->event;
  99.         return $this->$type();
  100.     }

  101. }

  102. $a = new WinXinPost("text","http://www.lingphp.com/wx_sample.php",11111);
  103. echo $a->result();
复制代码
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|手机版|IPiaoBo Inc. ( 渝ICP备17002826号 )

GMT+8, 2024-5-2 17:39 , Processed in 0.086333 second(s), 47 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表