微信api

微信api

主办单位 腾讯
网站名称 微信api
目录导航

定义

微信api即为公众平台消息接口为开发者提供了一种新的消息处理方式。

微信公众平台消息接口为开发者提供了一种新的消息处理方式。微信公众平台消息接口为开发者提供与用户进行消息交互的能力。对于成功接入消息接口的微信公众账号,当用户发消息给公众号,微信公众平台服务器会使用https请求对接入的网址进行消息推送,第三方服务器可通过响应包回复特定结构,从而达到回复消息的目的。

步骤

申请接口

点击申请,填写网址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位整型[2]

事件推送

事件推送只支持微信4.5版本,即将开放,敬请期待。

参数

描述

ToUserName

接收方微信号

FromUserName

发送方微信号,若为普通用户,则是一个OpenID

CreateTime

消息创建时间

MsgType

消息类型,event

Event

事件类型,有ENTER(进入会话)和LOCATION(地理位置)

Latitude

地理位置维度,事件类型为LOCATION的时存在

Longitude

地理位置经度,事件类型为LOCATION的时存在

Precision

地理位置精度,事件类型为LOCATION的时存在[2]

消息回复

对于每一个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

点击图文消息跳转链接[2]

注意事项

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;

}

}

}

?>[2]

相关百科
返回顶部
产品求购 求购