微信api

微信公眾平台訊息接口為開發者提供了一種新的訊息處理方式。微信公眾平台訊息接口為開發者提供與用戶進行訊息互動的能力。對於成功接入訊息接口的微信公眾賬號,當用戶發訊息給公眾號,微信公眾平台伺服器會使用http請求對接入的網址進行訊息推送,第三方伺服器可通過回響包回復特定結構,從而達到回復訊息的目的。

定義

微信api即為公眾平台訊息接口為開發者提供了一種新的訊息處理方式。

微信公眾平台訊息接口為開發者提供了一種新的訊息處理方式。微信公眾平台訊息接口為開發者提供與用戶進行訊息互動的能力。對於成功接入訊息接口的微信公眾賬號,當用戶發訊息給公眾號,微信公眾平台伺服器會使用http請求對接入的網址進行訊息推送,第三方伺服器可通過回響包回復特定結構,從而達到回復訊息的目的。

步驟

申請接口

點擊申請,填寫網址url和token,其中token可由開發者可以任意填寫,用作生成簽名。

網址接入

公眾平台用戶提交信息後,微信伺服器將傳送GET請求到填寫的URL上,並且帶上四個參數:

參數

描述

signature

微信加密簽名

timestamp

時間戳

nonce

隨機數

echostr

隨機字元串

開發者通過檢驗signature對請求進行校驗(下面有校驗方式)。若確認此次GET請求來自微信伺服器,請原樣返回echostr參數內容,則接入生效,否則接入失敗。

signature結合了開發者填寫的token參數和請求中的timestamp參數、nonce參數。

加密/校驗流程:

1. 將token、timestamp、nonce三個參數進行字典序排序

2. 將三個參數字元串拼接成一個字元串進行sha1加密

3. 開發者獲得加密後的字元串可與signature對比,標識該請求來源於微信

訊息推送

當普通微信用戶向公眾賬號發訊息時,微信伺服器將POST該訊息到填寫的URL上。

訊息推送結構

文本訊息

參數

描述

ToUserName

開發者微信號

FromUserName

傳送方帳號(一個OpenID)

CreateTime

訊息創建時間 (整型)

MsgType

text

Content

文本訊息內容

MsgId

訊息id,64位整型

圖片訊息

參數

描述

ToUserName

開發者微信號

FromUserName

傳送方帳號(一個OpenID)

CreateTime

訊息創建時間 (整型)

MsgType

imane

PicUrl

圖片連結

MsgId

訊息id,64位整型

地理位置訊息

參數

描述

ToUserName

開發者微信號

FromUserName

傳送方帳號(一個OpenID)

CreateTime

訊息創建時間 (整型)

MsgType

location

Location_X

地理位置維度

Location_Y

地理位置精度

Scale

地圖縮放大小

Label

地理位置信息

MsgId

訊息id,64位整型

連結訊息

參數

描述

ToUserName

接收方微信號

FromUserName

傳送方微信號,若為普通用戶,則是一個OpenID

CreateTime

訊息創建時間

MsgType

訊息類型,link

Title

訊息標題

Description

訊息描述

Url

訊息連結

MsgId

訊息id,64位整型

事件推送

事件推送只支持微信4.5版本,即將開放,敬請期待。

參數

描述

ToUserName

接收方微信號

FromUserName

傳送方微信號,若為普通用戶,則是一個OpenID

CreateTime

訊息創建時間

MsgType

訊息類型,event

Event

事件類型,有ENTER(進入會話)和LOCATION(地理位置)

Latitude

地理位置維度,事件類型為LOCATION的時存在

Longitude

地理位置經度,事件類型為LOCATION的時存在

Precision

地理位置精度,事件類型為LOCATION的時存在

訊息回復

對於每一個POST請求,開發者在回響包中返回特定xml結構,對該訊息進行回響(現支持回復文本、圖文、語音、視頻、音樂和對收到的訊息進行星標操作)。

微信伺服器在五秒內收不到回響會斷掉連線。

回復xml結構如下:

回復文本訊息

參數

描述

ToUserName

接收方帳號(收到的OpenID)

FromUserName

開發者微信號

CreateTime

訊息創建時間

MsgType

text

Content

回復的訊息內容

FuncFlag

位0x0001被標誌時,星標剛收到的訊息。

回複音樂訊息

參數

描述

ToUserName

接收方帳號(收到的OpenID)

FromUserName

開發者微信號

CreateTime

訊息創建時間

MsgType

music

MusicUrl

音樂連結

HQMusicUrl

高質量音樂連結,WIFI環境優先使用該連結播放音樂

FuncFlag

位0x0001被標誌時,星標剛收到的訊息。

回復圖文訊息

參數

描述

ToUserName

接收方帳號(收到的OpenID)

FromUserName

開發者微信號

CreateTime

訊息創建時間

MsgType

news

ArticleCount

圖文訊息個數,限制為10條以內

Articles

多條圖文訊息信息,默認第一個item為大圖

Title

圖文訊息標題

Description

圖文訊息描述

PicUrl

圖片連結,支持JPG、PNG格式,較好的效果為大圖640*320,小圖80*80

Url

點擊圖文訊息跳轉連結

注意事項

1.用戶OpenID對一個公眾號是固定的串

2.請使用80連線埠

3.用戶關注公眾號,微信公眾平台伺服器推送一條內容為Hello2BizUser的文本訊息到第三方伺服器

發展趨勢

1.商務類APP

2.移動化的企業辦公管理

3.年輕的成員將成為企業APP強有力的推動者

示例代碼

<?php

/**

* wechat php test

*/

//define your token

define("TOKEN", "weixin");

$wechatObj = new wechatCallbackapiTest();

$wechatObj->valid();

class wechatCallbackapiTest

{

public function valid()

{

$echoStr = $_GET["echostr"];

//valid signature , option

if($this->checkSignature()){

echo $echoStr;

exit;

}

}

public function responseMsg()

{

//get post data, May be due to the different environments

$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];

//extract post data

if (!empty($postStr)){

$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);

$fromUsername = $postObj->FromUserName;

$toUsername = $postObj->ToUserName;

$keyword = trim($postObj->Content);

$time = time();

$textTpl = "";

if(!empty( $keyword ))

{

$msgType = "text";

$contentStr = "Welcome to wechat world!";

$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);

echo $resultStr;

}else{

echo "Input something...";

}

}else {

echo "";

exit;

}

}

private function checkSignature()

{

$signature = $_GET["signature"];

$timestamp = $_GET["timestamp"];

$nonce = $_GET["nonce"];

$token = TOKEN;

$tmpArr = array($token, $timestamp, $nonce);

sort($tmpArr);

$tmpStr = implode( $tmpArr );

$tmpStr = sha1( $tmpStr );

if( $tmpStr == $signature ){

return true;

}else{

return false;

}

}

}

?>

相關詞條

相關搜尋

熱門詞條

聯絡我們