一、获取流程

1、获取 access_token
2、通过access_token换取 jsapi_ticket
3、签名算法
签名生成规则如下:参与签名的字段包括noncestr(随机字符串), 有效的jsapi_ticket, timestamp(时间戳), url(当前网页的URL,不包含#及其后面部分) 。对所有待签名参数按照字段名的ASCII 码从小到大排序(字典序)后,使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串string1。这里需要注意的是所有参数名均为小写字符。对string1作sha1加密,字段名和字段值都采用原始值,不进行URL 转义。
二、具体实现方式
1、获取access_token
/**
* [getAccessToken description] 获取access_token
* @return [type] [description] */private function getAccessToken() {
$data = $this->getFile($this->accessTokenFile); if(time() - $data['time'] > 0){
$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={$this->appID}&secret={$this->appsecret}";
$re = $this->httpGet($url);
$access_token = $re['access_token'];
if(isset($access_token)){
$data['access_token'] = $access_token;
$data['time'] = time() + 7200;
$this->setFile($this->accessTokenFile,json_encode($data));
}
}else{
$access_token = $data['access_token'];
} return $access_token;
}
access_token 的有效时间是7200s,故可以采用文件存储的方法进行保存,避免多次请求;
2、获取jsapi_ticket
/**
* [getJsapiTicket description] 获取jsapi_ticket
* @return [type] [description] */private function getJsapiTicket() {
$access_token = $this->getAccessToken();
$jsapi_ticket = $this->getFile($this->jsapiTicketFile); if(time() - $jsapi_ticket['time'] > 0) {
$url = "https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token={$access_token}&type=jsapi";
$re = $this->httpGet($url);
$this->preArr($re);
$jsapi_ticket = $re['ticket'];
if(isset($jsapi_ticket)){
$data['jsapi_ticket'] = $jsapi_ticket;
$data['time'] = time() + 7200;
$this->setFile($this->jsapiTicketFile, json_encode($data));
}
}else{
$jsapi_ticket = $jsapi_ticket['jsapi_ticket'];
} return $jsapi_ticket;
}
通过access_token进行交换,得到jsapi_ticket,有效期也是7200s;
3、生成签名
/**
* [getSignpackage description] 获取签名
* @return [type] [description] */public function getSignpackage(){
$jsapi_ticket = $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]";
$noncestr = $this->createNonceStr();
$timestamp = time();
$string1 = "jsapi_ticket={$jsapi_ticket}&noncestr={$noncestr}×tamp={$timestamp}&url={$url}";
$signature = sha1($string1);
$signPackage = array(
'appId' => $this->appID,
'nonceStr' => $noncestr,
'timestamp' => $timestamp,
'signature' => $signature,
);
return $signPackage;
}
签名算法
使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串string1:
对string1进行sha1签名,得到signature:
注意事项:
1.签名用的noncestr和timestamp必须与wx.config中的nonceStr和timestamp相同。
2.签名用的url必须是调用JS接口页面的完整URL。
3.出于安全考虑,开发者必须在服务器端实现签名的逻辑。
详情参考:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1421140183
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
# 微信
# JSAPI
# TICKET
# 微信封装的调用微信签名包的类库
# 微信JSAPI支付操作需要注意的细节
# 微信支付java版本之JSAPI支付+发送模板消息
# 微信公众号支付之坑:调用支付jsapi缺少参数 timeStamp等错误解决方法
# Java通过JsApi方式实现微信支付
# 微信JSAPI Ticket接口签名详解
# 键值
# 的是
# 字段名
# 均为
# 需要注意
# 从小到大
# 大家多多
# 不包含
# return
# type
# time
# accessTokenFile
# private
# gt
# getFile
# function
# data
# grant_type
# token
# appID
相关文章:
建站IDE高效指南:快速搭建+SEO优化+自适应模板全解析
建站主机选择指南:服务器配置与SEO优化实战技巧
,网站推广常用方法?
如何在香港免费服务器上快速搭建网站?
建站之星北京办公室:智能建站系统与小程序生成方案解析
如何快速搭建个人网站并优化SEO?
建站org新手必看:2024最新搭建流程与模板选择技巧
制作销售网站教学视频,销售网站有哪些?
小程序网站制作需要准备什么资料,如何制作小程序?
制作网站的公司有哪些,做一个公司网站要多少钱?
已有域名能否直接搭建网站?
制作网站的软件下载免费,今日头条开宝箱老是需要下载怎么回事?
如何在橙子建站上传落地页?操作指南详解
教育培训网站制作流程,请问edu教育网站的域名怎么申请?
品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?
南京网站制作费用,南京远驱官方网站?
平台云上自助建站如何快速打造专业网站?
在线制作视频网站免费,都有哪些好的动漫网站?
沈阳个人网站制作公司,哪个网站能考到沈阳事业编招聘的信息?
如何基于云服务器快速搭建个人网站?
网站制作报价单模板图片,小松挖机官方网站报价?
网站建设制作需要多少钱费用,自己做一个网站要多少钱,模板一般多少钱?
免费网站制作模板下载,除了易企秀之外还有什么H5平台可以制作H5长页面,最好是免费的?
如何在腾讯云服务器快速搭建个人网站?
魔毅自助建站系统:模板定制与SEO优化一键生成指南
网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?
建站之星体验版:智能建站系统+响应式设计,多端适配快速建站
香港服务器建站指南:外贸独立站搭建与跨境电商配置流程
建站之星安装路径如何正确选择及配置?
如何用花生壳三步快速搭建专属网站?
如何高效搭建专业期货交易平台网站?
网站企业制作流程,用什么语言做企业网站比较好?
上海网站制作网页,上海本地的生活网站有哪些?最好包括生活的各个方面的?
建站之星如何快速解决建站难题?
招商网站制作流程,网站招商广告语?
建站之星2.7模板快速切换与批量管理功能操作指南
简单实现Android文件上传
建站之星3.0如何解决常见操作问题?
常州自助建站:操作简便模板丰富,企业个人快速搭建网站
广州顶尖建站服务:企业官网建设与SEO优化一体化方案
大型企业网站制作流程,做网站需要注册公司吗?
建站之星备案流程有哪些注意事项?
Swift开发中switch语句值绑定模式
如何快速生成橙子建站落地页链接?
网站制作企业,网站的banner和导航栏是指什么?
潮流网站制作头像软件下载,适合母子的网名有哪些?
如何在建站宝盒中设置产品搜索功能?
如何制作新型网站程序文件,新型止水鱼鳞网要拆除吗?
nginx修改上传文件大小限制的方法
如何选择域名并搭建高效网站?
*请认真填写需求信息,我们会在24小时内与您取得联系。