微信分享等(**JS-SDK**調(diào)用)總結(jié)

先有個公眾號,這樣就有appID和appSecret(在開發(fā)/基本配置分類下)

引入JS文件http://res.wx.qq.com/open/js/jweixin-1.2.0.js,去使用微信JS-SDK

拿access_token,配置IP白名單才能調(diào)此接口,根據(jù)appID和appSecret進(jìn)行請求 (有效期7200秒,每次使用前檢查,過期重新獲取)

拿jsapi_ticket,根據(jù)上一步的access_token進(jìn)行請求 (有效期7200秒,每次使用前檢查,過期重新獲取)

計算signature,根據(jù)上一步的jsapi_ticket
1)排序,參與簽名的字段:noncestr(隨機(jī)字符串),有效的jsapi_ticket,timestamp(時間戳),url(不帶#后面部分部分),字典序從小到大排序, 2)拼接,使用URL鍵值對的格式拼接字符串string1,參數(shù)名必須均為小寫字符 3)加密,對string1作sha1加密,字段名和字段值都采用原始值,不進(jìn)行URL 轉(zhuǎn)義 注意:計算簽名必須在服務(wù)端完成簽名,返回前端。

添加JS接口安全域名(在公眾號后臺的設(shè)置/公眾號設(shè)置/功能設(shè)置中添加),這里需要實現(xiàn)MP_verify_AwmmQFM5B0vHg035.txt文件檢查功能

部署測試,注意事項:80端口,域名已備案

https://mp.weixin.qq.com/wiki?action=doc&id=mp1421141115&t=0.3895532325111326#67

http://www.lxweimin.com/p/1a35e1dbe1ad

簽名錯誤排查

https://my.oschina.net/u/2308739/blog/371414

dec 配置文本換行

\n 換行

data.company+'\n'+'Fans '

node 版本分享

http://www.cnblogs.com/wuyuchang/p/7170949.html

var timestamp = Math.floor(new Date().getTime()/1000); // 時間戳單位為秒

// 將請求以上字符串,先按字典排序,再以'&'拼接,如下:其中j > n > t > u,此處直接手動排序

var str = 'jsapi_ticket=' + jsapi_ticket + '&noncestr=' + nonce_str + '&timestamp=' + timestamp + '&url=' + url

// 用sha1加密

var signature = sha1(str)

微信小程序接入客服自動回復(fù)

1.設(shè)置服務(wù)器url,token,數(shù)據(jù)格式j(luò)son(本地開發(fā)-需要內(nèi)網(wǎng)穿透 https://www.ngrok.cc/

2.小程序設(shè)置開啟消息推送

3.接入步驟

a.服務(wù)器域名驗證

這里是設(shè)置完第一步后微信會發(fā)送一個帶簽名的get請求

服務(wù)端需要將token (自己設(shè)置的) 、timestamp(時間戳,微信傳參)、nonce(隨機(jī)數(shù)微信傳參)三個參數(shù)進(jìn)行字典排序

var key=[token, params.timestamp, params.nonce].sort().join('');

var sha1 = crypto.createHash('sha1');

var str = sha1(key); 拿這個str與get請求傳參簽名對比,相同的話吧get請求帶過來的echostr返回(注意這里直接返回一個字符串,不要json包裝,坑)

b.自動消息推送

點擊客服按鈕會產(chǎn)生一個事件,小程序服務(wù)器將發(fā)送一個post請求到我們自己設(shè)置的服務(wù)器url,其中FromUserName是用戶id

這里分兩步,一是取得token,根據(jù)appid和appSecret【https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid={appId}&secret={appSecret}】這個token過期時間7200秒,需要在服務(wù)端做緩存。第二步是根據(jù)取回的token通過鏈接https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token='+access_token向用戶發(fā)送回復(fù)消息。這里需要注意post過去的數(shù)據(jù)不再需要json包裝(坑)

formData={

"touser":req.body.FromUserName,

"msgtype":'text',

"text":{

"content":'nihao dsfds'

}

};

實現(xiàn)代碼 nodejs

router.post('/download', function(req,res){

var token = "123456";

var url = https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token='${token}';

var formData={

"touser":req.body.FromUserName,

"msgtype":'text',

"text":{

"content":'nihao dsfds'

}

};

var appId = 'wxe138b0ff20c78e8d';

var appSecret =

'19219bd30a3cc72ec068cc5fde21f885';

var tokenUrl =https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=${appId}&secret=${appSecret};

第一步獲取token

request(tokenUrl, function(err, response, body){

if (response.statusCode === 200) {

var body = JSON.parse(body);

// 緩存token

// cache.access_token = body.access_token;

// 緩存token時間戳

sendTextMessage("1233",body.access_token);

}

})

//post請求 回復(fù)消息

function sendTextMessage(content,access_token){

console.log(1,content)

request({

url: 'https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token='+access_token,

method: "POST",

json: true,

headers: {

"content-type": "application/json",

},

body: formData

}, function(err, response, body) {

if (err) {

return console.error('upload failed:', err);

}

console.log('Upload successful! Server responded with:', body);

res.send(body);

});

}

//get請求 服務(wù)器url驗證

function checkSignature(params){

console.log(123);

var token = "123456";

//token 就是自己填寫的令牌

var key=[token, params.timestamp, params.nonce].sort().join('');

//將token (自己設(shè)置的) 、timestamp(時間戳)、nonce(隨機(jī)數(shù))三個參數(shù)進(jìn)行字典排序

// var sha1 = crypto.createHash('sha1');

var str = sha1(key);

//將加密后的字符串與signature進(jìn)行對比,若成功,返回echostr

if(str === params.signature){

res.send(params.echostr)

}

}

})

常見錯誤

不合法的OpenID?

{ errcode: 40003,

errmsg: 'invalid openid hint: [8V._JA0212ge32]' }

這里遇到的問題是注意自動回復(fù)消息時post過去的數(shù)據(jù)是一個對象而不是一個json

返回碼說明

-1 系統(tǒng)繁忙,此時請開發(fā)者稍候再試

0 請求成功

40001 獲取 access_token 時 AppSecret 錯誤,或者 access_token 無效。請開發(fā)者認(rèn)真比對 AppSecret 的正確性,或查看是否正在為恰當(dāng)?shù)墓娞栒{(diào)用接口

40002 不合法的憑證類型

40003 不合法的 OpenID ,請開發(fā)者確認(rèn) OpenID (該用戶)是否已關(guān)注公眾號,或是否是其他公眾號的 OpenID

https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1433747234

微信小程序訪問nodejs接口服務(wù)器搭建

小程序的后臺數(shù)據(jù)接口需要https安全請求,https服務(wù)器的搭建

http://www.lxweimin.com/p/6ba8e1a6e1e5

模版消息功能概述突破微信小程序模板消息的推送限制https://mp.weixin.qq.com/s?__biz=MzA5MTAyNTA4NQ==&mid=2650421717&idx=1&sn=696a9cdb9247b4529b072428b04475bd&chksm=880c2207bf7bab11e1ee8cc93d1d38299ff46cb54cb5f31121f9c5523793e90a7305296c2fb8&scene=21#wechat_redirect

基于微信的通知渠道,為開發(fā)者提供了可以高效觸達(dá)用戶的模板消息能力,以便實現(xiàn)服務(wù)的閉環(huán)并提供更佳的體驗。

  • 模板推送位置:服務(wù)通知
  • 模板下發(fā)條件:用戶本人在微信體系內(nèi)與頁面有交互行為后觸

1、 支付:當(dāng)用戶在小程序內(nèi)完成過支付行為,可允許開發(fā)者向用戶在7天內(nèi)推送有限條數(shù)的模板消息(1次支付可下發(fā)1條,多次支付下發(fā)條數(shù)獨立,互相不影響) 2、提交表單:當(dāng)用戶在小程序內(nèi)發(fā)生過提交表單行為且該表單聲明為要發(fā)模板消息的,開發(fā)者需要向用戶提供服務(wù)時,可允許開發(fā)者向用戶在7天內(nèi)推送有限條數(shù)的模板消息(1次提交表單可下發(fā)1條,多次提交下發(fā)條數(shù)獨立,相互不影響)

http://www.lxweimin.com/p/92ebdd5e233f

https://www.cnblogs.com/xuzhengzong/p/7245285.html

http://www.weikeba.cn/article-1635-1.html

https://www.w3cschool.cn/weixinapp/weixinapp-api-custommsg-receive.html

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 230,622評論 6 544
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 99,716評論 3 429
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 178,746評論 0 383
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經(jīng)常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,991評論 1 318
  • 正文 為了忘掉前任,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 72,706評論 6 413
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 56,036評論 1 329
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼。 笑死,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 44,029評論 3 450
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 43,203評論 0 290
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 49,725評論 1 336
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 41,451評論 3 361
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,677評論 1 374
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 39,161評論 5 365
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 44,857評論 3 351
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 35,266評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,606評論 1 295
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,407評論 3 400
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 48,643評論 2 380

推薦閱讀更多精彩內(nèi)容