基本思路:
1、扫描带参数二维码时,微信会返回二维码带的参数,和扫码的微信的信息,
2、在代码中接收参数,
3,处理业务逻辑,
基本流程;
1、在哪里接收微信返回的参数?
首先要在微信公共号的基本配置里共号的基本配置里的服务器URL,这个 URL指向的文件就是微信返回参数的地方
2、怎么接收返回的数据?
$postStr = $GLOBALS["HTTP_RAW_POST_DATA"]; //微信返回的数据 ,
如果上一种不行则换这种 $postStr = file_get_contents("php://input");
想要查看具体内容可以把它写入一个文件:
file_put_contents(dirname(__FILE__).'/ccc.txt', $postStr);
这样就可以在ccc.txt 文件里查看到下边的xml内容
具体内容如下:
<xml><ToUserName><![CDATA[gh_76693edca3e7]]></ToUserName>
<FromUserName><![CDATA[o8mVJ1ZQ7KlUhYeD2Z2sxdwuf-K4]]></FromUserName>
<CreateTime>1516207510</CreateTime>
<MsgType><![CDATA[event]]></MsgType>
<Event><![CDATA[subscribe]]></Event>
<EventKey><![CDATA[qrscene_10]]></EventKey>
<Ticket><![CDATA[gQE08TwAAAAAAAAAAS5odHRwOi8vd2VpeGluLnFxLmNvbS9xLzAyNWZUQ3NuT0JkOWwxMDAwME0wM1YAAgTPyl5aAwQAAAAA]]></Ticket>
</xml>
其中包含了扫码者的openid和参数值
openid; <FromUserName><![CDATA[o8mVJ1ZQ7KlUhYeD2Z2sxdwuf-K4]]></FromUserName>
参数值; <EventKey><![CDATA[qrscene_10]]></EventKey>
怎么取出这两个值呢?
创建解析xml的对象
$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
然后去获取想要的值
$openid = (string)$postObj->FromUserName; 值为o8mVJ1ZQ7KlUhYeD2Z2sxdwuf-K4
$parent_id = trim((string)$postObj->EventKey);值为qrscene_10
这时再用字符串拆分获取到最后的parent_id = 10
注意事项:
这里是服务返回的数据,无法把parent_id = 10 保存在session 里,可以写入数据库,进行保存