公交卡余额就像卫生纸一样,看着挺多的。刷着刷着就见底了。为了防患于未然。做了这样一个方便查询的微信公众接口。 原理很简单。

就是通过访问深圳通公司提供的一个查询接口  http://121.15.13.49:8080/sztnet/qryCard.do?cardno=  来获取深圳通余额。得到的余额通过微信公众账号平台返回到用户的微信上

所以流程大概如下:

1. 用户发送深圳通卡号如  01234567  到微信公众号

2.腾讯微信服务器收到这个消息

3.微信服务器将这个消息进行封装后发送给公众号微信后台服务器,这个公众号微信后台服务器的地址是在微信公众账号平台开发者中心设置的。具体怎么做大家可以自行搜索一下微信公众账号开发的基础教程。

4.公众号微信后台服务器解包这条消息,得到要查询的深圳通卡号 01234567

5.通过php模拟访问 http://121.15.13.49:8080/sztnet/qryCard.do?cardno=01234567 这个地址。

6.解析查询结果,返回给腾讯微信服务器

7.由腾讯微信服务器给用户返回查询结果。

整个流程看上去好像很复杂。其实需要我们自己编码实现的只有4,5,6三个步骤

在公众号微信服务器收到命令后代码如下

<?php$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];require "query.php";require "wechatinterface.php";$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);$GMsg["fromUsername"] = $postObj->FromUserName;$GMsg["toUsername"] = $postObj->ToUserName;$GMsg["CreateTime"] = $postObj->CreateTime;$GMsg["MsgType"] = $postObj->MsgType;if (!empty($postStr)){$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);$GMsg["fromUsername"]   = $postObj->FromUserName;$GMsg["ToUserName"]      = $postObj->ToUserName;$GMsg["CreateTime"]    = $postObj->CreateTime;$GMsg["MsgType"]       = $postObj->MsgType;switch ($GMsg["MsgType"]){case "text":$GMsg["Content"] = $postObj->Content;$GMsg["MsgId"] = $postObj->MsgId;//echo '来自用户'.$postObj->FromUserName .'的消息:'. $GMsg['Content'].' ' . $GMsg['MsgId'];//查询用户的余额记录$result = queryresult($GMsg['Content']);//echo "账户余额:".$result;//用户ID和关联的卡号存入记录        $msgtobesend = getSendMsg($result,$postObj->FromUserName,$postObj->ToUserName);echo $msgtobesend;break;              }return $GMsg;}else{return "";}?>

这个Content内容就是发过来的卡号

得到卡号后执行 queryresult函数来得到结果   queryresult函数是核心的请求实现

function queryresult($carid){$url = "http://121.15.13.49:8080/sztnet/qryCard.do?cardno=".$carid;$html = file_get_contents($url);if(preg_match_all('/\<tr><td bgcolor=\'#E4F2F3\'>(.*)<\/tr>/',$html,$match_result)){//print_r($match_result);foreach($match_result as $result){//echo "dd".$result;//var_dump($result);//print_r($result);$Balanceresult = $result[0];break;}//提取卡号preg_match_all('([1-9][0-9]{4,})',$Balanceresult,$carno);$car_no = $carno[0];//var_dump($car_no);//提取卡内余额时间 //$patten = "/([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8])))/";$patten = "/([0-9]{4})-([0-9]{2})-([0-9]{2})\s([0-9]{2}):([0-9]{2}):([0-9]{2})/";preg_match_all($patten,$Balanceresult,$resttime);$rest_time = $resttime[0];//var_dump($rest);//提取金额$patten = "/\d+\.\d+/";preg_match_all($patten,$Balanceresult,$restcash);$rest_cash = $restcash[0];$warning = "您的财富评级:";$rest_cash_float = floatval($rest_cash[0]);//var_dump($rest_cash_float);//var_dump($rest_cash[0]);//$rest_cash_float = settype($rest_cash[0],"float");//print $rest_cash_float;if($rest_cash_float  < 20){$warning = $warning."贫农。您的财富评级打败了5%的人,请尽快充值!";}else if($rest_cash_float < 50 && $rest_cash_float >= 20){$warning = $warning."中农。您的财富评级打败了30%的人,请留心余额变化!";}else if($rest_cash_float < 100 && $rest_cash_float >= 50){$warning = $warning."小康。您的财富评级打败了深圳50%的人,请留心余额变化!";}else if($rest_cash_float < 150 && $rest_cash_float >= 100){$warning = $warning."中产。您的财富评级打败了80%的人,暂无需担心余额!";}else if( $rest_cash_float >= 100){$warning = $warning."土豪。您的财富打败了90%的人,请放心刷卡!";}//$return_str  = "您的深圳通卡号: ".$car_no[0]." 截止到: ".$rest_time[0]." 还有人民币:".$rest_cash[0]."元 " .$warning;//var_dump($return_str);return $return_str;}else{return "查不到对应的信息!";//var_dump("无匹配!");}  }

在queryresult函数中实现了查询结果的数据匹配和其他逻辑的操作。代码很简单。就不多说了。

最后是通过一个函数返回结果给腾讯微信服务器

function getSendMsg($str,$from,$to){//$str = "发送到:".$to. " 发送方:".$from ."内容:". $str;$fromUsername = $from;$toUsername = $to;$time = time();$textTpl = "<xml><ToUserName><![CDATA[%s]]></ToUserName><FromUserName><![CDATA[%s]]></FromUserName><CreateTime>%s</CreateTime><MsgType><![CDATA[%s]]></MsgType><Content><![CDATA[%s]]></Content></xml>";$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, "text",$str);return $resultStr;}

这个函数是用于将结果封装为微信信息格式。

整个流程比较简单。运行后的结果  ,这个账号是拿的同学的一个微信公众平台做的。大家也可以加关注看看效果。

/************************Witch_soya****************************/

/************************2015年1月20日****************************/

微信公众平台添加深圳通余额查询功能相关推荐

  1. 微信公众平台推数据统计功能 商业价值可量化

    8月29日晚,微信产品团队通过服务号"微信公众平台"发布消息,宣布"微信公众平台增加数据统计功能".与此同时,细心的用户发现登陆微信公众平台,后台界面上增加了& ...

  2. iOS微信公众平台彻底关闭打赏功能

    微信团队官方宣布,受苹果公司新规定影响,2017年4月19日17点起,iOS版微信公众平台赞赏功能关闭,但安卓等其他版本微信的赞赏功能不受影响. 微信团队官方宣布,受苹果公司新规定影响,2017年4月 ...

  3. java 朋友圈分享接口_Java实现微信公众平台朋友圈分享功能详细代码

    其实分享的方法在微信官网有较为详细的文档说明,现就其中一些比较绕的步骤进行总结,有问题随时交流哈. 首先微信其实已经自带分享到朋友圈,朋友,qq空间等功能,对于开发微信专门提供了一个接口,可以根据需要 ...

  4. JAVA 实现朋友圈_Java实现微信公众平台朋友圈分享功能详细代码

    其实分享的方法在微信官网有较为详细的文档说明,现就其中一些比较绕的步骤进行总结,有问题随时交流哈. 首先微信其实已经自带分享到朋友圈,朋友,qq空间等功能,对于开发微信专门提供了一个接口,可以根据需要 ...

  5. 微信公众平台开发之商品比价功能

    微信公众平台开发之商品比价功能是会员日常生活中最贴心的实用查询工具.商品比价给会员的生活带来极大的方便,也使会员对我们官方微信的依赖度提升一个层面.比价功能让我们官方微信的服务更加周到,信息更加全面, ...

  6. 微信自定义菜单java_使用Java语言开发微信公众平台(八)——自定义菜单功能

    随着上一篇文章的结束,我们已经实现了所有消息的类型的回复功能.今天,我们来学习更加高大上,也更加重要的自定义菜单功能. 一.了解自定义菜单 自定义菜单是微信公众平台最常用也是最重要的功能之一.根据微信 ...

  7. php微信自定义菜单开发,微信公众平台开发自定义菜单功能开发

    一.简介 微信公众平台服务号以及之前成功申请内测资格的订阅号都具有自定义菜单的功能.开发者可利用该功能为公众账号的会话界面底部增加自定义菜单,用户点击菜单中的选项,可以调出相应的回复信息或网页链接.自 ...

  8. php微信公众点歌台,微信公众平台开发在线点歌功能介绍

    微信公众平台的消息接口-音乐消息,这是广大微信公众平台开发者的福音. 根据这一功能,如果能做出在微信中点歌功能,那么我们以后就可以不用安装其他APP, 直接在微信里面关注一个账号,就可以听歌了,还省去 ...

  9. php公众号模板消息群发,微信公众平台|模板消息群发功能

    小编之前发布过一篇"微信公众平台开发|发送模板消息"的文章,这篇只是发送给某个用户的,那么如何群发给关注该公众号的所有用户呢?下面我们来探讨一下. 最近关注了一个公众号,偶尔会给我 ...

最新文章

  1. Linux 磁盘挂载
  2. 深度:中国智能制造分析报告
  3. 宽依赖和窄依赖_Spark术语解释及宽窄依赖执行原理,代码分析
  4. GitLab+Jenkins+Ansible
  5. Spring程序开发
  6. python接口自动化关联参数_python接口自动化7-参数关联
  7. python socket接收图像 数据_python中socket接受数据的三种方法 | 学步园
  8. python写入Excel时,将路径或链接以超链接的方式写入
  9. apache2.2+PHP5.2.3+mysql5.0+gd+zend+phpmyadmin
  10. 从输入url到页面展现发生了什么?
  11. 利用ArcGIS Pro进行时空数据挖掘和可视化呈现
  12. 英语语料库与英文写作
  13. 黑域 绿色守护 安卓最好的省电工具?
  14. 决策树分析例题经典案例_决策树分类的实例
  15. 计算机功能自定义,设计大师学教学:自定义鼠标右键功能提升CAD绘图效率-鼠标右键菜单设置...
  16. Photoshop安装
  17. 互联网摸鱼日报(2022-10-08)
  18. One PUNCH Man——特征选择
  19. [ARC120E]1D Party
  20. 利用Python创建文件

热门文章

  1. LK32T102学习1-概述
  2. Intellij IDEA 简单配置字体大小
  3. Vue实现移动端开屏广告+滑动登录
  4. [unity learning] RPG Leaning(三)
  5. MetaMask 和其他 40 个钱包成为恶意软件“Mars Stealer”的目标
  6. 头脑风暴算法BSO优化BP神经网络-matlab源码
  7. Winform SunnyUI主题窗体属性:图标,可变大小,标题栏扩展按钮
  8. mysql数据库理论和实践教学
  9. 互联网营销和分析专用名词速览
  10. HBuilder X运行微信小程序项目至微信开发者工具失败