先说下我个人的情况,我是一个上班族,工作比较忙,没有时间炒股,只是会关注当前的市场行情,因此手机安装那些行情软件太占资源,关键是平时不常用。
之前关注了几个股票行情查询的公众号,但是有些股票根本无法查询,因此这个周末就宅在家里自己申请一个公众号,自己开发实现股票行情查询功能了。
关于公众号开发0基础教程网上很多,我只是简单简绍下股票行情的开发步骤
首先来了解一下微信开发的每个部分:
从上图可以看出,需要申请一个微信公众号,微信公众号有订阅号和服务号两种类型,订阅号主要用于自媒体方面,例如“美文欣赏”等公众号,是为了每天能够为用户推送文章;而服务号主要用于像银行等的服务,主要是用户自己主动请求像个的查询服务,每月最多支持4条信息发布,而订阅号每天支持1条。
公众号又有编辑模式和开发模式,编辑模式主要是在通过网页登陆公众号,然后自己设置一些固定的信息,用户自能查询这些固定的信息。而开发模式则要需要一个自己的网站,需要自己处理用户的请求,然后反馈给用户,这种方便于动态为用户提供相关的咨询和服务。
本章的股票查询开发就需要自己的一个网站,我是在sina上申请的一个免费的webapp,申请地址:http://sae.sina.com.cn,申请过程也不详细介绍了。我申请的二级域名是:http://wishhappinesstoyou.sinaapp.com, 之后需要再微信公众号“开发者中心”修改服务配置如下:
好了,现在将用户的请求引导到我自己的网站:http://wishhappinesstoyou.sinaapp.com/来了,之后就需要开发自己的webapp了。
微信公众号的webapp开发需要认证等信息,这些都是固定模式,就不详细介绍了,下面是关于股票的代码部分:
1、判断是股票查询,并且以图文方式返回给用户:
$imageTpl = "<xml>
<ToUserName><![CDATA[%s]]></ToUserName>
<FromUserName><![CDATA[%s]]></FromUserName>
<CreateTime>%s</CreateTime>
<MsgType><![CDATA[news]]></MsgType>
<ArticleCount>1</ArticleCount>
<Articles>
<item>
<Title><![CDATA[%s]]></Title>
<Description><![CDATA[%s]]></Description>
<PicUrl><![CDATA[%s]]></PicUrl>
<Url><![CDATA[%s]]></Url>
</item>
</Articles>
</xml>";
switch(trim($postObj->MsgType)){
case 'text':
if ( (strtolower(substr($keyword,0,3)) == 'gp:') )
{
$stockid=substr($keyword,3);
$title = "股票信息".$stockid;
$des = $this->get_stock_info($stockid);
$picurl= "http://image.sinajs.cn/newchart/daily/n/".$stockid.".gif";
$url = $picurl;
$resultStr = sprintf($imageTpl, $fromUsername, $toUsername, $time, $title, $des, $picurl, $url);
echo $resultStr;
}
2、股票的查询,以及行情信息截取:
function get_stock_info($stockid)
{
$url="http://hq.sinajs.cn/list=".$stockid;
$datastr = $this->curl_file_get_contents($url);
$dhead='var hq_str_'.$stockid.'=';
$retstr = $datastr;
if ( substr($datastr,0,strlen($dhead)) == $dhead )
{
$retstr = '';
$spvar=explode(',', substr($datastr, strlen($dhead) + 1));
if ( count($spvar) >= 31 ) {
$retstr = '昨收:'.$spvar[2].' 今开:'.$spvar[1].' 当前价:'.$spvar[3].' 最高:'.$spvar[4].' 最低:'.$spvar[5].' 交易量:'.$spvar[8].' 交易额:'.$spvar[9].' 交易日:'.$spvar[30].' '.$spvar[31];
}
else {
foreach ($spvar as $v)
{
$retstr = $retstr.$v.'#';
}
}
}
else
{
$retstr = $substr($datastr,0,strlen($dhead)).'#'.$dhead;
}
return $retstr;
}
function curl_file_get_contents($durl)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $durl);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true) ; // 获取数据返回
curl_setopt($ch, CURLOPT_BINARYTRANSFER, true) ; // 在启用 CURLOPT_RETURNTRANSFER 时候将获取数据返回
$r = curl_exec($ch);
curl_close($ch);
return $r;
}
上面的代码是沪深股票的查询,现在加入香港股票查询之后,将结果贴图如下:
下面是我的公众号,感兴趣的朋友可以关注下,然后一起学习探讨:
公众号:it-service365
二维码: