因公司需要,开发一个微信蓝牙设备连接公众号。故把微信公众号开发流程,微信硬件开发流程摸索了一遍,虽然中间掉坑好多次,但最终还是完成了公众号的开发。h5php实现前台到后台的编程。

1 既然是公众号开发,首先得去申请一个公众号。要成为公众号开发者,还得去申请开发者,关键是特么个人还不能申请,得企业才能申请。这有点坑了。申请好了公众号开发者后登陆公众号平台


微信蓝牙硬件开发 PHP PHP教程 PHP实力代码 PHP微信蓝牙硬件开发

添加设备功能后,在设备功能页面点击添加产品。


微信蓝牙硬件开发 PHP PHP教程 PHP实力代码 PHP微信蓝牙硬件开发

添加产品过程中,会有个二维码的选择,型号二维码和设备二维码。选择型号二维码后微信公众号会自动生成一个型号二维码,利用这个型号二维码后面就会通过这个型号二维码扫描发现周边已经授权过的蓝牙设备。选择设备二维码则自己利用微信硬件开发文档提供的获取设备二维码的接口,调用接口生成一个url网址,利用这个网站随便用一个生成二维码的工具生成一个二维码,再用微信扫一扫,就会调到公众号的绑定设备的接口。

添加产品完成后,每个产品会有个产品编号,这个产品编号后面调用微信硬件开发的授权接口时需要用到。这个时候就可以做开发调试了。开发调试授权的接口只能调用100次,但这在调试时已经足够用了。但是要正式生产则需要更多授权,这个时候就要去申请认证了,一般认证通过会在2-3个工作日就会通知。认证完成后可以申请更多的授权配额。

2 后台服务器的搭建。

后台服务器可以自己去网上买。还有服务器的域名。等下要和微信服务器通信起来,需要填写一个URL。蓝牙设备和微信服务器通信,微信服务器和这个填写的URL通信。

这里刚开始买的是阿里云的服务器,但是发现阿里云的服务器域名地址只能测试用,放在这里没有通过。用了一个国外的免费的服务器后台,但还是没有通过。最后买了百度云的通过了。

3 开发调试。

1设备授权。


微信蓝牙硬件开发 PHP PHP教程 PHP实力代码 PHP微信蓝牙硬件开发

通过这个接口。就可以获取一个设备id和设备二维码。设备id就是以后和设备通信时微信公众号发送给URL的唯一设备标识码。设备绑定和解绑,设备和微信公众号通信,微信公众号通过设备Id,把设备的通信数据发给前面填写的URL。

2 授权后绑定设备的mac地址。


微信蓝牙硬件开发 PHP PHP教程 PHP实力代码 PHP微信蓝牙硬件开发

调用完这个接口后,在微信公众号界面,如果检测到mac地址的设备,公共号就会自动去连接,公众号标题下面就会显示连接状态。


微信蓝牙硬件开发 PHP PHP教程 PHP实力代码 PHP微信蓝牙硬件开发

接下来就是开发h5页面和服务器后台的事情了。

这里有个坑就是型号二维码。若是有个设备被一个产品的型号二维码授权过了之后,则利用其他产品的产品id再去授权型号二维码授权时,调用授权接口返回的数据都正常。但是扫描时压根扫描不到设备。(曾经我阅读微信硬件开发文档好几遍,翻遍微信硬件开发论坛好几次,网上查找微信蓝牙开发文章也是翻了10几页之后都没找到有人说明过这个问题,后来发了封邮件给微信硬件开发页面上面的一个邮箱,后面真给我回复了,说是重复授权会导致授权失败,真是个大坑啊,文档上面也不说明)设备二维码则可以反复授权都没关心。

还有个坑就是设备连接微信公众号后,我的服务器接收不到微信服务器发来的设备数据。后来在其他手机公众号上面连接又可以接收的到。不知道这是手机原因还是公众号的原因。手机型号是vivio max。

还有通信方式就是通过h5 利用微信JS-SDK直接自己扫描连接设备,收发数据都可以通过微信JS提供的接口获得。这样子自己可操作性就大些,并且还不受微信硬件开发接口调用频率的限制。但这种方式更繁琐些。

