微信开发之调用扫一扫接口

来源:互联网 发布:python 分词 编辑:程序博客网 时间:2024/05/22 12:39

前言

这是自己第一次进行微信开发,自己之前一直以为很简单,但是自己真正来做的时候才发现会遇到很多问题。认识的一个小伙伴进行微信开发已经挺久了,如果需要可以直接问他或者将他的源代码拿过来。但是想想这个项目并不是很赶时间,因为做的算是一个公益项目,负责人对自己也很好。所以自己就憋着不去问别人,自己独立完成。折腾了一番以后,发现了很多坑,在点击按钮,弹出扫一扫界面的那一刹那,什么感觉呢?程序猿都懂的。

调用扫一扫接口遇到的那些坑

1、太过于相信官方的东西

太过于相信官方的东西(这里没有黑腾讯的意思),调用接口如果想要一个demo的话,大家都会下载官方的demo,demo里面说的很清楚

JAVA, Node, Python 部分代码只实现了签名算法,需要开发者传入 jsapi_ticket 和 url ,其中 jsapi_ticket 需要通过 http://api.weixin.qq.com/cgi-bin/ticket/getticket?type=jsapi&access_token=ACCESS_TOKEN 接口获取,url 为调用页面的完整 url 。PHP 部分代码包括了获取 access_token 和 jsapi_ticket 的操作,只需传入 appid 和 appsecret 即可,但要注意如果已有其他业务需要使用 access_token 的话,应修改获取 access_token 部分代码从全局缓存中获取,防止重复获取 access_token ,超过调用频率。注意事项:1. jsapi_ticket 的有效期为 7200 秒,开发者必须全局缓存 jsapi_ticket ,防止超过调用频率。

这里说的是php部分代码只需要传入appid,appsecret即可,但是我们真的这样传入的时候是不行的。因为自己接触服务器不久,就还没有看错误日志的习惯,不过现在我发现这个真的是太重要了。错误日志一定要看,一定要看,一定要看。打开错误日志,我们看看错误日志的内容

PHP Notice:  curl_setopt(): CURLOPT_SSL_VERIFYHOST with value 1 is deprecated and will be removed as of libcurl 7.28.1. It is recommended to use value 2 instead in /var/www/html/wx/jssdk.php on line 95

这是什么情况?额,原来是curl_setopt中的第三个参数并不是传入true,现在是应该传入2。当然不同的php版本我也不清楚,还希望看到的大佬能够指教。如果你的服务器的错误日志出现这个错误,那么就需要修改。

2、invalid signature

如果微信开发没有遇到这个问题,那就是不完整的人生,哈哈。网上遇到这个问题的人一大堆,解决的方法也是各种各样,我这里只是总结一下我解决的方法。还是从错误日志出发

PHP Notice:  Undefined property: stdClass::$access_token

这里的主要原因是json_decode函数的问题,官方文档是这样的

$res = json_decode($this->httpGet($url));

但是可以运行的是这样的,既然这里这样修改了,那么后面获取也不能通过->获取,而是通过[]获取。

$res = json_decode($this->httpGet($url),true);

总结

虽然短短几句话就把自己遇到的坑说完了,但是解决过程却不是那么简单,不过每遇到这样一个问题,也就更加进步一点点。主要的收获首先就是看错误日志。根绝错误日志来寻找答案,会快很多。另外就是不要过分相信权威,因为版本或者其他问题,有些地方总是会不兼容。