function getJsSign() { if ($this->request->is('post')) { $url = $this->request->data('url'); $timestamp = $this->request->data('timestamp'); $nonceStr = $this->request->data('nonceStr'); $appId = 'yourappid'; $wxObj = new Wechat(array('token' => 'yourtoken', 'appid' => $appId, 'appsecret' => 'yourpants')); //调用对应的函数 $sign = $wxObj->getJsSign($url, $timestamp, $nonceStr); //如果token失效,清除token重试一次 if ($wxObj->errCode == 40001 || $wxObj->errCode == 42001) { $wxObj->resetAuth(); $sign = $wxObj->getJsSign(); } //如果返回false,获取errcode和errmsg if (!$sign) { return $this->sentJson(array('errCode' => $wxObj->errCode, 'errMsg' => WechatErrCode::getErrText($wxObj->errCode))); } $package = array('signature' => $sign, 'nonceStr' => $nonceStr, 'appId' => $appId, 'timestamp' => $timestamp); return $this->sentJson(array('errCode' => 0, 'errMsg' => '', 'result' => $package)); } }
function showTip($smarty, $tip, $db, $title) { $options = array('token' => WX_TOKEN, 'appid' => WX_APPID, 'encodingaeskey' => '6pnP7qHyqJ1kFXMjuO4Z3QrpOa9WfapsgkPOtXoZKC2', 'appsecret' => WX_SECRET, 'logcallback' => logdebug); $we = new Wechat($options); $auth = $we->checkAuth(); $js_ticket = $we->getJsTicket(); $smarty->assign('tip', $tip); $smarty->assign('title', $title); $url = 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; $smarty->assign('js_sign', $we->getJsSign($url)); $smarty->display('templates/tip.html'); $db->disconnect(); die; }
<?php // WP_Wechat Handle $wechat = new WP_Wechat(); // wechat-php-sdk Handle $we = new Wechat(array('appsecret' => $wechat->app_secret, 'appid' => $wechat->app_id)); $auth = $we->checkAuth(); $js_ticket = $we->getJsTicket(); if (!$js_ticket) { $errcode = $we->errCode; $errtext = ErrCode::getErrText($weObj->errCode); echo "获取 js_ticket 失败! 错误码:{$errcode} 错误原因:{$errtext} "; } $https = isset($_SERVER['HTTPS']) && 'on' === $_SERVER['HTTPS']; $url = ($https ? 'https://' : 'http://') . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; $js_sign = $we->getJsSign($url); ?> <script> if(window.wx) { wx.config({ debug: /debug=1/.test(location.href), appId: '<?php echo $js_sign['appId']; ?> ', // 必填,公众号的唯一标识 timestamp: <?php echo $js_sign['timestamp']; ?> , // 必填,生成签名的时间戳,切记时间戳是整数型,别加引号 nonceStr: '<?php
function getToken($url) { //引入微信类库 APP::load(APP_FILE . 'common/class/wechat.class.php'); $weObj = new Wechat(APP::$config['wechat']); // 注意 URL 一定要动态获取,不能 hardcode. $protocol = !empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443 ? "https://" : "http://"; $uri = "{$protocol}{$_SERVER['HTTP_HOST']}{$_SERVER['REQUEST_URI']}"; $signPackage = $weObj->getJsSign($uri); if (!isset($_GET['code'])) { header("Location: " . $url); exit; } $data = $weObj->getOauthAccessToken(); if (!$data) { header("Location: " . $url); exit; } $userinfo = $weObj->getOauthUserinfo($data['access_token'], $data['openid']); $this->assign('signPackage', $signPackage); $_SESSION['openid'] = $data['openid']; }
echo '错误码:'.$we->errCode; echo ' 错误原因:'.ErrCode::getErrText($weObj->errCode); exit; } $timestamp = time(); $noncestr = $we->generateNonceStr(); $url = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; $js_sign = $we->getJsSign($url, $timestamp, $noncestr); //会自己检测调用checkAuth方法获取access_token ?> <html> <head> <meta charset="utf-8"> <title>JS-SDK测试页</title> <meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=0"> <link rel="stylesheet" href="style.css?ts=1420775603">
<?php include "../qy-sdk/wechat.class.php"; require 'api_rb.php'; require 'api_db.php'; $url = isset($_REQUEST['url']) ? $_REQUEST['url'] : ''; $timestamp = time(); $noncestr = 'Gds_Wechat_CSC_V2'; // Log _log(json_encode(['url' => $url, 'timestamp' => $timestamp, 'noncestr' => $noncestr])); // Check if (empty($url)) { header('Content-type:text/json;charset=utf-8'); echo json_encode(['result' => 'failed', 'error' => 'missing argument']); die; } // Get Ticket and Sign $options = ['token' => 'nizhidaoma', 'encodingaeskey' => 'xc8rRK4iOQjTJK9hOYhRrC9sPBJvF5Jhjq203iMC7vF', 'appid' => 'wxe85832e232e73f41', 'appsecret' => '4c8f1aa381675dd2569fc9482052afdc', 'debug' => true, 'logcallback' => '_log']; $weObj = new Wechat($options); $jsTicket = $weObj->getJsTicket(); $jsSign = $weObj->getJsSign($url, $timestamp, $noncestr); // Return header('Content-type:text/json;charset=utf-8'); echo json_encode(['result' => 'true', 'sign' => $jsSign]); die;