怎么获取微信二维码ticket获取ticket ???

微信公众号第三方平台获取component_verify_ticket保存到数据库中,并获取令牌等参数
微信公众平台开发交流群:
最近几天一直在弄这个微信公众号第三方平台,取经的路上甚是曲折,首先刚做到component_verify_ticket时,花费了很多时间,其实就是简单的ticket接收,弄了好久,发现腾讯的开发文档真是坑啊,而且给未认证自定义菜单开的权限太小了,菜单的事件只能是公众平台的永久素材,以及图片,图文,视频,语音,而且不支持文本,跳转连接只能是自己公众平台的图文,就这些,还有很多时候文档找不到,这是我这几天做的
获取一些列参数的文档:
这个就是接收ticket的文档,另一个是引用的文件wxBizMsgCrypt.php
==============================================
include_once('wxBizMsgCrypt.php');
//引用根目录的连接数据库文件
$filename = dirname($_SERVER['DOCUMENT_ROOT']);
require_once $filename."/fun/config.php";
$db = new PDO($dsn, $user, $pwd);
$db-&exec("SET CHARACTER SET UTF8");
$res = $db-&query("SELECT * FROM ywk_weixin_account WHERE type =
1 ",PDO::FETCH_ASSOC);
$wxData = $res-&fetchAll();
$token = $wxData[0]['token'];
$date_time = time();
//第三方发送消息给公众平台
$encodingAesKey = $wxData[0]['encodingAesKey'];
$token = $wxData[0]['token'];
$appId = $wxData[0]['appid'];
$timeStamp& =
empty($_GET['timestamp'])&&&&
trim($_GET['timestamp']) ;
$nonce&&&&&
empty($_GET['nonce'])&&&&
trim($_GET['nonce']) ;
$msg_sign&& =
empty($_GET['msg_signature']) ?
trim($_GET['msg_signature']) ;
$encryptMsg = file_get_contents('php://input');
$pc = new WXBizMsgCrypt($token, $encodingAesKey, $appId);
$xml_tree = new DOMDocument();
$xml_tree-&loadXML($encryptMsg);
$array_e = $xml_tree-&getElementsByTagName_r('Encrypt');
$encrypt = $array_e-&item(0)-&nodeV
$format = "toUser%s";
$from_xml = sprintf($format, $encrypt);
//第三方收到公众号平台发送的消息
$msg = '';
$errCode = $pc-&decryptMsg($msg_sign, $timeStamp, $nonce,
$from_xml, $msg);
if ($errCode == 0) {
&&& print("解密后:
" . $msg . "\n");
&&& $xml = new
DOMDocument();
$xml-&loadXML($msg);
&&& $array_e =
$xml-&getElementsByTagName_r('ComponentVerifyTicket');
$component_verify_ticket =
$array_e-&item(0)-&nodeV
'解密后的component_verify_ticket是:'.$component_verify_
&&& $dateline =
"UPDATE ywk_weixin_account SET `component_verify_ticket` =
'$component_verify_ticket',dateline='$dateline',
date_time='$date_time' WHERE type = 1 LIMIT 1& "
if($db-&query($sql))
'success';
'解密后失败:'.$errC
print($errCode . "\n");
============================================
向下看wxBizMsgCrypt.php(所有的解密加密函数都放在了一起)
============================================
public static $OK = 0;
public static $ValidateSignatureError = -40001;
public static $ParseXmlError = -40002;
public static $ComputeSignatureError = -40003;
public static $IllegalAesKey = -40004;
public static $ValidateAppidError = -40005;
public static $EncryptAESError = -40006;
public static $DecryptAESError = -40007;
public static $IllegalBuffer = -40008;
public static $EncodeBase64Error = -40009;
public static $DecodeBase64Error = -40010;
public static $GenReturnXmlError = -40011;
public function getSHA1($token, $timestamp, $nonce,
$encrypt_msg)
&&&&&&&&&&&
&&&&&&&&&&&
&&&&&&&&&&&&&&&
$array = array($encrypt_msg, $token, $timestamp, $nonce);
&&&&&&&&&&&&&&&
sort($array, SORT_STRING);
&&&&&&&&&&&&&&&
$str = implode($array);
&&&&&&&&&&&&&&&
return array(ErrorCode::$OK, sha1($str));
&&&&&&&&&&&
} catch (Exception $e) {
&&&&&&&&&&&&&&&
//print $e . "\n";
&&&&&&&&&&&&&&&
return array(ErrorCode::$ComputeSignatureError, null);
&&&&&&&&&&&
public function extract($xmltext)
&&&&&&&&&&&
&&&&&&&&&&&&&&&
$xml = new DOMDocument();
&&&&&&&&&&&&&&&
$xml-&loadXML($xmltext);
&&&&&&&&&&&&&&&
$array_e = $xml-&getElementsByTagName_r('Encrypt');
&&&&&&&&&&&&&&&
$array_a = $xml-&getElementsByTagName_r('ToUserName');
&&&&&&&&&&&&&&&
$encrypt = $array_e-&item(0)-&nodeV
&&&&&&&&&&&&&&&
$tousername = $array_a-&item(0)-&nodeV
&&&&&&&&&&&&&&&
return array(0, $encrypt, $tousername);
&&&&&&&&&&&
} catch (Exception $e) {
&&&&&&&&&&&&&&&
//print $e . "\n";
&&&&&&&&&&&&&&&
return array(ErrorCode::$ParseXmlError, null, null);
&&&&&&&&&&&
public function generate($encrypt, $signature, $timestamp,
&&&&&&&&&&&
$format = "
&&&&&&&&&&&
return sprintf($format, $encrypt, $signature, $timestamp,
PKCS7Encoder
public static $block_size = 32;
function encode($text)
&&&&&&&&&&&
$block_size = PKCS7Encoder::$block_
&&&&&&&&&&&
$text_length = strlen($text);
&&&&&&&&&&&
//计算需要填充的位数
&&&&&&&&&&&
$amount_to_pad = PKCS7Encoder::$block_size - ($text_length %
PKCS7Encoder::$block_size);
&&&&&&&&&&&
if ($amount_to_pad == 0) {
&&&&&&&&&&&&&&&
$amount_to_pad = PKCS7Encoder::block_
&&&&&&&&&&&
&&&&&&&&&&&
//获得补位所用的字符
&&&&&&&&&&&
$pad_chr = chr($amount_to_pad);
&&&&&&&&&&&
$tmp = "";
&&&&&&&&&&&
for ($index = 0; $index & $amount_to_ $index++) {
&&&&&&&&&&&&&&&
$tmp .= $pad_
&&&&&&&&&&&
&&&&&&&&&&&
return $text . $
function decode($text)
&&&&&&&&&&&
$pad = ord(substr($text, -1));
&&&&&&&&&&&
if ($pad & 1 || $pad & 32) {
&&&&&&&&&&&&&&&
&&&&&&&&&&&
&&&&&&&&&&&
return substr($text, 0, (strlen($text) - $pad));
function Prpcrypt($k)
&&&&&&&&&&&
$this-&key = base64_decode($k . "=");
public function encrypt($text, $appid)
&&&&&&&&&&&
&&&&&&&&&&&&&&&
//获得16位随机字符串,填充到明文之前
&&&&&&&&&&&&&&&
$random = $this-&getRandomStr();
&&&&&&&&&&&&&&&
$text = $random . pack("N", strlen($text)) . $text . $
&&&&&&&&&&&&&&&
// 网络字节序
&&&&&&&&&&&&&&&
$size = mcrypt_get_block_size(MCRYPT_RIJNDAEL_128,
MCRYPT_MODE_CBC);
&&&&&&&&&&&&&&&
$module = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '',
MCRYPT_MODE_CBC, '');
&&&&&&&&&&&&&&&
$iv = substr($this-&key, 0, 16);
&&&&&&&&&&&&&&&
//使用自定义的填充方式对明文进行补位填充
&&&&&&&&&&&&&&&
$pkc_encoder = new PKCS7E
&&&&&&&&&&&&&&&
$text = $pkc_encoder-&encode($text);
&&&&&&&&&&&&&&&
mcrypt_generic_init($module, $this-&key, $iv);
&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&
$encrypted = mcrypt_generic($module, $text);
&&&&&&&&&&&&&&&
mcrypt_generic_deinit($module);
&&&&&&&&&&&&&&&
mcrypt_module_close($module);
&&&&&&&&&&&&&&&
//print(base64_encode($encrypted));
&&&&&&&&&&&&&&&
//使用BASE64对加密后的字符串进行编码
&&&&&&&&&&&&&&&
return array(ErrorCode::$OK, base64_encode($encrypted));
&&&&&&&&&&&
} catch (Exception $e) {
&&&&&&&&&&&&&&&
//print $e;
&&&&&&&&&&&&&&&
return array(ErrorCode::$EncryptAESError, null);
&&&&&&&&&&&
public function decrypt($encrypted, $appid)
&&&&&&&&&&&
&&&&&&&&&&&&&&&
//使用BASE64对需要解密的字符串进行解码
&&&&&&&&&&&&&&&
$ciphertext_dec = base64_decode($encrypted);
&&&&&&&&&&&&&&&
$module = mcrypt_module_open(MCRYPT_RIJNDAEL_128, '',
MCRYPT_MODE_CBC, '');
&&&&&&&&&&&&&&&
$iv = substr($this-&key, 0, 16);
&&&&&&&&&&&&&&&
mcrypt_generic_init($module, $this-&key, $iv);
&&&&&&&&&&&&&&&
&&&&&&&&&&&&&&&
$decrypted = mdecrypt_generic($module, $ciphertext_dec);
&&&&&&&&&&&&&&&
mcrypt_generic_deinit($module);
&&&&&&&&&&&&&&&
mcrypt_module_close($module);
&&&&&&&&&&&
} catch (Exception $e) {
&&&&&&&&&&&&&&&
return array(ErrorCode::$DecryptAESError, null);
&&&&&&&&&&&
&&&&&&&&&&&
&&&&&&&&&&&&&&&
//去除补位字符
&&&&&&&&&&&&&&&
$pkc_encoder = new PKCS7E
&&&&&&&&&&&&&&&
$result = $pkc_encoder-&decode($decrypted);
&&&&&&&&&&&&&&&
//去除16位随机字符串,网络字节序和AppId
&&&&&&&&&&&&&&&
if (strlen($result) & 16)
&&&&&&&&&&&&&&&&&&&
return "";
&&&&&&&&&&&&&&&
$content = substr($result, 16, strlen($result));
&&&&&&&&&&&&&&&
$len_list = unpack("N", substr($content, 0, 4));
&&&&&&&&&&&&&&&
$xml_len = $len_list[1];
&&&&&&&&&&&&&&&
$xml_content = substr($content, 4, $xml_len);
&&&&&&&&&&&&&&&
$from_appid = substr($content, $xml_len + 4);
&&&&&&&&&&&
} catch (Exception $e) {
&&&&&&&&&&&&&&&
//print $e;
&&&&&&&&&&&&&&&
return array(ErrorCode::$IllegalBuffer, null);
&&&&&&&&&&&
&&&&&&&&&&&
if ($from_appid != $appid)
&&&&&&&&&&&&&&&
return array(ErrorCode::$ValidateAppidError, null);
&&&&&&&&&&&
return array(0, $xml_content);
function getRandomStr()
&&&&&&&&&&&
$str = "";
&&&&&&&&&&&
$str_pol =
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
&&&&&&&&&&&
$max = strlen($str_pol) - 1;
&&&&&&&&&&&
for ($i = 0; $i & 16; $i++) {
&&&&&&&&&&&&&&&
$str .= $str_pol[mt_rand(0, $max)];
&&&&&&&&&&&
&&&&&&&&&&&
WXBizMsgCrypt
private $encodingAesK
private $appId;
public function WXBizMsgCrypt($token, $encodingAesKey,
&&&&&&&&&&&
$this-&token = $
&&&&&&&&&&&
$this-&encodingAesKey = $encodingAesK
&&&&&&&&&&&
$this-&appId = $appId;
public function encryptMsg($replyMsg, $timeStamp, $nonce,
&$encryptMsg)
&&&&&&&&&&&
$pc = new Prpcrypt($this-&encodingAesKey);
&&&&&&&&&&&
&&&&&&&&&&&
$array = $pc-&encrypt($replyMsg, $this-&appId);
&&&&&&&&&&&
$ret = $array[0];
&&&&&&&&&&&
if ($ret != 0) {
&&&&&&&&&&&&&&&
&&&&&&&&&&&
&&&&&&&&&&&
if ($timeStamp == null) {
&&&&&&&&&&&&&&&
$timeStamp = time();
&&&&&&&&&&&
&&&&&&&&&&&
$encrypt = $array[1];
&&&&&&&&&&&
//生成安全签名
&&&&&&&&&&&
$sha1 = new SHA1;
&&&&&&&&&&&
$array = $sha1-&getSHA1($this-&token, $timeStamp, $nonce,
$encrypt);
&&&&&&&&&&&
$ret = $array[0];
&&&&&&&&&&&
if ($ret != 0) {
&&&&&&&&&&&&&&&
&&&&&&&&&&&
&&&&&&&&&&&
$signature = $array[1];
&&&&&&&&&&&
//生成发送的xml
&&&&&&&&&&&
$xmlparse = new XMLP
&&&&&&&&&&&
$encryptMsg = $xmlparse-&generate($encrypt, $signature,
$timeStamp, $nonce);
&&&&&&&&&&&
return ErrorCode::$OK;
public function decryptMsg($msgSignature, $timestamp = null,
$nonce, $postData, &$msg)
&&&&&&&&&&&
if (strlen($this-&encodingAesKey) != 43) {
&&&&&&&&&&&&&&&
return ErrorCode::$IllegalAesK
&&&&&&&&&&&
&&&&&&&&&&&
$pc = new Prpcrypt($this-&encodingAesKey);
&&&&&&&&&&&
//提取密文
&&&&&&&&&&&
$xmlparse = new XMLP
&&&&&&&&&&&
$array = $xmlparse-&extract($postData);
&&&&&&&&&&&
$ret = $array[0];
&&&&&&&&&&&
if ($ret != 0) {
&&&&&&&&&&&&&&&
&&&&&&&&&&&
&&&&&&&&&&&
if ($timestamp == null) {
&&&&&&&&&&&&&&&
$timestamp = time();
&&&&&&&&&&&
&&&&&&&&&&&
$encrypt = $array[1];
&&&&&&&&&&&
$touser_name = $array[2];
&&&&&&&&&&&
//验证安全签名
&&&&&&&&&&&
$sha1 = new SHA1;
&&&&&&&&&&&
$array = $sha1-&getSHA1($this-&token, $timestamp, $nonce,
$encrypt);
&&&&&&&&&&&
$ret = $array[0];
&&&&&&&&&&&
if ($ret != 0) {
&&&&&&&&&&&&&&&
&&&&&&&&&&&
&&&&&&&&&&&
$signature = $array[1];
&&&&&&&&&&&
if ($signature != $msgSignature) {
&&&&&&&&&&&&&&&
return ErrorCode::$ValidateSignatureE
&&&&&&&&&&&
&&&&&&&&&&&
$result = $pc-&decrypt($encrypt, $this-&appId);
&&&&&&&&&&&
if ($result[0] != 0) {
&&&&&&&&&&&&&&&
return $result[0];
&&&&&&&&&&&
&&&&&&&&&&&
$msg = $result[1];
&&&&&&&&&&&
return ErrorCode::$OK;
就是通过这些代码获取到component_verify_ticket
******还有一点有的服务器没有开启php_mcrypt.dll,会导致加密解密不成功
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。查看: 16784|回复: 4
[已解决]微信js-sdk 怎么获取到这些值(timestamp nonceStr signature)
阅读权限50
在线时间 小时
wx.config({
& && && && &// debug: true,
& && && && &appId: 'wxba49de6d10cdcd76',
& && && && &timestamp: ,
& && && && &nonceStr: 'U5iQqjfV123NT5du',
& && && && &signature: '258d9addb7ad6e6e6bf825a984ce4',复制代码我在网上下载了一个游戏代码,代码中关于微信分享的部分他都直接把值给填上了。
请问 我改怎么获取到自己网站的这些值,修改成上面那样填上。
wx.config({
& & debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
& & appId: '', // 必填,公众号的唯一标识
& & timestamp: , // 必填,生成签名的时间戳
& & nonceStr: '', // 必填,生成签名的随机串
& & signature: '',// 必填,签名,见附录1
& & jsApiList: [] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
这个事官方说明,你可以看一下,这些都是你需要填写的东西,再引入微信js文件之后,你首先的是需要这些接口入口代码就事wx.config()这个函数。然后通过这个入口文件,你才能进行之后的类似于什么分享啦,摇一摇啦的各种接口代码。这些都是你自己必须填写的,可不是你跟微信获取的。这个一定要明白。
wx.config({
debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
appId: '', // 必填,公众号的唯一标识
timestamp: , // 必填,生成签名的时间戳
nonceStr: '', // 必填,生成签名的随机串
signature: '',// 必填,签名,见附录1
jsApiList: [] // 必填,需要使用的JS接口列表,所有JS接口列表 ...
阅读权限120
在线时间 小时
&&&本楼为最佳答案&&&
wx.config({
& & debug: true, // 开启调试模式,调用的所有api的返回值会在客户端alert出来,若要查看传入的参数,可以在pc端打开,参数信息会通过log打出,仅在pc端时才会打印。
& & appId: '', // 必填,公众号的唯一标识
& & timestamp: , // 必填,生成签名的时间戳
& & nonceStr: '', // 必填,生成签名的随机串
& & signature: '',// 必填,签名,见附录1
& & jsApiList: [] // 必填,需要使用的JS接口列表,所有JS接口列表见附录2
这个事官方说明,你可以看一下,这些都是你需要填写的东西,再引入微信js文件之后,你首先的是需要这些接口入口代码就事wx.config()这个函数。然后通过这个入口文件,你才能进行之后的类似于什么分享啦,摇一摇啦的各种接口代码。这些都是你自己必须填写的,可不是你跟微信获取的。这个一定要明白。
阅读权限140
在线时间 小时
本帖最后由 VikasDhanve 于
08:23 编辑
这三个参数都是在你点击验证的时候 通过url get的方式返回给到你的。
timestamp为当前的时间戳 就是服务器的时间转换为的数
nonceStr是自己写的一个随机字符串
jsapi_ticket 呢要先获取access_token
有了access_token 比如你获取到的access_token为abc 后呢发送这个
你就会得到一个json格式的数据&&里面就包含有jsapi_ticket
具体方式如下:
package com.test.
import java.io.UnsupportedEncodingE
import java.security.MessageD
import java.security.NoSuchAlgorithmE
import java.util.A
public class CheckUtil {
& & private static final String token = &mytest&;
& & public static boolean checkSignature(String signaure, String timestamp,
& && && && &String nonce) {
& && &&&String[] arr = new String[] {token, timestamp, nonce };
& && &&&// 排序
& && &&&Arrays.sort(arr);
& && &&&// 生成字符串
& && &&&StringBuffer content = new StringBuffer();
& && &&&for (int i = 0; i & arr. i++) {
& && && && &content.append(arr);
& && &&&// sha1加密
& && &&&String temp = getSha1(content.toString());
& && &&&return temp.equals(signaure);
& & public static String getSha1(String str) {
& && &&&if (null == str || 0 == str.length()) {
& && && && &
& && &&&char[] hexDigits = { '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
& && && && && & 'A', 'B', 'C', 'D', 'E', 'F' };
& && &&&try {
& && && && &MessageDigest mdTemp = MessageDigest.getInstance(&SHA1&);
& && && && &mdTemp.update(str.getBytes(&UTF-8&));
& && && && &byte[] md = mdTemp.digest();
& && && && &int j = md.
& && && && &char[] buf = new char[j * 2];
& && && && &int k = 0;
& && && && &for (int i = 0; i & i++) {
& && && && && & byte byte0 = md;
& && && && && & buf[k++] = hexDigits[byte0 &&& 4 & 0xf];
& && && && && & buf[k++] = hexDigits[byte0 & 0xf];
& && && && &}
& && && && &return new String(buf);
& && &&&} catch (Exception e) {
& && && && &
protected void doGet(HttpServletRequest req, HttpServletResponse res)
& && && && &throws ServletException, IOException {
& && &&&PrintWriter out = res.getWriter();
& && &&&String signature = req.getParameter(&signature&);
& && &&&String timestamp = req.getParameter(&timestamp&);
& && &&&String nonce = req.getParameter(&nonce&);
& && &&&String echostr = req.getParameter(&echostr&);
& && &&&String jsapi_ticket = req.getParameter(&jsapi_ticket&);
& && &&&if(CheckUtil.checkSignature(signature, timestamp, nonce)){
& && && && &System.out.println(&nonce:&+nonce);
& && && && &System.out.println(&timestamp:&+timestamp);
& && && && &System.out.println(&signature:&+signature);
& && && && &System.out.println(&echo:&+echostr);
& && && && &out.print(echostr);
还请认真看一下官方api
如果对你有帮助,请采纳啊。谢谢
阅读权限50
在线时间 小时
这三个参数都是在你点击验证的时候 通过url get的方式返回给到你的。
timestamp为当前的时间戳 就是服务器 ...
我用的域名绑定的又拍云的cdn,只支持html访问,php不行。所以我要把微信分享的这些代码都全部写到html页面里,就不知道怎么写了。大神帮忙啊 谢谢。
阅读权限50
在线时间 小时
发表于 前天&16:30
新人学习。。。。。
**** 本内容被作者隐藏 ****
全民奇迹 3D mmorpg
《全民奇迹》是一款
新-微信淘宝客4.56 某站弄来的 需要的下载吧
特别声明(务必查看
1、HTML5 超级玛丽 源
特别声明(务必查看!切!切!切!)
| 联系方式
COPYRIGHT(C)2015 ZHONGQINGLONGTU NETWORK CO.LTD ALL RIGHTS RESERVED.ICP备号-4
北京中清龙图网络技术有限公司关于微信开发中获取jsapi_ticket-php教程-PHP中文网QQ群微信公众号还没有收藏关于微信开发中获取jsapi_ticket一、获取流程1、获取 access_token2、通过access_token换取 jsapi_ticket3、签名算法签名生成规则如下:参与签名的字段包括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./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_
$data['time'] = time() + 7200;
$this-&setFile($this-&accessTokenFile,json_encode($data));
$access_token = $data['access_token'];
return $access_
} 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./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_
$data['time'] = time() + 7200;
$this-&setFile($this-&jsapiTicketFile, json_encode($data));
$jsapi_ticket = $jsapi_ticket['jsapi_ticket'];
return $jsapi_
} 通过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}&timestamp={$timestamp}&url={$url}&;
$signature = sha1($string1);
$signPackage = array(
'appId'
=& $this-&appID,
'nonceStr'
=& $noncestr,
'timestamp' =& $timestamp,
'signature' =& $signature,
return $signP
} 签名算法,使用URL键值对的格式(即key1=value1&key2=value2…)拼接成字符串string1:对string1进行sha1签名,得到signature:注意事项:1.签名用的noncestr和timestamp必须与wx.config中的nonceStr和timestamp相同。2.签名用的url必须是调用JS接口页面的完整URL。3.出于安全考虑,开发者必须在服务器端实现签名的逻辑以上就是关于微信开发中获取jsapi_ticket的详细内容,更多请关注php中文网其它相关文章!共3篇703点赞收藏分享:.&猜你喜欢PHP中文网:独家原创,永久免费的在线,php技术学习阵地!
All Rights Reserved | 皖B2-QQ群:关注微信公众号问题对人有帮助,内容完整,我也想知道答案
问题没有实际价值,缺少关键内容,没有改进余地
{"signature":"31eba89fb1d480bd5c3402cac55db1a4","timestamp":"","nonce":"","encrypt_type":"aes","msg_signature":"c3216b636d84dcea6ecee81e64c6"}
文档上面写得不是个xml么?
如果接收的的确就是上面的json串的话 之后要如何获得ticket?
这个问题已被关闭,原因:已找到相关回答
答案对人有帮助,有参考价值
答案没帮助,是错误的答案,答非所问
这个问题已经被关闭无法回答
分享到微博?
关闭理由:
删除理由:
忽略理由:
推广(招聘、广告、SEO 等)方面的内容
与已有问题重复(请编辑该提问指向已有相同问题)
答非所问,不符合答题要求
宜作评论而非答案
带有人身攻击、辱骂、仇恨等违反条款的内容
无法获得确切结果的问题
非开发直接相关的问题
非技术提问的讨论型问题
其他原因(请补充说明)
我要该,理由是:
在 SegmentFault,解决技术问题
每个月,我们帮助 1000 万的开发者解决各种各样的技术问题。并助力他们在技术能力、职业生涯、影响力上获得提升。
一线的工程师、著名开源项目的作者们,都在这里:
获取验证码
已有账号?

我要回帖

更多关于 微信二维码ticket获取 的文章

 

随机推荐