微信公众平台源码下载php源码哪里能下载?谁给介绍下啊

关键字:微信公众平台 JSSDK&获取地理位置接口&网页获取用户地理位置&getLocation作者:方倍工作室&原文:&&
在这篇微信公众平台开发教程中,我们将介绍如何在网页中获取用户的地理位置信息。
本文分为以下二个部分:
生成JS-SDK权限验证签名
使用地理位置接口获取坐标
一、微信JS-SDK
1. 获得Access Token
access token的获得方法在前面有介绍,详情见&
2. 获取jsapi_ticket
生成签名之前必须先了解一下jsapi_ticket,jsapi_ticket是公众号用于调用微信JS接口的临时票据。正常情况下,jsapi_ticket的有效期为7200秒,通过access_token来获取。由于获取jsapi_ticket的api调用次数非常有限,频繁刷新jsapi_ticket会导致api调用受限,影响自身业务,开发者必须在自己的服务全局缓存jsapi_ticket 。
参考以下文档获取access_token(有效期7200秒,开发者必须在自己的服务全局缓存access_token):用第一步拿到的access_token 采用http GET方式请求获得jsapi_ticket(有效期7200秒,开发者必须在自己的服务全局缓存jsapi_ticket),接口地址如下
https://api./cgi-bin/ticket/getticket?access_token=ACCESS_TOKEN&type=jsapi
成功返回如下JSON:
"errcode":0,
"errmsg":"ok",
"ticket":"bxLdikRXVbTPdHSM05e5u5sUoXNKd8-41ZO3MhKoyN5OfkWITDGgnr2fwJ0m9E8NYzWKVZvdVtaUgWvsdshFKA",
"expires_in":7200
获得jsapi_ticket之后,就可以生成JS-SDK权限验证的签名了。
3. 签名算法实现
签名生成规则如下:参与签名的字段包括noncestr(随机字符串), 有效的jsapi_ticket, timestamp(时间戳), url(当前网页的URL,不包含#及其后面部分) 。对所有待签名参数按照字段名的ASCII 码从小到大排序(字典序)后,使用URL键值对的格式(即key1=value1&key2=value2&)拼接成字符串string1。这里需要注意的是所有参数名均为小写字符。对string1作sha1加密,字段名和字段值都采用原始值,不进行URL 转义。
即signature=sha1(string1)。 示例:
noncestr=Wm3WZYTPz0wzccnW
jsapi_ticket=sM4AOVdWfPE4DxkXGEs8VMCPGGVi4C3VM0P37wVUCFvkVAy_90u5h9nbSlYy3-Sl-HhTdfl2fzFy1AOcHKP7qg
timestamp=
url=http://mp.?params=value
步骤1. 对所有待签名参数按照字段名的ASCII 码从小到大排序(字典序)后,使用URL键值对的格式(即key1=value1&key2=value2&)拼接成字符串string1:
jsapi_ticket=sM4AOVdWfPE4DxkXGEs8VMCPGGVi4C3VM0P37wVUCFvkVAy_90u5h9nbSlYy3-Sl-HhTdfl2fzFy1AOcHKP7qg&noncestr=Wm3WZYTPz0wzccnW&timestamp=&url=http://mp.?params=value
步骤2. 对string1进行sha1签名,得到signature:
0f9de62fce790f9a083d5c99e95740ceb90c27ed
完整代码如下
class JSSDK {
private $appId;
private $appSecret;
public function __construct($appId, $appSecret) {
$this-&appId = $appId;
$this-&appSecret = $appSecret;
public function getSignPackage() {
$jsapiTicket = $this-&getJsApiTicket();
// 注意 URL 一定要动态获取,不能 hardcode.
$protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";
$url = "$protocol$_SERVER[HTTP_HOST]$_SERVER[REQUEST_URI]";
$timestamp = time();
$nonceStr = $this-&createNonceStr();
// 这里参数的顺序要按照 key 值 ASCII 码升序排序
$string = "jsapi_ticket=$jsapiTicket&noncestr=$nonceStr&timestamp=$timestamp&url=$url";
$signature = sha1($string);
$signPackage = array(
=& $this-&appId,
"nonceStr"
=& $nonceStr,
"timestamp" =& $timestamp,
"signature" =& $signature,
"rawString" =& $string
return $signPackage;
private function createNonceStr($length = 16) {
$chars = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
$str = "";
for ($i = 0; $i & $length; $i++) {
$str .= substr($chars, mt_rand(0, strlen($chars) - 1), 1);
return $str;
private function getJsApiTicket() {
// jsapi_ticket 应该全局存储与更新,以下代码以写入到文件中做示例
$data = json_decode(file_get_contents("jsapi_ticket.json"));
if ($data-&expire_time & time()) {
$accessToken = $this-&getAccessToken();
// 如果是企业号用以下 URL 获取 ticket
// $url = "https://qyapi./cgi-bin/get_jsapi_ticket?access_token=$accessToken";
$url = "https://api./cgi-bin/ticket/getticket?type=jsapi&access_token=$accessToken";
$res = json_decode($this-&httpGet($url));
$ticket = $res-&
if ($ticket) {
$data-&expire_time = time() + 7000;
$data-&jsapi_ticket = $ticket;
$fp = fopen("jsapi_ticket.json", "w");
fwrite($fp, json_encode($data));
fclose($fp);
$ticket = $data-&jsapi_
return $ticket;
private function getAccessToken() {
// access_token 应该全局存储与更新,以下代码以写入到文件中做示例
$data = json_decode(file_get_contents("access_token.json"));
if ($data-&expire_time & time()) {
// 如果是企业号用以下URL获取access_token
// $url = "https://qyapi./cgi-bin/gettoken?corpid=$this-&appId&corpsecret=$this-&appSecret";
$url = "https://api./cgi-bin/token?grant_type=client_credential&appid=$this-&appId&secret=$this-&appSecret";
$res = json_decode($this-&httpGet($url));
$access_token = $res-&access_
if ($access_token) {
$data-&expire_time = time() + 7000;
$data-&access_token = $access_token;
$fp = fopen("access_token.json", "w");
fwrite($fp, json_encode($data));
fclose($fp);
$access_token = $data-&access_
return $access_token;
private function httpGet($url) {
$curl = curl_init();
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_TIMEOUT, 500);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
curl_setopt($curl, CURLOPT_URL, $url);
$res = curl_exec($curl);
curl_close($curl);
return $res;
二、网页获得地理位置坐标
1. 绑定域名
先登录微信公众平台进入&公众号设置&的&功能设置&里填写&JS接口安全域名&。
2. 获取签名包
require_once "jssdk.php";
$jssdk = new JSSDK("yourAppID", "yourAppSecret");
$signPackage = $jssdk-&GetSignPackage();
3. 引入JS文件
在需要调用JS接口的页面引入如下JS文件,(支持https):
&script src="http://res./open/js/jweixin-1.0.0.js"&&/script&
4.通过config接口注入权限验证配置
所有需要使用JS-SDK的页面必须先注入配置信息,否则将无法调用。
wx.config({
debug: false,
appId: '&?php echo $signPackage["appId"];?&',
timestamp: &?php echo $signPackage["timestamp"];?&,
nonceStr: '&?php echo $signPackage["nonceStr"];?&',
signature: '&?php echo $signPackage["signature"];?&',
jsApiList: [
// 所有要调用的 API 都要加到这个列表中
'checkJsApi',
'openLocation',
'getLocation'
5. 通过ready接口处理成功验证
地理位置需要在页面加载时就调用,需要把相关接口放在ready函数中调用来确保正确执行
wx.ready(function () {
5.1 通过checkJsApi判断当前客户端版本是否支持指定获取地理位置
wx.checkJsApi({
jsApiList: [
'getLocation'
success: function (res) {
// alert(JSON.stringify(res));
// alert(JSON.stringify(res.checkResult.getLocation));
if (res.checkResult.getLocation == false) {
alert('你的微信版本太低,不支持微信JS接口,请升级到最新的微信版本!');
5.2. 使用getLocation接口获取地理位置坐标
wx.getLocation({
success: function (res) {
var latitude = res. // 纬度,浮点数,范围为90 ~ -90
var longitude = res. // 经度,浮点数,范围为180 ~ -180。
var speed = res. // 速度,以米/每秒计
var accuracy = res. // 位置精度
cancel: function (res) {
alert('用户拒绝授权获取地理位置');
三、实现效果
弹出请求获取页面
JS成功获取地理位置参数
四、源码下载
关注下文方倍工作室微信公众账号,在菜单中可找到。
阅读(...) 评论()The page is temporarily unavailable
nginx error!
The page you are looking for is temporarily unavailable.
Please try again later.
Website Administrator
Something has triggered an error on your
This is the default error page for
nginx that is distributed with
It is located
/usr/share/nginx/html/50x.html
You should customize this error page for your own
site or edit the error_page directive in
the nginx configuration file
/etc/nginx/nginx.conf.只需一步,快速开始
后使用快捷导航没有帐号?
所属分类: &
1.禁止发布恶意骗取微币的虚假资源,一经发现立即永久封禁账户,。
<font color="#.本版块所有资源除了少部分为官方发布的资源外,其余资源均为社区用户自行上传,如有侵权行为,请联系我们删除,网站底部有相应联系方式。
<font color="#.部分源码,如H5游戏,经用户同意,提供社区演示链接。
微信公众平台开源框架WeiPHP2.0源码免费下载
查看: 14310|回复: 166
& 主题帖子积分
此版本为2.0.1202稳定版本,具体的更新内容如下:
1、级联功能增加缓存机制,提高大数据时的响应时间
2、get_openid的缓存KEY增加token参数加以区分,解决多个公众号下openid获取容易出错的问题
3、解决级联数据中数据管理出现其它公众号的分类数据的问题
4、增加或者编辑公众号时,增加对appid和secret两项数据的格式化处理,去掉头部和尾部可能出的空格,解决因带空格而获取access_token失败的问题
5、修改TinkPHP核心的W函数,使其兼容ThinkSNS中的Widget便捷调用方式
6、修改Model基类里的selectPage方法,使其返回记录总数
7、解决自定义菜单在输入的关键词或者URL的头部或者尾部带有空格时无法提交到微信的问题
8、解决指自动初始化微信用户有时因为邮箱信息相同而初始化失败的问题
9、解决多次获取二维码时出错的问题
10、在通用管理列表页面里的删除增加是否确认删除的提示
11、欢迎语插件增加关键词功能,实现关注时返回指定的图文信息
12、去掉JS文件里的//@ sourceMappingURL=jquery-2.0.3.min.map,解决chome浏览器里提示jquery-2.0.3.min.map不存在的问题
13、自定义菜单增加支持扫码、拍照等新功能
14、增加微信的明文模式、兼容模式、安全模式的支持
15、自定义菜单PID字段长度由2修改为11,避免菜单过多时数据无法正常录入
16、解决表单里通用的显示和隐藏功能在浏览器里兼容的问题
17、智能聊天删除已经不可用的小九接口
18、文章详情页面里的图片点击后以微信相册的方式查看
19、配合微信管理界面的改版,重新优化增加公众号流程和相关的帮助信息
20、增加微信短链接函数 short_url
21、修复和优化各插件的功能多达30项
22、通用的增加和编辑页面上传图片的预览区把原来的正方型修改为和微信显示的图片的比例一样
w2.png (154.83 KB, 下载次数: 141)
11:20 上传
w1.png (32.94 KB, 下载次数: 1141)
11:20 上传
游客,如果您要查看本帖隐藏内容请
& 主题帖子积分
专家路上, 积分 73, 距离下一级还需 927 积分
专家路上, 积分 73, 距离下一级还需 927 积分
下载学习:)
& 主题帖子积分
新人求带, 积分 17, 距离下一级还需 133 积分
新人求带, 积分 17, 距离下一级还需 133 积分
& 主题帖子积分
新人求带, 积分 17, 距离下一级还需 133 积分
新人求带, 积分 17, 距离下一级还需 133 积分
& 主题帖子积分
新人求带, 积分 28, 距离下一级还需 122 积分
新人求带, 积分 28, 距离下一级还需 122 积分
& 主题帖子积分
新人求带, 积分 38, 距离下一级还需 112 积分
新人求带, 积分 38, 距离下一级还需 112 积分
希望这个是可以用的& && && && && && && && && && && &
& 主题帖子积分
新人求带, 积分 38, 距离下一级还需 112 积分
新人求带, 积分 38, 距离下一级还需 112 积分
希望这个是可以用的& && && && && && && && && && && &
& 主题帖子积分
新人求带, 积分 20, 距离下一级还需 130 积分
新人求带, 积分 20, 距离下一级还需 130 积分
不错,正好有我需要的会员卡功能
& 主题帖子积分
新人求带, 积分 44, 距离下一级还需 106 积分
新人求带, 积分 44, 距离下一级还需 106 积分
我是来逛逛的。
& 主题帖子积分
新人求带, 积分 68, 距离下一级还需 82 积分
新人求带, 积分 68, 距离下一级还需 82 积分
xuexi , D2019
<是专业的第三方微信开发者平台,为生态而生。
本站为第三方微信开发者平台,非腾讯官方网站。
天津市滨海新区中新生态城中成大道生态建设公寓9号楼3层301
欢迎来这里一起喝喝茶,聊聊你的产品。
微信公众号gongzhongkaifa
工作日12小时内回复。
工作日12小时内回复。微信公众平台 PHP SDK介绍_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
微信公众平台 PHP SDK介绍
上传于||文档简介
&&微&#8203;信&#8203;公&#8203;众&#8203;平&#8203;台&#8203; &#8203;P&#8203;H&#8203;P&#8203; &#8203;S&#8203;D&#8203;K&#8203;介&#8203;绍
阅读已结束,如果下载本文需要使用1下载券
想免费下载本文?
定制HR最喜欢的简历
你可能喜欢&微信公众平台接口代码PHP
秒后自动跳转到登录页
(奖励5下载豆)
快捷登录:
举报类型:
不规范:上传重复资源
不规范:标题与实际内容不符
不规范:资源无法下载或使用
其他不规范行为
违规:资源涉及侵权
违规:含有危害国家安全等内容
违规:含有反动/色情等内容
违规:广告内容
详细原因:
任何违反下载中心规定的资源,欢迎Down友监督举报,第一举报人可获5-10下载豆奖励。
Bootstrap+jQuery+T
PHP图书管理系统【源
PHP网站开发案例教程
网上建立免费的PHP网
PHP报表开发技术视频
PHP中文手册完整版c
PHP指南白菜版(电子
微信公众平台接口代码PHP
上传时间:
技术分类:
资源评价:
(14位用户参与评价)
已被下载&607&次
微信公众平台接口代码PHP,不错的东东
本资料共包含以下附件:
CDWeixin.zip
51CTO下载中心常见问题:
1.如何获得下载豆?
1)上传资料
2)评论资料
3)每天在首页签到领取
4)购买VIP会员服务,无需下载豆下载资源
5)更多途径:点击此处
2.如何删除自己的资料?
下载资料意味着您已同意遵守以下协议:
1.资料的所有权益归上传用户所有
2.未经权益所有人同意,不得将资料中的内容挪作商业或盈利用途
3.51CTO下载中心仅提供资料交流平台,并不对任何资料负责
4.本站资料中如有侵权或不适当内容,请邮件与我们联系()
5.本站不保证资源的准确性、安全性和完整性, 同时也不承担用户因使用这些资料对自己和他人造成任何形式的伤害或损失
下载1241次
下载1821次
下载1893次
下载1454次
下载2686次
下载1068次
下载4090次
下载1629次
下载1307次
相关专题推荐
本专题为Zend Framework视频教程,共
本专题是由LAMP兄弟连高级讲师李强强
Axis2是目前比较流行的WebService引擎
PHP是一种HTML内嵌式的语言,是一种在
本专题视频是燕十八老师在YY公益直播
本专题从软件工程的角度出发,按照项
本部分为兄弟连独有的特级课部分的视
第一部:基础部分(121集,发布完毕)
PHP公益培训第3部,燕十八老师最新倾
传智播客_PHP教程_韩顺平_dedecms_项
刘波-兄弟连高级讲师,PHPCMS官方唯一
本专题为后盾网ThinkPHP3.1.3使用视频
本专题为后盾网Yii框架学习视频教程,
本专题为传智播客13年5月Yii框架实战
兄弟连马明老师课程。ThinkPHP 是一个
本专题为布尔商城PHP实战视频教程,有
本周下载热点
意见或建议:
联系方式:
您已提交成功!感谢您的宝贵意见,我们会尽快处理

我要回帖

更多关于 微信公众平台asp源码 的文章

 

随机推荐