日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問(wèn)題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
創(chuàng)新互聯(lián)小程序教程:微信小程序服務(wù)端能力

后端 API

小程序還提供了一系列在后端服務(wù)器使用 HTTPS 請(qǐng)求調(diào)用的 API,幫助開(kāi)發(fā)者在后臺(tái)完成各類數(shù)據(jù)分析、管理和查詢等操作。如 getAccessToken,code2Session 等。

access_token

access_token 是小程序全局唯一后臺(tái)接口調(diào)用憑據(jù),調(diào)用絕大多數(shù)后臺(tái)接口時(shí)都需使用。開(kāi)發(fā)者可以通過(guò) getAccessToken 接口獲取并進(jìn)行妥善保存。

為了 access_token 的安全性,后端 API 不能直接在小程序內(nèi)通過(guò) wx.request 調(diào)用,即 api.weixin.qq.com 不能被配置為服務(wù)器域名。開(kāi)發(fā)者應(yīng)在后端服務(wù)器使用getAccessToken獲取 access_token,并調(diào)用相關(guān) API;

請(qǐng)求參數(shù)說(shuō)明

  • 對(duì)于 GET 請(qǐng)求,請(qǐng)求參數(shù)應(yīng)以 QueryString 的形式寫在 URL 中。
  • 對(duì)于 POST 請(qǐng)求,部分參數(shù)需以 QueryString 的形式寫在 URL 中(一般只有 access_token,如有額外參數(shù)會(huì)在文檔里的 URL 中體現(xiàn)),其他參數(shù)如無(wú)特殊說(shuō)明均以 JSON 字符串格式寫在 POST 請(qǐng)求的 body 中。

返回參數(shù)說(shuō)明

注意:當(dāng)API調(diào)用成功時(shí),部分接口不會(huì)返回 errcode 和 errmsg,只有調(diào)用失敗時(shí)才會(huì)返回。


消息推送

接入微信小程序消息推送服務(wù),可以兩種方式選擇其一:

  1. 開(kāi)發(fā)者服務(wù)器接收消息推送
  2. 云函數(shù)接收消息推送

開(kāi)發(fā)者服務(wù)器接收消息推送

開(kāi)發(fā)者需要按照如下步驟完成:

  1. 填寫服務(wù)器配置
  2. 驗(yàn)證服務(wù)器地址的有效性
  3. 據(jù)接口文檔實(shí)現(xiàn)業(yè)務(wù)邏輯,接收消息和事件

第一步:填寫服務(wù)器配置

登錄小程序后臺(tái)后,在「開(kāi)發(fā)」-「開(kāi)發(fā)設(shè)置」-「消息推送」中,管理員掃碼啟用消息服務(wù),填寫服務(wù)器地址(URL)、令牌(Token) 和 消息加密密鑰(EncodingAESKey)等信息。

  • URL: 開(kāi)發(fā)者用來(lái)接收微信消息和事件的接口 URL。開(kāi)發(fā)者所填寫的URL 必須以 http:// 或 https:// 開(kāi)頭,分別支持 80 端口和 443 端口。
  • Token: 可由開(kāi)發(fā)者可以任意填寫,用作生成簽名(該 Token 會(huì)和接口 URL 中包含的 Token 進(jìn)行比對(duì),從而驗(yàn)證安全性)。
  • EncodingAESKey: 由開(kāi)發(fā)者手動(dòng)填寫或隨機(jī)生成,將用作消息體加解密密鑰。

同時(shí),開(kāi)發(fā)者可選擇消息加解密方式:明文模式(默認(rèn))、兼容模式和安全模式。可以選擇消息數(shù)據(jù)格式:XML 格式(默認(rèn))或 JSON 格式。

模式的選擇與服務(wù)器配置在提交后都會(huì)立即生效,請(qǐng)開(kāi)發(fā)者謹(jǐn)慎填寫及選擇。切換加密方式和數(shù)據(jù)格式需要提前配置好相關(guān)代碼,詳情請(qǐng)參考 消息加解密說(shuō)明。

第二步:驗(yàn)證消息的確來(lái)自微信服務(wù)器

開(kāi)發(fā)者提交信息后,微信服務(wù)器將發(fā)送GET請(qǐng)求到填寫的服務(wù)器地址URL上,GET請(qǐng)求攜帶參數(shù)如下表所示:

參數(shù) 描述
signature 微信加密簽名,signature結(jié)合了開(kāi)發(fā)者填寫的token參數(shù)和請(qǐng)求中的timestamp參數(shù)、nonce參數(shù)。
timestamp 時(shí)間戳
nonce 隨機(jī)數(shù)
echostr 隨機(jī)字符串

開(kāi)發(fā)者通過(guò)檢驗(yàn) signature 對(duì)請(qǐng)求進(jìn)行校驗(yàn)(下面有校驗(yàn)方式)。若確認(rèn)此次 GET 請(qǐng)求來(lái)自微信服務(wù)器,請(qǐng)?jiān)瓨臃祷?echostr 參數(shù)內(nèi)容,則接入生效,成為開(kāi)發(fā)者成功,否則接入失敗。加密/校驗(yàn)流程如下:

  1. 將token、timestamp、nonce三個(gè)參數(shù)進(jìn)行字典序排序
  2. 將三個(gè)參數(shù)字符串拼接成一個(gè)字符串進(jìn)行sha1加密
  3. 開(kāi)發(fā)者獲得加密后的字符串可與signature對(duì)比,標(biāo)識(shí)該請(qǐng)求來(lái)源于微信

驗(yàn)證URL有效性成功后即接入生效,成為開(kāi)發(fā)者。

檢驗(yàn)signature的PHP示例代碼:

