企業微信微信api開發 調起預設瀏覽以及支付方式

2021-09-03 02:22:29 字數 3907 閱讀 2147

三、通過wx.config介面注入許可權驗證

1、每個需要使用jssdk的頁面都要使用config介面注入配置資訊,wx.config呼叫方法如下:

wx.

config

()

(2)用第一步獲取的access_token使用get請求獲取jsapi_ticket

正確獲取資訊如下:

2、生成簽名(signature)

簽名規則:

1、參與簽名的字段包括noncestr(隨機字串), 有效的jsapi_ticket, timestamp(時間戳), url(當前網頁的url,不包含#及其後面部分)。

2、對所有待簽名引數按照欄位名的ascii 碼從小到大排序(字典序,sort()即可)後,使用url鍵值對的格式(即key1=value1&key2=value2…)拼接成字串(string)。

3、使用sha1加密拼接成的字串string。注意:欄位名和字段值都要使用原值,不要進行url轉義

參與的字段示例:

拼接完成的字串:

使用sha1加密後的signature:

0f9de62fce790f9a083d5c99e95740ceb90c27ed
前端拿到值後,寫入到wx.config中相應字段即可

注意:1、前端wx.config配置中的noncestr欄位名稱的』s』是大寫,但是後台生成簽名的noncestr欄位的『s』是小寫

2、時間戳(timestamp)值要記住精確到秒,不是毫秒。

3、生成簽名的url(使用jssdk的頁面位址,這個頁面位址可以在瀏覽器訪問),包含「?」號後面的所有引數,不包含「#」號後面的值。

如果是靜默授權或者授權頁面同意授權後跳轉到的頁面,頁面路徑會新增兩個引數:code和state。

即授權後跳轉頁面為則完整路徑為

那麼生成簽名的url必須為授權後跳轉頁面的完整路徑。前端獲取這個路徑:location.href.split(』#』)[0]

如果前端使用ajax(使用jquery)獲取wx.config配置所需的幾個引數的值,可以這樣做:

$.

ajax(}

)

後台要怎麼操作前端傳過來的query值呢?大家肯定一眼看出來 獲取query中的fullurl欄位不就行了。

後台**:(使用nodejs的koa框架)

let query =

this

.request.query;

//獲取查詢字串

let fullurl = query.fullurl;

//獲取查詢字串中的fullurl欄位

從前端請求獲取簽名介面開始,博主列印了query的值。。也就是let query = this.request.query的值。。結果發現。query值為:

state

使用encodeuricomponent

(location.href.

split

('#')[

0])即可

五、呼叫介面

wx.config配置完成後會執行wx.ready方法,所有介面必須要在config返回結果之後操作。config是乙個客戶端的非同步操作,所以如果需要在頁面載入時就呼叫相關介面,則須把相關介面放在ready函式中呼叫來確保正確執行。對於使用者觸發時才呼叫的介面,則可以直接呼叫,不需要放在ready函式中。當前頁面要使用的介面,要寫入到config配置中的jsapilist中

六、常見問題

1、invalid url domain:

js介面安全網域名稱錯誤。可以看看第一項

2、invalid signature:

要麼是jsapi_ticket錯誤,要麼是簽名演算法問題,要麼是演算法的引數有問題,注意noncestr中的』s』是小寫的。如果都是對的。那就是前端傳的url有問題了。。。好好檢查一下,不要像博主一樣啊。。。。

3、permission denied:

這個問題一般是沒有介面許可權的問題,有的介面是要認證之後才可以使用,當然,測試號不會有這個問題

function

isweixin()

, error:

function

(err)})

;}else

}function

_config

(signinfo)

) wx.

ready

(function()

,function

(res)})

;});

}八、調起支付頁面

// 判斷開啟方式

let openfun =

getopenfun()

// 獲取href

let href = window.location.href

let searchid = orderid ||

this

.props.match.params.orderid

//判斷是否有code 獲取重定向位址

if(href.

split

('#')[

0].split

('?'

).length <2)

).then

(res =>)}

else

if(openfun ===

'wxwork'))

.then

(res =>)}

}else).

then

(res =>)}

else

if(openfun ===

'wxwork'))

.then

(res =>).

then

(res =>})

}else).

then

(res =>)}

})}}

getwxconfig

(payinfo));

} window.wx.

ready

(function()

,function

(res)})

;});

}).catch

(err =>)}

export

const

getopenfun

=function()

else

if(ua.

match

(/micromessenger/i

)&&ua.

match

(/wxwork/i))

else

};

企業微信API開發前準備

參考文件 1 corpid ww2f9a1a85f1806981 每個企業都擁有唯一的corpid,獲取此資訊可在管理後台 我的企業 企業資訊 下檢視 2 userid xiaonaiqiang 每個成員都有唯一的userid,即所謂 帳號 在管理後台 通訊錄 點進某個成員的詳情頁 3 部門id 1...

微信控制項api

php案例 呼叫登陸介面獲取apikey url phone 18013351905 賬號 password 123456 密碼 data phone phone,password password uinfo request url,data apikey uinfo data apikey 可開...

微信分享 API

注意 如有問題請通過以下渠道反饋 在需要呼叫js介面的頁面引入如下js檔案,支援https 2015 5 21 var wxjs root setprefix function root 獲取url上面的引數值 name 引數名 return 引數值 geturlparam function nam...