07 实例讲解微信公众号开发-二维码信息识别
2016-12-31 本文已影响779人
yanndy
二维码信息识别
二位码现在随处可见,使用手机扫码可以非常方便获取到信息,减少手工输入的麻烦,每本书上也有二维码信息(图书上大部分是条形码信息),一般在书的背面。图书的条形码信息中主要包含了图书的ISBN,ISBN的具体含义说明请自行百度,这里不多介绍。
bookisbn.png扫码消息格式
开发者文档中对扫码消息格式说明如下:
推送XML数据包示例:
<xml>
<ToUserName>
<![CDATA[gh_500c897fff56]]>
</ToUserName>
<FromUserName>
<![CDATA[ocYaSjoFCCS040XTfjQUiR2CLxw4]]
</FromUserName>
<CreateTime>1480516329</CreateTime>
<MsgType><![CDATA[event]]></MsgType>
<Event>
<![CDATA[scancode_waitmsg]]>
</Event>
<EventKey>
<![CDATA[rselfmenu_0_0]]>
</EventKey>
<ScanCodeInfo>
<ScanType>
<![CDATA[barcode]]>
</ScanType>
<ScanResult>
<![CDATA[EAN_13,9787540438845]]>
</ScanResult>
</ScanCodeInfo>
</xml>
参数说明:
参数 | 描述 |
---|---|
ToUserName | 开发者微信号 |
FromUserName | 发送方帐号(一个OpenID) |
CreateTime | 消息创建时间 (整型) |
MsgType | 消息类型,event |
Event | 事件类型,scancode_waitmsg |
EventKey | 事件KEY值,是一个32位无符号整数,即创建二维码时的二维 |
ScanCodeInfo | 二维码具体信息 |
调起微信测试号里面的扫码藏书
菜单,扫描图书背面的条形码就可以获得图书的ISBN信息,其中前面7位是条形码的类型信息EAN_13,后面几位是具体的值。
这个地方只是简单的将这个值反馈给公众号界面,后续介绍怎么通过这个isbn获取图书的具体信息。
代码如下
private function receiveEvent($object) {
$content = "";
switch ($object->Event) {
case "subscribe":
$content = "欢迎关注wxbook公众号!";
break;
case "unsubscribe":
$content = "谢谢关注wxbook公众号!";
break;
case "scancode_waitmsg":
$isbn = substr($object->ScanCodeInfo->ScanResult, 7);
/*将isbn反馈到微信公众号上*/
$content = "isbn:".$isbn;
break;
default:
$content = "receive a new event: " . $object->Event;
break;
}
$result = $this->transmitText($object, $content);
return $result;
}
显示的结果如下:
qrcode.png