微信分享等(**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(隨機字符串)朽褪,有效的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.reibang.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(隨機數(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(隨機數(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.reibang.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.reibang.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)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市锅减,隨后出現(xiàn)的幾起案子糖儡,更是在濱河造成了極大的恐慌,老刑警劉巖怔匣,帶你破解...
    沈念sama閱讀 222,183評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件握联,死亡現(xiàn)場離奇詭異,居然都是意外死亡每瞒,警方通過查閱死者的電腦和手機金闽,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,850評論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來剿骨,“玉大人代芜,你說我怎么就攤上這事∨ɡ” “怎么了挤庇?”我有些...
    開封第一講書人閱讀 168,766評論 0 361
  • 文/不壞的土叔 我叫張陵,是天一觀的道長荞膘。 經(jīng)常有香客問我罚随,道長玉工,這世上最難降的妖魔是什么羽资? 我笑而不...
    開封第一講書人閱讀 59,854評論 1 299
  • 正文 為了忘掉前任,我火速辦了婚禮遵班,結(jié)果婚禮上屠升,老公的妹妹穿的比我還像新娘潮改。我一直安慰自己,他們只是感情好腹暖,可當(dāng)我...
    茶點故事閱讀 68,871評論 6 398
  • 文/花漫 我一把揭開白布汇在。 她就那樣靜靜地躺著,像睡著了一般脏答。 火紅的嫁衣襯著肌膚如雪糕殉。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,457評論 1 311
  • 那天殖告,我揣著相機與錄音阿蝶,去河邊找鬼。 笑死黄绩,一個胖子當(dāng)著我的面吹牛羡洁,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播爽丹,決...
    沈念sama閱讀 40,999評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼筑煮,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了粤蝎?” 一聲冷哼從身側(cè)響起真仲,我...
    開封第一講書人閱讀 39,914評論 0 277
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎诽里,沒想到半個月后袒餐,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,465評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡谤狡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,543評論 3 342
  • 正文 我和宋清朗相戀三年灸眼,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片墓懂。...
    茶點故事閱讀 40,675評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡焰宣,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出捕仔,到底是詐尸還是另有隱情匕积,我是刑警寧澤,帶...
    沈念sama閱讀 36,354評論 5 351
  • 正文 年R本政府宣布榜跌,位于F島的核電站闪唆,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏钓葫。R本人自食惡果不足惜悄蕾,卻給世界環(huán)境...
    茶點故事閱讀 42,029評論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧帆调,春花似錦奠骄、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,514評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至芹务,卻和暖如春蝉绷,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背枣抱。 一陣腳步聲響...
    開封第一講書人閱讀 33,616評論 1 274
  • 我被黑心中介騙來泰國打工潜必, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人沃但。 一個月前我還...
    沈念sama閱讀 49,091評論 3 378
  • 正文 我出身青樓磁滚,卻偏偏與公主長得像,于是被迫代替她去往敵國和親宵晚。 傳聞我的和親對象是個殘疾皇子垂攘,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,685評論 2 360

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

  • 先引入JS 文件 this.wxShare() 在created里調(diào)用 首先登陸微信公眾號 JSSDK使用步驟 步...
    寄魚予海與你閱讀 6,699評論 1 3
  • 本人自己寫完全棧小項目,想在微信分享時帶標(biāo)題淤刃、描述和縮略圖晒他,沒想到搞了3天,才搞定逸贾!所以寫篇文章陨仅,記錄浪費的時間,...
    愛吃米餅閱讀 1,888評論 0 0
  • 1. 準(zhǔn)備工作 1.1 查看公眾號分享接口權(quán)限 要使用微信SDK必須要有經(jīng)過微信認(rèn)證的非個人服務(wù)號 登陸服務(wù)號后铝侵,...
    sxplus閱讀 6,273評論 0 2
  • 可迭代: 在Python中如果一個對象有iter( )方法或getitem( )方法灼伤,則稱這個對象是可迭代的(It...
    LittleBear_6c91閱讀 306評論 0 1
  • 在時間管理、自我成長相關(guān)的領(lǐng)域里咪鲜,有一個絕大多數(shù)人都無法繞開的詞語狐赡,那就是“拖延”。 很多人都為拖延所擾疟丙,包括我自...
    Mien醬閱讀 184評論 0 0