private function checkSignature()
{
    $signature = $_GET["signature"];
    $timestamp = $_GET["timestamp"];
    $nonce = $_GET["nonce"];

    $token = TOKEN;
    $tmpArr = array($token, $timestamp, $nonce);
    sort($tmpArr, SORT_STRING);
    $tmpStr = implode( $tmpArr );
    $tmpStr = sha1( $tmpStr );

    if ($tmpStr == $signature ) {
        return true;
    } else {
        return false;
    }
}

PHP示例代碼下載:下載

第三步:接收消息和事件

當(dāng)某些特定的用戶操作引發(fā)事件推送時(shí)(如用戶向小程序客服發(fā)送消息、或者進(jìn)入會(huì)話等情況),微信服務(wù)器會(huì)將消息(或事件)的數(shù)據(jù)包以 POST 請(qǐng)求發(fā)送到開(kāi)發(fā)者配置的 URL,開(kāi)發(fā)者可以依據(jù)自身業(yè)務(wù)邏輯進(jìn)行響應(yīng)。

微信服務(wù)器在將用戶的消息發(fā)給開(kāi)發(fā)者服務(wù)器地址后,微信服務(wù)器在五秒內(nèi)收不到響應(yīng)會(huì)斷掉連接,并且重新發(fā)起請(qǐng)求,總共重試三次。如果在調(diào)試中,發(fā)現(xiàn)用戶無(wú)法收到響應(yīng)的消息,可以檢查是否消息處理超時(shí)。關(guān)于重試的消息排重,有 msgid 的消息推薦使用 msgid 排重。事件類型消息推薦使用 FromUserName + CreateTime 排重。

服務(wù)器收到請(qǐng)求必須做出下述回復(fù),這樣微信服務(wù)器才不會(huì)對(duì)此作任何處理,并且不會(huì)發(fā)起重試,否則,將出現(xiàn)嚴(yán)重的錯(cuò)誤提示。詳見(jiàn)下面說(shuō)明:

  1. 直接回復(fù)success(推薦方式)
  2. 直接回復(fù)空串(指字節(jié)長(zhǎng)度為0的空字符串,而不是結(jié)構(gòu)體中content字段的內(nèi)容為空)
  3. 若接口文檔有指定返回內(nèi)容,應(yīng)按文檔說(shuō)明返回

對(duì)于客服消息,一旦遇到以下情況,微信會(huì)在小程序會(huì)話中向用戶下發(fā)系統(tǒng)提示“該小程序客服暫時(shí)無(wú)法提供服務(wù),請(qǐng)稍后再試”:

  1. 開(kāi)發(fā)者在5秒內(nèi)未回復(fù)任何內(nèi)容
  2. 開(kāi)發(fā)者回復(fù)了異常數(shù)據(jù)

如果開(kāi)發(fā)者希望增強(qiáng)安全性,可以在開(kāi)發(fā)者中心處開(kāi)啟消息加密,這樣,用戶發(fā)給小程序的消息以及小程序被動(dòng)回復(fù)用戶消息都會(huì)繼續(xù)加密,詳見(jiàn)消息加解密說(shuō)明。

云函數(shù)接收消息推送

需開(kāi)發(fā)者工具版本至少 1.02.1906252

開(kāi)通了云開(kāi)發(fā)的小程序可以使用云函數(shù)接收消息推送,目前僅支持客服消息推送。

接入步驟如下:

  1. 開(kāi)發(fā)者工具中填寫配置并上傳
  2. 云函數(shù)中處理消息

第一步:開(kāi)發(fā)者工具云開(kāi)發(fā)控制臺(tái)中增加配置

打開(kāi)云開(kāi)發(fā)控制臺(tái),到設(shè)置 tab 中選擇全局設(shè)置 - 添加消息推送配置。消息類型對(duì)應(yīng)收包的 MsgType,事件類型對(duì)應(yīng)收包的 Event,同一個(gè) <消息類型, 事件類型> 二元組只能推到一個(gè)環(huán)境的一個(gè)云函數(shù)。例如客服消息文本消息對(duì)應(yīng)的就是消息類型為 text,事件類型為空。具體值請(qǐng)查看各個(gè)消息的消息格式。

第二步:云函數(shù)中處理消息

云函數(shù)被觸發(fā)時(shí),其 event 參數(shù)即是接口所定義的 JSON 結(jié)構(gòu)的對(duì)象(統(tǒng)一 JSON 格式,不支持 XML 格式)。

以客服消息為例,接收到客服消息推送時(shí),event 結(jié)構(gòu)如下:

{
  "FromUserName": "ohl4L0Rnhq7vmmbT_DaNQa4ePaz0",
  "ToUserName": "wx3d289323f5900f8e",
  "Content": "測(cè)試",
  "CreateTime": 1555684067,
  "MsgId": "49d72d67b16d115e7935ac386f2f0fa41535298877_1555684067",
  "MsgType": "text"
}

此時(shí)可調(diào)用客服消息發(fā)送接口回復(fù)消息,一個(gè)簡(jiǎn)單的接收到消息后統(tǒng)一回復(fù) “收到” 的示例如下:

// 云函數(shù)入口文件
const cloud = require('wx-server-sdk')

cloud.init()

// 云函數(shù)入口函數(shù)
exports.main = async (event, context) => {
  const wxContext = cloud.getWXContext()
  
  await cloud.openapi.customerServiceMessage.send({
    touser: wxContext.OPENID,
    msgtype: 'text',
    text: {
      content: '收到',
    },
  })

  return 'success'
}


本文標(biāo)題:創(chuàng)新互聯(lián)小程序教程:微信小程序服務(wù)端能力
分享鏈接:http://m.5511xx.com/article/cccschi.html