365体育备用网址报道5.3.2扫描快码条码查询进度_365体育备用网址官网资讯

使用“扫码推事情”菜单,能够获得扫描结果,再通过第三方快递查询接口,能够实现扫描快递条码查询快递进度的功能。
微信类中创建菜单的函数如下所示。

 1 //创建菜单
 2 public function create_menu($button, $matchrule = NULL)
 3 {
 4     foreach ($button as &$item) {
 5         foreach ($item as $k => $v) {
 6             if (is_array($v)){
 7                 foreach ($item[$k] as &$subitem) {
 8                     foreach ($subitem as $k2 => $v2) {
 9                         $subitem[$k2] = urlencode($v2);
10                     }
11                 }
12             }else{
13                 $item[$k] = urlencode($v);
14             }
15         }
16     }
17 
18     if (isset($matchrule) && !is_null($matchrule)){
19         foreach ($matchrule as $k => $v) {
20             $matchrule[$k] = urlencode($v);
21         }
22         $data = urldecode(json_encode(array('button' => $button, 'matchrule' => $matchrule)));
23         $url = "https://api.weixin.qq.com/cgi-bin/menu/addconditional?access_token=".$this->access_token;
24     }else{
25         $data = urldecode(json_encode(array('button' => $button)));
26         $url = "https://api.weixin.qq.com/cgi-bin/menu/create?access_token=".$this->access_token;
27     }
28     $res = $this->http_request($url, $data);
29     return json_decode($res, true);
30 }

上述代码解读如下:
第4行~第16行:将菜单数组中的中文值进行urlencode,这是为了后面将数组转为json时不导致乱码。
第18行:推断是否有个性化菜单规则。
第19行~第23行:构建个性化菜单数据并将url接口定为个性化菜单接口。
第25行~第26行:构建自定义菜单数据并将url接口定为自定义菜单接口。
第28行~第29行:提交创建菜单要求并返回结果。
创建菜单的代码如下所示。

 1 PHP" style="box-sizing: inherit; margin: 0px; padding: 0px;"><?php
 2 require_once('weixin.class.php');
 3 $weixin = new class_weixin();
 4 
 5 $button[] = array('type' => "scancode_waitmsg",
 6                   'name' => "扫快递码",
 7                   'key'  => "rselfmenu_2_1"
 8                  );
 9 $result = $weixin->create_menu($button);
10 var_dump($result);
11 ?>

执行后,底部生成菜单如图5-2所示。

图5-2生成菜单
当点击“扫快递码”菜单时,开拓者接口将收到“scancode_waitmsg”事情消息,该消息的处置代码如下。

 1 //接收事情消息
 2 private function receiveEvent($object)
 3 {
 4     $content = "";
 5     switch ($object->Event)
 6     {
 7         case "subscribe":
 8             $content = "欢迎关切";
 9             break;
10         case "unsubscribe":
11             $content = "取消关切";
12             break;
13         case "scancode_waitmsg":
14             if ($object->ScanCodeInfo->ScanType == "barcode"){
15                 $codeinfo = explode(",",strval($object->ScanCodeInfo->ScanResult));
16                 $codeValue = $codeinfo[1];
17                 $content = array();
18                 $content[] = array("Title"=>"扫描胜利",  "Description"=>"快递号:".$codeValue."\r\n点击察看快递进度详情", "PicUrl"=>"", "Url" =>"http://m.kuaidi100.com/result.jsp?nu=".$codeValue);
19             }else{
20                 $content = "不是条码";
21             }
22             break;
23         default:
24             $content = "receive a new event: ".$object->Event;
25             break;
26     }
27 
28     if(is_array($content)){
29         $result = $this->transmitNews($object, $content);
30     }else{
31         $result = $this->transmitText($object, $content);
32     }
33     return $result;
34 }

上面代码第13行,检测当前事情是否为扫描推事情,然后检测当前码是否为条形码(第14行),如果条形码则将码的数值解析出来(第15行~第16行),再组装成一个单图文消息,消息的链接地址为快递100的查询接口,其中参数则为解析出来的快递单号(第17行~第18行)。
图5-3是一个快递的条码,当使用案例中公众号菜单扫描该条码时,返回一个图文消息,当用户点击该图文消息时,主动跳转到快递100的页面中查询该快递的进度详情,如图5-4所示。

图5-3快递条码

图5-4 快递查询效果图

------分隔线----------------------------

您可能感兴趣的文章:


公布评论 (81人察看0条评论)
请自觉遵守互联网相关的政策法规,严禁公布色情、暴力、反动的言论。
用户名: 验证码: 点击我更换同乐城娱乐城博彩网
最新评论