如何在微信开发中获取JSAPI的票

  介绍

这篇文章给大家介绍如何在微信开发中获取JSAPI票,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

<强>一、获取流程

1,获取access_token

2,通过access_token换取jsapi_ticket

3,签名算法

签名生成规则如下:参与签名的字段包括noncestr(随机字符串),有效的jsapi_ticket,时间戳(时间戳),url(当前网页的url,不包含#及其后面部分)。对所有待签名参数按照字段名的ASCII码从小到大排序(字典序)后,使用url键值对的格式(即key1=value1& key2=value2…)拼接成字符串string1。这里需要注意的是所有参数名均为小写字符。对string1作sha1加密,字段名和字段值都采用原始值,不进行url转义。

<强>二,具体实现方式

1,获取access_token

/* *   ,* [getAccessToken 描述),获取access_token   ,* @return [型],[描述],*/private  function  getAccessToken (), {=美元才能data  $ this→getFile ($ this→accessTokenFile);,,如果(时间(),安康;$ data[& # 39;时间# 39;],祝辞,0){   ,,,url 美元;=,“https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential& appid={$ this→appid},秘密={$ this→appsecret}“;   ,,,re 美元;=,$ this→httpGet ($ url);   ,,,access_token 美元;=,再保险美元[& # 39;access_token& # 39;];,,,,   ,,,如果(收取(access_token美元)){   ,,,,,$ data [& # 39; access_token& # 39;],=, access_token美元;   ,,,,,$ data[& # 39;时间# 39;],=,时间(),+,7200;   ,,,,,这个→美元setFile ($ this→accessTokenFile, json_encode(元数据));   ,,,}   }{其他才能   ,,,access_token 美元;=,$ data [& # 39; access_token& # 39;];   ,,},return  access_token美元;   }

access_token的有效时间是7200年代,故可以采用文件存储的方法进行保存,避免多次请求;

2,获取jsapi_ticket

/* *   ,* [getJsapiTicket 描述),获取jsapi_ticket   ,* @return [型],[描述],*/private  function  getJsapiTicket (), {=美元才能access_token  $ this→getAccessToken ();=美元才能jsapi_ticket  $ this→getFile ($ this→jsapiTicketFile);,,如果(时间(),安康;美元jsapi_ticket[& # 39;时间# 39;],祝辞,0),{   ,,,url 美元;=,“https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token={$ access_token},类型=jsapi";   ,,,re 美元;=,$ this→httpGet ($ url);   ,,,这个→美元preArr (re);   ,,,jsapi_ticket 美元;=,再保险美元[& # 39;机票# 39;];,,,,   ,,,如果(收取(jsapi_ticket美元)){   ,,,,,$ data [& # 39; jsapi_ticket& # 39;],=, jsapi_ticket美元;   ,,,,,$ data[& # 39;时间# 39;],=,时间(),+,7200;   ,,,,,这个→美元setFile ($ this→jsapiTicketFile,, json_encode(元数据));   ,,,}   }{其他才能   ,,,jsapi_ticket 美元;=,jsapi_ticket美元[& # 39;jsapi_ticket& # 39;];   ,,},return  jsapi_ticket美元;   }

通过access_token进行交换,得到jsapi_ticket,有效期也是7200年代;

3,生成签名

/* *   ,* [getSignpackage 描述),获取签名   ,* @return [型],[描述],*/public  function  getSignpackage () {=美元才能jsapi_ticket  $ this→getJsapiTicket();,,//,注意,URL 一定要动态获取,不能,硬编码。   美元才能protocol =,(!空($ _SERVER [& # 39; https # 39;]),,,, $ _SERVER [& # 39; https # 39;], !==, & # 39;从# 39;,| |,$ _SERVER [& # 39; SERVER_PORT& # 39;],==, 443), ?,“https://",:,“http://";   url 美元;=,才能“美元协议$ _SERVER _SERVER [HTTP_HOST] [REQUEST_URI]“;;=美元才能noncestr  $ this→createNonceStr ();=美元才能timestamp 拖延时间();      时间=美元才能string1 “jsapi_ticket={$ jsapi_ticket}, noncestr={$ noncestr},时间戳={$时间戳},url={$ url}“;;   时间=美元才能signature  sha1 ($ string1);,,   时间=美元才能signPackage 阵列(,,,   ,,,& # 39;appId& # 39;,,,=祝辞,$ this→appID,,,,,   ,,,& # 39;nonceStr& # 39;,=祝辞,noncestr美元,,,,,   ,,,& # 39;时间戳# 39;,=祝辞,时间戳美元,,,,,   ,,,& # 39;签名# 39;,=祝辞,美元签名,   ,,,,   return 才能;signPackage美元;   }

<>强签名算法

使用URL键值对的格式(即key1=value1& key2=value2…)拼接成字符串string1:

对string1进行sha1签名,得到签名:

<强>注意事项:

1。签名用的noncestr和时间戳必须与wx.config中的noncestr和时间戳相同。

2。签名用的URL必须是调用JS接口页面的完整的URL。

3。null

如何在微信开发中获取JSAPI的票