tousername第一中文源地址是什么是什么

共被编辑 2 次
微信公众平台接口回复中文乱码
define("TOKEN", "weixin");
$wechatObj = new wechatCallbackapiTest();
//$wechatObj-&valid();
$wechatObj-&responseMsg();
function youdaofanyi($keyword)
$url = '/openapi.do?keyfrom=coolrand&key=&type=data&doctype=json&version=1.1&q='.$
$f = new SaeFetchurl();
$output = $f-&fetch($url);
$message = json_decode($output,true);
$errorcode = $message['errorCode'];
$phonetic = $message['basic']['$phonetic'];
$explains1 = $message['basic']['explains']['0'];
$explains2 = $message['basic']['explains']['1'];
$explains3 = $message['basic']['explains']['2'];
$trans = $message['translation'][0];
return "哈哈"."\n".$trans."\n".$phonetic."\n".$explains1;
class wechatCallbackapiTest
public function valid()
$echoStr = $_GET["echostr"];
if($this-&checkSignature()){
echo $echoS
public function responseMsg()
$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
if (!empty($postStr)){
$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
$fromUsername = $postObj-&FromUserN
$toUsername = $postObj-&ToUserN
$keyword = trim($postObj-&Content);
$time = time();
$textTpl = "&xml&
&ToUserName&&![CDATA[%s]]&&/ToUserName&
&FromUserName&&![CDATA[%s]]&&/FromUserName&
&CreateTime&%s&/CreateTime&
&MsgType&&![CDATA[%s]]&&/MsgType&
&Content&&![CDATA[%s]]&&/Content&
&FuncFlag&0&FuncFlag&
if(!empty( $keyword ))
if((eregi("a",$keyword))){
$msgType = "text";
$contentStr = youdaofanyi($keyword);
$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
echo $resultS
$msgType = "text";
$contentStr = "欢迎";
$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
echo $resultS
echo "asd";
echo MESS;
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 ){
代码如上,可是回复中的中文会显示乱码,到底出什么问题了啊
微信公众平台接口回复中文乱码
define("TOKEN", "weixin");
$wechatObj = new wechatCallbackapiTest();
//$wechatObj-&valid();
$wechatObj-&responseMsg();
function youdaofanyi($keyword)
$url = ''.$
$f = new SaeFetchurl();
$output = $f-&fetch($url);
$message = json_decode($output,true);
$errorcode = $message['errorCode'];
$phonetic = $message\['basic'\]\['$phonetic'\];
$explains1 = $message\'basic']['explains'\;
$explains2 = $message\'basic']['explains'\;
$explains3 = $message\'basic']['explains'\;
$trans = $message\['translation'\]\[0\];
return "哈哈"."\n".$trans."\n".$phonetic."\n".$explains1;
class wechatCallbackapiTest
public function valid()
$echoStr = $_GET["echostr"];
if($this-&checkSignature()){
echo $echoS
public function responseMsg()
$postStr = $GLOBALS["HTTP_RAW_POST_DATA"];
if (!empty($postStr)){
$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
$fromUsername = $postObj-&FromUserN
$toUsername = $postObj-&ToUserN
$keyword = trim($postObj-&Content);
$time = time();
$textTpl = "&xml&
&ToUserName&&![CDATA[%s]]&&/ToUserName&
&FromUserName&&![CDATA[%s]]&&/FromUserName&
&CreateTime&%s&/CreateTime&
&MsgType&&![CDATA[%s]]&&/MsgType&
&Content&&![CDATA[%s]]&&/Content&
&FuncFlag&0&FuncFlag&
if(!empty( $keyword ))
$msgType = "text";
$contentStr = youdaofanyi($keyword);
$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
echo $resultS
$msgType = "text";
$contentStr = "欢迎";
$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
echo $resultS
echo "asd";
echo MESS;
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 ){
代码如上,可是回复中的中文会显示乱码,到底出什么问题了啊
举报理由:
推广(招聘、广告、SEO 等)方面的内容
带有人身攻击、辱骂、仇恨等违反条款的内容
与已有问题重复(请编辑该提问指向已有相同问题)
不友善内容
答非所问,不符合答题要求
其他原因(请补充说明)
补充说明:
扫扫下载 App
SegmentFault
一起探索更多未知扫描体验微信营销
|||服务专线:
define(&TOKEN&, &weixin&);
$wechatObj = new wechatCallbackapiTest();
//$wechatObj-&valid();
$wechatObj-&responseMsg();
function youdaofanyi($keyword)
$url = '/openapi.do?keyfrom=coolrand&key=&type=data&doctype=json&version=1.1&q='.$
$f = new SaeFetchurl();
$output = $f-&fetch($url);
$message = json_decode($output,true);
$errorcode = $message['errorCode'];
$phonetic = $message['basic']['$phonetic'];
$explains1 = $message['basic']['explains']['0'];
$explains2 = $message['basic']['explains']['1'];
$explains3 = $message['basic']['explains']['2'];
$trans = $message['translation'][0];
return &哈哈&.&\n&.$trans.&\n&.$phonetic.&\n&.$explains1;
class wechatCallbackapiTest
public function valid()
$echoStr = $_GET[&echostr&];
if($this-&checkSignature()){
echo $echoS
public function responseMsg()
$postStr = $GLOBALS[&HTTP_RAW_POST_DATA&];
if (!empty($postStr)){
$postObj = simplexml_load_string($postStr, 'SimpleXMLElement', LIBXML_NOCDATA);
$fromUsername = $postObj-&FromUserN
$toUsername = $postObj-&ToUserN
$keyword = trim($postObj-&Content);
$time = time();
$textTpl = &&xml&
&ToUserName&&![CDATA[%s]]&&/ToUserName&
&FromUserName&&![CDATA[%s]]&&/FromUserName&
&CreateTime&%s&/CreateTime&
&MsgType&&![CDATA[%s]]&&/MsgType&
&Content&&![CDATA[%s]]&&/Content&
&FuncFlag&0&FuncFlag&
if(!empty( $keyword ))
if((eregi(&a&,$keyword))){
$msgType = &text&;
$contentStr = youdaofanyi($keyword);
$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
echo $resultS
$msgType = &text&;
$contentStr = &欢迎&;
$resultStr = sprintf($textTpl, $fromUsername, $toUsername, $time, $msgType, $contentStr);
echo $resultS
echo &asd&;
echo MESS;
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 ){
?&代码如上,可是回复中的中文会显示乱码,到底出什么问题了啊
客服热线:
400-629-2949
体验微信营销微信公众平台后台接入简明指南 - 廖雪峰的官方网站
微信公众平台后台接入简明指南
/ Reads: 5408
现在微信越来越火了,公众平台也越来越火,作为一个公司或者网站,没有一个公众号,你都不好意思跟人打招呼,更别提递名片了。
但是,开通了公众平台,靠人工去响应用户消息,不但技术含量不够,而且,人少也忙不过来啊。
幸好微信公众平台有开发模式,只要接入了微信后台,用户消息会被发送到我们指定的服务器上,然后,由服务器向用户回复消息。这种方式,比提示用户“回复1看xxx,回复2看xxx”显得高端大气上档次。
开发模式需要准备网站并且接入微信后台,在微信目前文档不完善,接口不友好的情况下,本文将详细讲解如何快速接入微信公众平台。
首先,你需要有一个微信公众号,比如“中华诗词”。在往下继续阅读前,请自觉掏出手机,打开微信扫一扫:
其次,你需要有一个独立域名的网站,用来和微信服务器交互。
接入公众平台
登录微信公众平台后台后,点“功能”-“高级功能”-“开发模式”,进入开发模式,如果公众平台显示“尚未成为开发者”,就点击“成为开发者”:
同意协议后,填写URL和Token:
URL是指微信服务器向哪个URL发送消息,假设我们自己的服务器域名是,准备用/weixin来接收消息,就填写:
而Token是微信服务器和我们自己的服务器通信时验证身份用的,可以随便填写,但要注意保密。
然后点“提交”,一般来说会报错“URL超时”或者“没有正确返回echostr”,因为我们的后台还没有准备好,所以,第一步是接收微信后台发送的验证消息,微信后台会发送一个GET请求到上面的URL,并附带以下参数:
signature,timestamp,nonce,echostr
我们的服务器在接收到上述参数后,需要验证signature是否正确,验证方法是先对timestamp、nonce和token先排序,再拼接成一个字符串,计算出sha1,并和signature对比:
def check_signature(signature, timestamp, nonce):
L = [timestamp, nonce, token]
s = L[0] + L[1] + L[2]
return hashlib.sha1(s).hexdigest() == signature
public static boolean check_signature(signature, timestamp, nonce) {
String[] arr = new String[] { timestamp, nonce, token };
Arrays.sort(arr);
String s = arr[0] + arr[1] + arr[2];
md = MessageDigest.getInstance(&SHA-1&);
byte[] digest = md.digest(s.getBytes(&utf-8&));
return signature == bytes2HexString(digest);
注意token不是微信服务器发过来的,而是我们自己写死的一个常量,就是在微信后台填写的Token。
如果计算的sha1和微信传过来的signature相等,说明这个请求确实是微信后台发过来的,如果是别人伪造的请求,由于他不知道token,所以,无法计算出正确的signature。
要防止第三方通过监听发动replay攻击,还需要验证timestamp和nonce,这个以后再讨论。
如果signature计算无误,就把微信后台传过来的echostr原封不动地传回去,这样,就可以通过验证,成为开发者。
在确保开发模式打开的情况下,微信后台会把用户消息发到我们的服务器上,也就是URL:/weixin:
微信后台发送消息是一个POST请求,但和普通的POST请求不同的是,首先,URL会带上signature、timestamp、nonce这3个参数:
POST /weixin?signature=xxx&timestamp=123456&nonce=123
然后,HTTP请求的BODY是一个不规范的XML:
&ToUserName&&![CDATA[toUser]]&&/ToUserName&
&FromUserName&&![CDATA[fromUser]]&&/FromUserName&
&CreateTime&&/CreateTime&
&MsgType&&![CDATA[text]]&&/MsgType&
&Content&&![CDATA[this is a test]]&&/Content&
&MsgId&3456&/MsgId&
我们自己的服务器只需要处理该XML,然后,向微信返回一个类似如下的XML:
&ToUserName&&![CDATA[toUser]]&&/ToUserName&
&FromUserName&&![CDATA[fromUser]]&&/FromUserName&
&CreateTime&&/CreateTime&
&MsgType&&![CDATA[text]]&&/MsgType&
&Content&&![CDATA[你好]]&&/Content&
就可以完成消息的回复。微信后台要求必须在5秒内回复,最多重试3次,否则我们自己的回复消息就到达不了用户的手机了。如果我们自己的服务器无法在5秒内回复,就回复一个空字符串,告诉微信服务器,不用重试了,这个消息处理不了,不给用户回复了。
上面的交互逻辑看起来很简单,但实际上坑有很多。
首先,微信服务器发送的POST请求根本就不符合HTTP规范。原则上POST请求不应该在URL上附带参数,但微信后台偏偏要这么干,这就让很多编程语言的标准框架无法获取到POST参数,因为标准的POST参数是从HTTP BODY中解析的。
所以,从POST获取URL参数就需要用到更底层的代码。比如,在Python中,必须通过WSGI的environ字典获取,并且自己来解析:
environ = ...
qs = environ.get('query_string', '')
q = urlparse.parse_qs(qs)
signature = q['signature'][0]
timestamp = q['timestamp'][0]
nonce = q['nonce'][0]
# TODO: check signature...
在Java中,用HttpServletRequest在POST模式下别想用getParameter()拿到URL参数,必须用getQueryString()然后自己想办法解析字符串:
String qs = request.getQueryString();
Map&String, String& map = parse(qs);
// TODO: check signature...
然后,我们再讨论如何读取微信后台发过来的XML。在Python中,需要从environ读取原始的wsgi.input流:
fp = environ['wsgi.input']
在Java中,需要从HttpServletRequest中获取Reader流:
Reader reader = request.getReader();
如果有乱码,写一个EncodingFilter把Request强制设置为UTF-8编码:
public class EncodingFilter implements Filter {
public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throws IOException, ServletException {
req.setCharacterEncoding(&UTF-8&);
resp.setCharacterEncoding(&UTF-8&);
chain.doFilter(req, resp);
public void init(FilterConfig config) throws ServletException {}
public void destroy() {}
不需要读取为字符串,只要有了流就可以解析XML了,建议用SAX解析,最终我们应该得到微信的XML中传过来的几个值:
ToUserName: 'abc'
FromUserName: 'xyz'
CreateTime: ';
MsgType: 'text'
Content: '用户发的消息'
根据MsgType我们可以判断消息是文本、语音、图片、位置还是视频,然后,构造一个XML回复给微信后台,如果一切顺利,微信后台就把我们的消息发给用户。
目前我们只讨论如何回复文本消息,只需构造如下的XML:
&ToUserName&&![CDATA[xyz]]&&/ToUserName&
&FromUserName&&![CDATA[abc]]&&/FromUserName&
&CreateTime&&/CreateTime&
&MsgType&&![CDATA[text]]&&/MsgType&
&Content&&![CDATA[你好]]&&/Content&
在回复的XML中,把接收的ToUserName和FromUserName交换,这两个字符串都是用户ID(公众号本身也是一个用户ID),CreateTime是以秒为单位的UNIX时间戳,计算如下:
CreateTime = int(time.time())
long CreateTime = System.currentTimeMillis() / 1000;
MsgType仍是text,Content就是我们自动回复的消息,注意不要超过600个字符。
回复的时候,需要注意,一是最好明确地设置Content-Type: text/xml,二是XML的编码必须是UTF-8,否则,回复的消息就会出现乱码。
如何创建回复XML?由于该XML结构相当简单,所以无需动用任何XML接口,直接拼接字符串最简单快速。
最后,把代码部署到服务器,记住把接收的参数和XML,以及自己生成的XML在log中打印出来,一边看log,一边用手机端的微信来调试。只要调通了一种接口,其他接口参考微信文档就很容易开发了:
目前,微信公众平台的API还有很多限制,比如没有每天自动群发消息的API,要回复图文等多媒体消息需要V认证等等。
微信和微信公众平台虽然产品很先进,但后台API设计得确实不咋地。由于API是给开发人员使用的,所以,设计一个好的API要从开发人员的角度出发。与其使用笨重的XML,不如使用更符合Web潮流的JSON。而且,没有必要把验证单独用GET区分,完全可以全部使用POST方式,在JSON中把所有信息全部包括,以action和data来区分消息类型和数据,例如,验证服务器:
&signature&: &xxx&,
&timestamp&: 123456,
&nonce&: &xxx&,
&action&: &verify&,
&echostr&: &echo&
发送消息:
&signature&: &xxx&,
&timestamp&: 123456,
&nonce&: &xxx&,
&action&: &msg&,
&id&: &123456&,
&type&: &text&,
&from&: &user-abc&,
&to&: &user-xyz&,
&create_time&: 1234567,
&content&: &blablabla...&
回复消息:
&action&: &msg&,
&type&: &text&,
&from&: &user-xyz&,
&to&: &user-abc&,
&create_time&: 1234567,
&content&: &reply to...&
这样设计的API,各种编程语言都能处理,而且处理逻辑更简单,速度更快。
Make a Comment
Sign In to Make a Comment
You can sign in directly without register:
You need authorize to allow connect to your social passport for the first time.
WARNING: You are using an old browser that does not support HTML5.
Please choose a modern browser ( /
/ ) to get a good experience.微信公众账号高级接口使用小结
Category:&&&& Time: 19:22 &&&&点击:
  2013年6月份开始,就陆陆续续的研究了一下微信公众账号的使用,整理了一篇《关于微信公众平台的调研说明》的文档。文档从微信公众账号的注册、设置,到微信公众账号平台管理的各个部分,都进行了介绍(微信升级之后,现在微信公众账号平台的界面可能和文档中有所不同,但基本上通过这个文档,也知道怎么去使用)。2013年11月份,对微信公众账号进行认证,另外得到了9个开放的接口,现将9个接口应用过程进行小结一下,文档中的内容大部分来自于官方资料,另外加上了一些我个人应用过程中的一些理解,如有不正确的地方,欢迎大家指出。  
1.语音识别  用户给您的微信公众账号发送语音消息,微信服务器会先对语音消息进行识别,然后将识别出的文本内容和语音发送给您的微信公众账号的后台服务器。  发送方不带语音识别功能的XML如下所示:
&ToUserName&&![CDATA[toUser]]&&/ToUserName&
&FromUserName&&![CDATA[User]]&&/FromUserName&
&CreateTime&&/CreateTime&
&MsgType&&![CDATA[voice]]&&/MsgType&
&MediaId&&![CDATA[media_id]]&&/MediaId&
&Format&&![CDATA[Format]]&&/Format&
&MsgId&3456&/MsgId&
  发送方带语音识别功能的XML如下所示:
&ToUserName&&![CDATA[toUser]]&&/ToUserName&
&FromUserName&&![CDATA[User]]&&/FromUserName&
&CreateTime&&/CreateTime&
&MsgType&&![CDATA[voice]]&&/MsgType&
&MediaId&&![CDATA[media_id]]&&/MediaId&
&Format&&![CDATA[Format]]&&/Format&
&Recognition&&![CDATA[微信团队]]&&/Recognition&
&MsgId&3456&/MsgId&
  从上面可以看出,微信服务器在推送的语音消息XML数据包中,增加了一个Recongnition字段,该字段的内容是语音识别出的文本内容。  【参数说明】:  
ToUserName
开发者微信号(也就是你的微信公众号)
FromUserName
发送方帐号(一个OpenID,用户的账号)
CreateTime
消息创建时间 (整型)
语音为voice
语音消息媒体id,可以调用多媒体文件接口拉取该媒体
语音格式:amr
Recognition
语音识别结果,UTF8编码
消息id,64位整型
  【注】:语音识别功能可以在我的服务页面的高级接口栏目,通过开关来控制开启和关闭。如下图所示:2.客服接口  当用户主动发消息给您的微信公众号的时候(包括发送信息、点击自定义菜单、关注等),微信服务器将会把消息数据推送给开发者,开发者在一段时间内(目前为24小时)可以调用客服消息接口,通过POST一个JSON数据包来发送消息(现支持文本、、图文、语音、视频、音乐)给普通用户,在24小时内不限制发送次数。此接口主要用于客服等有人工消息处理环节的功能,方便开发者为用户提供更加优质的服务。  与之相对应的是非认证账号的&发送被动响应消息&接口,&发送被动响应消息&接口有一个缺陷就是:微信服务器在五秒内收不到响应会断掉连接。也就是说,微信服务器只保持5秒的连接,如果五秒没有回复消息,那么发起该会话请求的用户就会收不到回复了。3.OAuth2.0网页授权  如果用户在微信中(Web微信除外)访问公众号的第三方网页,公众号开发者可以通过此接口获取当前用户基本信息(包括昵称、性别、城市、国家)。利用用户信息,可以实现体验优化、用户来源统计、帐号绑定、用户身份鉴权等功能。【注意】:&获取用户基本信息接口(后续介绍)是在用户和公众号产生消息交互时,才能根据用户OpenID获取用户基本信息,而网页授权的方式获取用户基本信息,则无需消息交互,只是用户进入到公众号的网页,就可弹出请求用户授权的界面,用户授权后,就可获得其基本信息(此过程甚至不需要用户已经关注公众号。)&  【注意】:在微信公众号请求用户网页授权之前,开发者需要先到公众平台网站的我的服务页中配置授权回调域名。请注意,这里填写的域名不要加http://,如下所示(这里填写的是演示地址):  具体而言,网页授权流程分为四步:  第一步:用户同意授权,获取code。参考链接形式:https://open./connect/oauth2/authorize?appid=wxacfdc259&redirect_uri=http%3A%2F%&response_type=code&scope=snsapi_userinfo&state=STATE#wechat_redirect (注意:appid应该输入您的微信公众账号的appid,该链接不可以在浏览器中打开。实际使用的时候,需要把redirect_uri修改为您要跳转的地址,目前我写的是,修改的时候,同样要修改上面所示设置的授权回调页面域名)。在微信中打开这个授权链接,会进入到如下图所示页面:  单击取消或允许按钮,都会进入到上面设置的回调页面。如果用户同意授权,页面将跳转至 redirect_uri/?code=CODE&state=STATE。若用户禁止授权,则重定向后不会带上code参数,仅会带上state参数redirect_uri?state=STATE  【code说明 】:  code作为换取access_token的票据,每次用户授权带上的code将不一样,code只能使用一次,5分钟未被使用自动过期。  【参数说明】:
公众号的唯一标识
redirect_uri
授权后重定向的回调链接地址
response_type
返回类型,请填写code
应用授权作用域,snsapi_base (不弹出授权页面,直接跳转,只能获取用户openid),snsapi_userinfo (弹出授权页面,可通过openid拿到昵称、性别、所在地。并且,即使在未关注的情况下,只要用户授权,也能获取其信息)
重定向后会带上state参数,开发者可以填写任意参数值
#wechat_redirect
直接在微信打开链接,可以不填此参数。做页面302重定向时候,必须带此参数
  第二步:通过code换取网页授权access_token。获取code后,请求以下链接获取access_token: https://api./sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code  【注意】:这里通过code换取的网页授权access_token,与基础支持中的access_token不同。如果网页授权的作用域为snsapi_base,则本步骤中获取到网页授权access_token的同时,也获取到了openid,snsapi_base式的网页授权流程即到此为止。  【参数说明】:
公众号的唯一标识
公众号的appsecret
填写第一步获取的code参数
grant_type
填写为authorization_code
  【返回说明】:  正确时返回的JSON数据包如下:
"access_token":"ACCESS_TOKEN",
"expires_in":7200,
"refresh_token":"REFRESH_TOKEN",
"openid":"OPENID",
"scope":"SCOPE"
  【参数说明】:
access_token
网页授权接口调用凭证,注意:此access_token与基础支持的access_token不同
expires_in
access_token接口调用凭证超时时间,单位(秒)
refresh_token
用户刷新access_token
用户唯一标识,请注意,在未关注公众号时,用户访问公众号的网页,也会产生一个用户和公众号唯一的OpenID
用户授权的作用域,使用逗号(,)分隔
  错误时微信会返回JSON数据包如下(示例为Code无效错误):
{"errcode":40029,"errmsg":"invalid code"}
  第三步:刷新access_token(如果需要)。由于access_token拥有较短的有效期,当access_token超时后,可以使用refresh_token进行刷新,refresh_token拥有较长的有效期(7天、30天、60天、90天),当refresh_token失效的后,需要用户重新授权。  获取第二步的refresh_token后,请求以下链接获取access_token: https://api./sns/oauth2/refresh_token?appid=APPID&grant_type=refresh_token&refresh_token=REFRESH_TOKEN  【参数说明】:
公众号的唯一标识
grant_type
填写为refresh_token
refresh_token
填写通过access_token获取到的refresh_token参数
  【返回说明】:  正确时返回的JSON数据包如下:
"access_token":"ACCESS_TOKEN",
"expires_in":7200,
"refresh_token":"REFRESH_TOKEN",
"openid":"OPENID",
"scope":"SCOPE"
  【参数说明】:
access_token
网页授权接口调用凭证,注意:此access_token与基础支持的access_token不同
expires_in
access_token接口调用凭证超时时间,单位(秒)
refresh_token
用户刷新access_token
用户唯一标识
用户授权的作用域,使用逗号(,)分隔
  错误时微信会返回JSON数据包如下(示例为Code无效错误):
{"errcode":40029,"errmsg":"invalid code"}
  第四步:拉取用户信息(需scope为 snsapi_userinfo)。如果网页授权作用域为snsapi_userinfo,则此时开发者可以通过access_token和openid拉取用户信息了。  【请求方法】:  http:GET(请使用https协议)  https://api./sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID  【参数说明】:
access_token
网页授权接口调用凭证,注意:此access_token与基础支持的access_token不同
用户的唯一标识
  【返回说明】:  正确时返回的JSON数据包如下:
"openid":" OPENID",
" nickname": NICKNAME,
"sex":"1",
"province":"PROVINCE"
"city":"CITY",
"country":"COUNTRY",
"headimgurl": "/mmopen/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5WKSYVY0ChQKkiaJSgQ1dZuTOgvLLrhJbERQQ4eMsv84eavHiaiceqxibJxCfHe/46",
"privilege":[
"PRIVILEGE1"
"PRIVILEGE2"
  【参数说明】:
用户的唯一标识
用户的性别,值为1时是男性,值为2时是女性,值为0时是未知
用户个人资料填写的省份
普通用户个人资料填写的城市
国家,如中国为CN
headimgurl
用户头像,最后一个数值代表正方形头像大小(有0、46、64、96、132数值可选,0代表640*640正方形头像),用户没有头像时该项为空
用户特权信息,json 数组,如微信沃卡用户为(chinaunicom)
  错误时微信会返回JSON数据包如下(示例为openid无效):
{"errcode":40003,"errmsg":" invalid openid "}
4. 生成带参数二维码  使用该接口可以获得多个带不同场景值的二维码,用户扫描后,公众号可以接收到推送(说的简单点,意思就是可以通过这个接口,产生一个二维码,然后用户可以通过扫描这个二维码,进入到公众账号信息页面(未关注公众账号的用户)或公众账号的会话页面(关注了公众账号的用户))。  目前有2种类型的二维码,分别是临时二维码和永久二维码,前者有过期时间,最大为1800秒,但能够生成较多数量,后者无过期时间,数量较少(目前参数只支持1--1000)。两种二维码分别适用于帐号绑定、用户来源统计等场景。  用户扫描带场景值二维码时,可能推送以下两种:
如果用户还未关注公众号,则用户可以关注公众号,关注后微信会将带场景值关注推送给开发者。
如果用户已经关注公众号,在用户扫描后会自动进入会话,微信也会将带场景值扫描推送给开发者。
  获取带参数的二维码的过程包括两步,首先创建二维码ticket,然后凭借ticket到指定URL换取二维码。  第一步:创建二维码ticket。  【请求说明】:
  http请求方式: POST
  URL: https://api./cgi-bin/qrcode/create?access_token=TOKEN
  POST数据格式:json
  POST数据例子:{"expire_seconds": 1800, "action_name": "QR_SCENE", "action_info": {"scene": {"scene_id": 123}}}
  【参数说明】:
expire_seconds
该二维码有效时间,以秒为单位。 最大不超过1800。
action_name
二维码类型,QR_SCENE为临时,QR_LIMIT_SCENE为永久
action_info
二维码详细信息
场景值ID,临时二维码时为32位整型,永久二维码时最大值为1000
  【返回说明】:  正确的Json返回结果:
{"ticket":"gQG28DoAAAAAAAAAASxodHRwOi8vd2VpeGluLnFxLmNvbS9xL0FuWC1DNmZuVEhvMVp4NDNMRnNRAAIEesLvUQMECAcAAA==","expire_seconds":1800}
  【参数说明】:
获取的二维码ticket,凭借此ticket可以在有效时间内换取二维码。
expire_seconds
二维码的有效时间,以秒为单位。最大不超过1800。
  错误的Json返回示例:
{"errcode":40013,"errmsg":"invalid appid"}
  第二步:通过ticket换取二维码。
  【请求说明】:
  HTTP GET请求(请使用https协议)
  https://mp./cgi-bin/showqrcode?ticket=TICKET
  【返回说明】:  ticket正确情况下,http 返回码是200,是一张,可以直接展示或者。如下图所示:  错误情况下(如ticket非法)返回HTTP错误码404。5. 获取用户地理位置  【注意】:要使用获取用户地理位置功能,首先要在我的服务----高级接口中,开启获取用户地理位置按钮,单击按钮,会弹出如下所示页面:  可以根据需要自行选择获取地理位置的模式。  开通了上报地理位置接口的公众号,用户在关注后进入公众号会话时,会弹框让用户确认是否允许公众号使用其地理位置(如下图左所示)。弹框只在关注后出现一次,用户以后可以在公众号详情页面进行操作(如下图右所示)。& & & & & & & & & & & & & & & & & & & & & & & & && & & & & &  用户同意上报地理位置后,每次进入公众号会话时,都会在进入时上报地理位置,或在进入会话后每5秒上报一次地理位置,上报地理位置以推送XML数据包到开发者填写的URL来实现。  推送XML数据包示例:
&ToUserName&&![CDATA[toUser]]&&/ToUserName&
&FromUserName&&![CDATA[User]]&&/FromUserName&
&CreateTime&&/CreateTime&
&MsgType&&![CDATA[event]]&&/MsgType&
&Event&&![CDATA[LOCATION]]&&/Event&
&Latitude&23.137466&/Latitude&
&Longitude&113.352425&/Longitude&
&Precision&119.385040&/Precision&
  【参数说明】:
ToUserName
开发者微信号
FromUserName
发送方帐号(一个OpenID)
CreateTime
消息创建时间 (整型)
消息类型,event
类型,LOCATION
地理位置纬度
地理位置经度
地理位置精度
6. 获取用户基本信息  在关注者与公众号产生消息交互后,公众号可获得关注者的OpenID(加密后的微信号,每个用户对每个公众号的OpenID是唯一的。对于不同公众号,同一用户的openid不同)。公众号可通过本接口来根据OpenID获取用户基本信息,包括昵称、头像、性别、所在城市、语言和关注时间。  【接口调用请求说明】:
http请求方式: GET
https://api./cgi-bin/user/info?access_token=ACCESS_TOKEN&openid=OPENID
  【参数说明】:
access_token
调用接口凭证
普通用户的标识,对当前公众号唯一
  【返回说明】:  正常情况下,微信会返回下述JSON数据包给公众号:
"subscribe": 1,
"openid": "o6_bmjrPTlm6_2sgVt7hMZOPfL2M",
"nickname": "Band",
"sex": 1,
"language": "zh_CN",
"city": "广州",
"province": "广东",
"country": "中国",
"headimgurl": "/mmopen/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5WKSYVY0ChQKkiaJSgQ1dZuTOgvLLrhJbERQQ4eMsv84eavHiaiceqxibJxCfHe/0",
"subscribe_time":
  【参数说明】:
用户是否订阅该公众号标识,值为0时,代表此用户没有关注该公众号,拉取不到其余信息。
用户的标识,对当前公众号唯一
用户的昵称
用户的性别,值为1时是男性,值为2时是女性,值为0时是未知
用户所在城市
用户所在国家
用户所在省份
用户的语言,简体中文为zh_CN
headimgurl
用户头像,最后一个数值代表正方形头像大小(有0、46、64、96、132数值可选,0代表640*640正方形头像),用户没有头像时该项为空
subscribe_time
用户关注时间,为时间戳。如果用户曾多次关注,则取最后关注时间
  错误时微信会返回错误码等信息,JSON数据包示例如下(该示例为AppID无效错误):
{"errcode":40013,"errmsg":"invalid appid"}
7. 获取关注者列表  公众号可通过本接口来获取帐号的关注者列表,关注者列表由一串OpenID(加密后的微信号,每个用户对每个公众号的OpenID是唯一的)组成。一次拉取调用最多拉取10000个关注者的OpenID,可以通过多次拉取的方式来满足需求。  【接口调用请求说明】:
http请求方式: GET(请使用https协议)
https://api./cgi-bin/user/get?access_token=ACCESS_TOKEN&next_openid=NEXT_OPENID
  【参数说明】:
access_token
调用接口凭证
next_openid
第一个拉取的OPENID,不填默认从头开始拉取
  【返回说明】:  正确时返回JSON数据包:
{"total":2,"count":2,"data":{"openid":["","OPENID1","OPENID2"]},"next_openid":"NEXT_OPENID"}
  【参数说明】:
关注该公众账号的总用户数
拉取的OPENID个数,最大值为10000
列表数据,OPENID的列表
next_openid
拉取列表的后一个用户的OPENID
  错误时返回JSON数据包(示例为无效AppID错误):
{"errcode":40013,"errmsg":"invalid appid"}
  【附】:当公众号关注者数量超过10000时,可通过填写next_openid的值,从而多次拉取列表的方式来满足需求。具体而言,就是在调用接口时,将上一次调用得到的返回中的next_openid值,作为下一次调用中的next_openid值。8. 用户分组接口  开发者可以使用接口,对公众平台的分组进行查询、创建、修改操作,也可以使用接口在需要时移动用户到某个分组。8.1查询分组  【接口调用请求说明】:
http请求方式: GET(请使用https协议)
https://api./cgi-bin/groups/get?access_token=ACCESS_TOKEN
  【参数说明】:
access_token
调用接口凭证
  【返回说明】:   正常时的返回JSON数据包示例:
"groups": [
"name": "未分组",
"count": 72596
"name": "黑",
"count": 36
  【参数说明】:
公众平台分组信息列表
分组id,由微信分配
分组名字,UTF8编码
分组内用户数量
8.2创建分组  一个公众账号,最多支持创建500个分组。  【 接口调用请求说明】:
http请求方式: POST(请使用https协议)
https://api./cgi-bin/groups/create?access_token=ACCESS_TOKEN
POST数据格式:json
POST数据例子:{"group":{"name":"test"}}
  【参数说明】:
access_token
调用接口凭证
分组名字(30个字符以内)
  【返回说明】:   正常时的返回JSON数据包示例:
"group": {
"id": 107,
"name": "test"
  【参数说明】:
分组id,由微信分配
分组名字,UTF8编码
  错误时的JSON数据包示例(该示例为AppID无效错误):
{"errcode":40013,"errmsg":"invalid appid"}
8.3修改分组名  【接口调用请求说明】:
http请求方式: POST(请使用https协议)
https://api./cgi-bin/groups/?access_token=ACCESS_TOKEN
POST数据格式:json
POST数据例子:{"group":{"id":108,"name":"test2_modify2"}}
  【参数说明】:
access_token
调用接口凭证
分组id,由微信分配
分组名字(30个字符以内)
  【返回说明】:   正常时的返回JSON数据包示例:
{"errcode": 0, "errmsg": "ok"}
  错误时的JSON数据包示例(该示例为AppID无效错误):
{"errcode":40013,"errmsg":"invalid appid"}
8.4移动用户分组  【接口调用请求说明】:
http请求方式: POST(请使用https协议)
https://api./cgi-bin/groups/members/?access_token=ACCESS_TOKEN
POST数据格式:json
POST数据例子:{"openid":"oDF3iYx0ro3_7jD4HFRDfrjdCM58","to_groupid":108}
  【参数说明】:
access_token
调用接口凭证
用户唯一标识符
to_groupid
  【返回说明 】:  正常时的返回JSON数据包示例:
{"errcode": 0, "errmsg": "ok"}
  错误时的JSON数据包示例(该示例为AppID无效错误):
{"errcode":40013,"errmsg":"invalid appid"}
9. 上传多媒体文件  公众号在使用接口时,对多媒体文件、多媒体消息的获取和调用等操作,是通过media_id来进行的。通过本接口,公众号可以上传或多媒体文件。  【注意】:每个多媒体文件(media_id)会在上传、用户发送到微信服务器3天后自动删除,以节省服务器资源。9.1上传多媒体文件  公众号可调用本接口来上传、语音、视频等文件到微信服务器,上传后服务器会返回对应的media_id,公众号此后可根据该media_id来获取多媒体。请注意,media_id是可复用的,调用该接口需http协议。  【接口调用请求说明】:
http请求方式: POST/FORM
http://file.api./cgi-bin/media/upload?access_token=ACCESS_TOKEN&type=TYPE
调用示例(使用curl命令,用FORM表单方式上传一个多媒体文件):
curl -F media=@test.jpg "http://file.api./cgi-bin/media/upload?access_token=ACCESS_TOKEN&type=TYPE"
  【参数说明】:
access_token
调用接口凭证
媒体文件类型,分别有(image)、语音(voice)、视频(video)和缩略图(thumb)
form-data中媒体文件标识,有filename、filelength、content-type等信息
  【返回说明】:  正确情况下的返回JSON数据包结果如下:
{"type":"TYPE","media_id":"MEDIA_ID","created_at":}
  【参数说明】:
媒体文件类型,分别有(image)、语音(voice)、视频(video)和缩略图(thumb,主要用于视频与音乐格式的缩略图)
媒体文件上传后,获取时的唯一标识
created_at
媒体文件上传时间戳
  错误情况下的返回JSON数据包示例如下(示例为无效媒体类型错误):
{"errcode":40004,"errmsg":"invalid media type"}
  【注意事项】  1).上传的多媒体文件有格式和大小限制,如下:
(image): 128K,支持JPG格式
语音(voice):256K,播放长度不超过60s,支持AMR格式
视频(video):1MB,支持MP4格式
缩略图(thumb):64KB,支持JPG格式
  2).媒体文件在后台保存时间为3天,即3天后media_id失效。9.2多媒体文件  公众号可调用本接口来获取多媒体文件。请注意,调用该接口需http协议。  【接口调用请求说明】:
http请求方式: GET
http://file.api./cgi-bin/media/get?access_token=ACCESS_TOKEN&media_id=MEDIA_ID
请求示例(示例为通过curl命令获取多媒体文件)
curl -I -G "http://file.api./cgi-bin/media/get?access_token=ACCESS_TOKEN&media_id=MEDIA_ID"
  【参数说明】:
access_token
调用接口凭证
媒体文件ID
  【返回说明】:  正确情况下的返回HTTP头如下:
HTTP/1.1 200 OK
Connection: close
Content-Type: image/jpeg
Content-disposition: filename="MEDIA_ID.jpg"
Date: Sun, 06 Jan :18 GMT
Cache-Control: no-cache, must-revalidate
Content-Length: 339721
curl -G "http://file.api./cgi-bin/media/get?access_token=ACCESS_TOKEN&media_id=MEDIA_ID"
  错误情况下的返回JSON数据包示例如下(示例为无效媒体ID错误):
{"errcode":40007,"errmsg":"invalid media_id"}
  《IOS设计模式浅析》
(责任编辑:admin)
百微是业内专业的软件外包公司
百微软件开发有限公司是百微科技下属的软件定制公司,专门致力于管理型软件的研究与开发的软件外包公司,同时也是经营OA系统的OA软件公司。凭借百微科技这一业内著名的软件外包公司的架构,我们有着优良的管理和技术资源,并坚持“求是、创新”的三微精神,以创新协作、脚踏实地的务实作风,百微软件外包公司为客户提供先进的管理理念和应用管理软件。
百微软件定制公司是由一支由博士、硕士、学士所组成的软件外包公司,集咨询、分析、设计、开发及实施为一体的强大队伍。百微软件定制公司公司一直与国内、省内信息化领域的专家保持密切联系,使百微软件外包公司以其先进的管理理念、优秀的设计方法、完善的系统功能,赢得了众多用户的青睐。
软件外包公司奉行“以科技促进步,以管理求发展”的宗旨,争创“一流技术、一流产品、一流服务”。 近年来,软件定制公司一直以软件的行业化作为产品的定位方向,结合特定行业的具体业务流程和特点,为ERP软件公司的客户提供最全面、功能最丰富的解决方案。目前已形成:物业管理软件、汽车货运管理软件、材料质量检测软件、产品检验与计量检定软件、企业管理软件等具有明显行业特色的软件产品。
作为应用管理软件提供商和软件外包公司,优质的服务是ERP软件公司对客户最好的承诺。ERP软件公司建立了顾问咨询部和售后服务部,我们的人员拥有丰富的咨询和实施经验的软件外包公司,确保软件外包公司和客户信息管理系统的成功。同时,我们同国内外著名管理咨询公司、软件外包公司、业界领先的软件开发公司建立了战略联盟合作关系,实现优势互补,共同发展。
7*24小时业务咨询
百微科技,业内领先的定制化软件开发公司,为您提供ERP系统及ERP软件最贴心的服务
ERP公司公司依托于华南理工大学现代制造信息系统研究中心,该中心隶属国家新型ERP开发公司,提供ERP开发公司及ERP定制公司顾问课程认证培训。百微ERP设计公司由精通ERP开发及设计的技术管理及新技术应用的高学历人员组成,目前ERP公司的主要咨询服务人员团队超过近百人,ERP软件公司的团队有博士学历人员3名、硕士学历人员12名。
做为百微ERP公司的金牌合作伙伴,我们一直致力于为国际和国内客户提供优质服务,百微ERP开发公司的专家顾问团队向众多企业提供了涵盖的管理咨询、IT规划、业务流程优化、信息系统实施、行业性信息系统方案开发、教育培训、专业人力资源租赁、运营外包及售后维护服务等全面的服务方案。
百微ERP开发公司是ERP行业内的核心伙伴ERP定制公司,2001年5月在大陆成立厦门ERP软件公司总部,全国CallCenter客服中心、全国ERP开发公司支持总部等。凭借多年来深厚的技术积累,现已成为两岸ERP定制公司领导厂商之一。
在ERP公司中,我们一直专注于管理软件的研发和技术服务,不断推陈出新,ERP软件公司陆续推出了一系列拥有自主知识产权的软件产品和行业解决方案。我们的ERP定制公司提供产品完善的售前演示、技术支持、实施培训、定制开发等,包含全国免费CallCenter接入技术咨询,以及ERP设计公司资深顾问的直接技术支持,以客户的具体需求和客户满意率为服务导向,以成为客户最可信赖的ERP实施公司为服务理念,以指导和协助企业管理信息化成功运转为服务宗旨,致力成为为客户提供优质而稳健的管理信息化软件产品和服务的ERP公司与ERP软件公司。
Copyright ©2011
百微信息科技 All Right Reserved
Powered by
ERP系统、ERP软件、OA办公系统、软件定制软件开发公司-上海百微信息科技

我要回帖

更多关于 veromoda中文是什么 的文章

 

随机推荐