微信JSSDK php 簽名實現

2021-08-10 20:41:55 字數 1823 閱讀 5680

使用jssdk需要前後端的合作,後端為前端提供jssdk需要的資訊,前端進行jsapi的呼叫,其中後端的難點在於如何去生成前端需要的簽名
通過開發者工具中的介面除錯工具,可以測試你能否正確獲取到access_token,如果返回的提示是++request successful++,則說明能成功獲取access_token

// 失敗時則返回errcode和errmsg

php **如下:

public

function

getaccesstoken

() // accesstoken過期或不存在時

($url)

api_ticket也是採用http get方式獲取的($token為第一步獲取的access_token)

url:

public

function

getjsapiticket

($accesstoken) else

return

$res;

}

簽名生成規則如下:參與簽名的字段包括noncestr(隨機字串), 有效的jsapi_ticket, timestamp(時間戳), url(當前網頁的url,不包含#及其後面部分) 。對所有待簽名引數按照欄位名的ascii 碼從小到大排序(字典序)後,使用url鍵值對的格式(即key1=value1&key2=value2…)拼接成字串string1。這裡需要注意的是所有引數名均為小寫字元。對string1作sha1加密,欄位名和字段值都採用原始值,不進行url 轉義。

// 獲取簽名

public

function

getsignpackage

() // 時間戳

$timestamp = time();

// 隨機字串

$noncestr = $this->createnoncestr();

// 這裡引數的順序要按照 key 值 ascii 碼公升序排序 j -> n -> t -> u

$string = "jsapi_ticket=$ticket&noncestr=$noncestr×tamp=$timestamp&url=$url";

$signature = sha1($string);

$signpackage = array (

"noncestr" => $noncestr,

"timestamp" => $timestamp,

"url" => $url,

"signature" => $signature,

"rawstring" => $string,

"ticket" => $ticket,

"token" => $token['accesstoken']

);// 提供資料給前端

$this->ajaxreturn(array('status' => true, 'data' => $signpackage));

}// 建立隨機字串

private

function

createnoncestr

($length = 16)

return

$str;

}

微信小程式 手寫簽名 微信小程式實現電子簽名功能

x.wxml bindtouchmove canvasmove bindtouchend canvasend touchcancel canvasend binderror canvasiderrorcallback 上傳簽名 清除簽名 js var context null 使用 wx.creat...

php微信簽名 PHP微信介面簽名演算法

一 引數說明 二 安全規範 1 簽名演算法 簽名生成的通用步驟如下 第一步,設所有傳送或者接收到的資料為集合m,將集合m內非空引數值的引數按照引數名ascii碼從小到大排序 字典序 使用url鍵值對的格式 即key1 value1 key2 value2 拼接成字串stringa。特別注意以下重要規...

獲取微信簽名

url post path getjsapi public datacentergetjsapi string url 獲取js簽名 獲得js授權的簽名資訊 throws unsupportedencodingexception public static string getjssignature...