我开发的是结合这两种,扫描连接用微信公众号自带的,有个界面要一直获取设备数据的就利用这种方式去获取。这里贴部分关键代码。


微信蓝牙硬件开发 PHP PHP教程 PHP实力代码 PHP微信蓝牙硬件开发

首先初始化微信JS调用环境。


微信蓝牙硬件开发 PHP PHP教程 PHP实力代码 PHP微信蓝牙硬件开发

这里是写你需要调用的函数,由于前面扫描连接操作都交给了微信公众号,所以我这里只有接收和发送数据的函数。

在调用JSSDK的时候主要的问题就是wx.config里面的那些参数设置。参数主要在H5页面请求一个自己后台的接口,是在后台服务器把参数都设置和生成好,再传回H5页面。

<?php
include 'lu.php';
header("Access-Control-Allow-Origin: *");
error_reporting(E_ALL ^ E_DEPRECATED);
// checkSignature();
/**
* 微信js接口签名
*/
$getTicket=true;
//如果本地有并且不为空
$jsapi_ticket = file_get_contents("jsapi_ticket.txt");
$time=file_get_contents("jsapi_time.txt");
$time2=time();
$dt=$time2-$time;
mlogger("***************time:".$time);
mlogger("***************time2:".$time2);
mlogger("***************dt:".$dt);
if($dt<7200){ mlogger("已有..........jsapi_ticket:".$jsapi_ticket); $getTicket=false; $signature = file_get_contents("signature.txt"); mlogger("signature : ".$signature); mlogger("time :".$time); $data=array(); $data["timestamp"]=$time; $data["signature"]=$signature; $d=json_encode(array('data' => $data)); echo $d;
}else{ //如果过期了则重新生成 $access_token=getWXToken(); $turl="https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=".$access_token."&type=jsapi"; $jsapi_data=file_get_contents($turl); mlogger("从服务器获取数据..........:".$jsapi_data); $obj = json_decode($jsapi_data); $jsapi_ticket=$obj->ticket; mlogger("..........jsapi_ticket:".$jsapi_ticket); file_put_contents("jsapi_ticket.txt",$jsapi_ticket); file_put_contents("jsapi_time.txt",$time2); $timestamp = $time2; $noncestr ="123"; $url=$_GET["url"]; $tmpArr = array( $jsapi_ticket, $time, $noncestr,$url); $tmpStr = "jsapi_ticket=".$jsapi_ticket."&noncestr=".$noncestr."×tamp=".$timestamp."&url=".$url; mlogger("..........tmpStr:".$tmpStr); $signature = sha1($tmpStr); mlogger("signature :".$signature); mlogger("time :".$timestamp); file_put_contents("signature.txt",$signature); $data=array(); $data["timestamp"]=$timestamp; $data["signature"]=$signature; $d=json_encode(array('data' => $data)); echo $d;
}
// }
function mlogger($content){
// echo "<br>".$content."<br>";
date_default_timezone_set ('PRC');
file_put_contents("log.html", date('Y-m-d H:i:s') . "-----p_signatureUtil----" . $content .
"<br>", FILE_APPEND);
};
?>

还要注意点就是解析设备的数据和发送的到设备数据都要经过base64转换。

只要和收发数据了,那么开发起来就问题不大了。

本文开发(php)相关术语:php代码审计工具 php开发工程师 移动开发者大会 移动互联网开发 web开发工程师 软件开发流程 软件开发工程师

分页:12
转载请注明
本文标题:微信蓝牙硬件开发 PHP PHP教程 PHP实力代码 PHP微信蓝牙硬件开发
本站链接:http://www.codesec.net/view/521567.html
分享请点击:


1.凡CodeSecTeam转载的文章,均出自其它媒体或其他官网介绍,目的在于传递更多的信息,并不代表本站赞同其观点和其真实性负责;
2.转载的文章仅代表原创作者观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,本站对该文以及其中全部或者部分内容、文字的真实性、完整性、及时性,不作出任何保证或承若;
3.如本站转载稿涉及版权等问题,请作者及时联系本站,我们会及时处理。
登录后可拥有收藏文章、关注作者等权限...
技术大类 技术大类 | 开发(php) | 评论(0) | 阅读(145)