getJsSign() 공개 메소드

获取JsApi使用签名
public getJsSign ( string $url, string $timestamp, string $noncestr = '', string $appid = '' ) : array | boolean
$url string 网页的URL,自动处理#及其后面部分
$timestamp string 当前时间戳 (为空则自动生成)
$noncestr string 随机串 (为空则自动生成)
$appid string 用于多个appid时使用,可空
리턴 array | boolean 返回签名字串
예제 #1
0
 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));
     }
 }
예제 #2
0
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;
}
예제 #3
0
<?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 
예제 #4
0
 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'];
 }
예제 #5
0
파일: index.php 프로젝트: xupnge1314/sscpms
    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">
예제 #6
0
<?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;