之前公司帮某企业做了一个微信公众平台,并绑定了一个公众号,常规思路我们认为一个订阅号绑定一个微信系统,有且只能绑定一个,后来再一次活动中,我发现了一个问题,就是另一家公司的一个照片打印机系统也接入了该企业的微信公众号,但是我们系统的功能几乎不受影响,两个系统互不搭嘎。这就让我很是奇怪,查看微信公众号后台(https://mp.weixin.qq.com/)看了一下,原来服务器配置被改成了他们的路径,但是Token却和我们是共用的一个,我觉得这肯定是他那边兼容了我们这里的系统,后来了解了一下微信的传值机制,尝试了一下
if(!($data['MsgType'] == 'text')){
list($content, $type) = $this -> reply($data);
$wechat -> response($content, $type);
}
else{
$xml = $wechat->request_xml();
$data_xml = $wechat->curl_post("http://example。com/".$this->token,$xml);
exit($data_xml);
}
function curl_post($remote_server,$post_string){
$header[] = "Content-type: text/xml";//定义content-type为xml
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$remote_server);
curl_setopt($ch,CURLOPT_POSTFIELDS,$post_string);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch,CURLOPT_USERAGENT,"Jimmy's CURL Example beta");
$data = curl_exec($ch);
curl_close($ch);
return $data;
}
也就是说,如果在本程序中想处理某些数据,则满足if中的条件即可,如果不满足,则POST请求其他系统,一次类推,一个微信号可以有无数个系统的支持,但必须有一个主系统。
function __construct($token){
$this->oauth($token) || exit;
if(!IS_POST()){
echo($_REQUEST['echostr']);exit;
}
else{
$xml = file_get_contents("php://input");
$this->post_xml = $xml;
$xml = new SimpleXMLElement($xml);
$xml || exit;
foreach ($xml as $key=>$value){
$this->data[$key] = strval($value);
}
}
}