gogogo
管理员
管理员
  • UID25
  • 粉丝0
  • 关注0
  • 发帖数1377
阅读:6883回复:6

微信公众平台开发 文档

楼主#
更多 发布于:2020-02-19 21:41
1、微信公众平台开发是指为微信公众号进行业务开发,为移动应用、PC端网站、公众号第三方平台(为各行各业公众号运营者提供服务)的开发,请前往微信开放平台接入。
2、在申请到认证公众号之前,你可以先通过测试号申请系统,快速申请一个接口测试号,立即开始接口测试开发。
3、在开发过程中,可以使用接口调试工具来在线调试某些接口。
4、每个接口都有每日接口调用频次限制,可以在公众平台官网-开发者中心处查看具体频次。
5、在开发出现问题时,可以通过接口调用的返回码,以及报警排查指引(在公众平台官网-开发者中心处可以设置接口报警),来发现和解决问题。
6、公众平台以access_token为接口调用凭据,来调用接口,所有接口的调用需要先获取access_token,access_token在2小时内有效,过期需要重新获取,但1天内获取次数有限,开发者需自行存储,详见获取接口调用凭据(access_token)文档。
7、公众平台接口调用仅支持80端口。
gogogo
管理员
管理员
  • UID25
  • 粉丝0
  • 关注0
  • 发帖数1377
沙发#
发布于:2020-02-19 21:45
接入微信公众平台开发,开发者需要按照如下步骤完成:
1、填写服务器配置
2、验证服务器地址的有效性
3、依据接口文档实现业务逻辑
下面详细介绍这3个步骤。




开发前提步骤

1、填写服务器配置
2、验证服务器地址的有效性
3、依据接口文档实现业务逻辑
下面详细介绍这3个步骤。


第一步:填写服务器配置

登录微信公众平台官网后,在公众平台官网的开发-基本设置页面,勾选协议成为开发者,点击“修改配置”按钮,填写服务器地址(URL)、Token和EncodingAESKey,其中URL是开发者用来接收微信消息和事件的接口URL。Token可由开发者可以任意填写,用作生成签名(该Token会和接口URL中包含的Token进行比对,从而验证安全性)。EncodingAESKey由开发者手动填写或随机生成,将用作消息体加解密密钥。



第二步:验证消息的确来自微信服务器

开发者提交信息后,微信服务器将发送GET请求到填写的服务器地址URL上,GET请求携带参数如下表所示:
参数描述
signature微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。
timestamp时间戳
nonce随机数
echostr随机字符串

开发者通过检验signature对请求进行校验(下面有校验方式)。若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,成为开发者成功,否则接入失败。加密/校验流程如下:
1)将token、timestamp、nonce三个参数进行字典序排序 2)将三个参数字符串拼接成一个字符串进行sha1加密 3)开发者获得加密后的字符串可与signature对比,标识该请求来源于微信
检验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示例代码下载:下载


第三步:依据接口文档实现业务逻辑

成为开发者后,用户每次向公众号发送消息、或者产生自定义菜单、或产生微信支付订单等情况时,开发者填写的服务器配置URL将得到微信服务器推送过来的消息和事件,开发者可以依据自身业务逻辑进行响应,如回复消息。
公众号调用各接口时,一般会获得正确的结果,具体结果可见对应接口的说明。返回错误时,可根据返回码来查询错误原因。
张翱翔友情提醒:
用户向公众号发送消息时,公众号方收到的消息发送者是一个OpenID,是使用用户微信号加密后的结果,每个用户对每个公众号有一个唯一的OpenID。

此外,由于开发者经常有需在多个平台(移动应用、网站、公众帐号)之间共通用户帐号,统一帐号体系的需求,微信开放平台(open.weixin.qq.com)提供了UnionID机制。开发者可通过OpenID来获取用户基本信息,而如果开发者拥有多个应用(移动应用、网站应用和公众帐号,公众帐号只有在被绑定到微信开放平台帐号下后,才会获取UnionID),可通过获取用户基本信息中的UnionID来区分用户的唯一性,因为只要是同一个微信开放平台帐号下的移动应用、网站应用和公众帐号,用户的UnionID是唯一的。


公众平台接口域名说明
开发者可以根据自己的服务器部署情况,选择最佳的接入点(延时更低,稳定性更高)。除此之外,可以将其他接入点用作容灾用途,当网络链路发生故障时,可以考虑选择备用接入点来接入。

  1. 通用域名(api.weixin.qq.com),使用该域名将访问官方指定就近的接入点;

  2. 通用异地容灾域名(api2.weixin.qq.com),当上述域名不可访问时可改访问此域名;

  3. 上海域名(sh.api.weixin.qq.com),使用该域名将访问上海的接入点;

  4. 深圳域名(sz.api.weixin.qq.com),使用该域名将访问深圳的接入点;

  5. 香港域名(hk.api.weixin.qq.com),使用该域名将访问香港的接入点。
gogogo
管理员
管理员
  • UID25
  • 粉丝0
  • 关注0
  • 发帖数1377
板凳#
发布于:2020-02-19 21:54
下面讲一下如何获取access_token:
access_token的存储至少要保留512个字符空间。access_token的有效期目前为2个小时,需定时刷新。


公众平台的API调用所需的access_token的使用及生成方式说明:
1、建议公众号开发者使用中控服务器统一获取和刷新access_token,其他业务逻辑服务器所使用的access_token均来自于该中控服务器,不应该各自去刷新,否则容易造成冲突,导致access_token覆盖而影响业务;
2、目前access_token的有效期通过返回的expire_in来传达,目前是7200秒之内的值。中控服务器需要根据这个有效时间提前去刷新新access_token。在刷新过程中,中控服务器可对外继续输出的老access_token,此时公众平台后台会保证在5分钟内,新老access_token都可用,这保证了第三方业务的平滑过渡;
3、access_token的有效时间可能会在未来有调整,所以中控服务器不仅需要内部定时主动刷新,还需要提供被动刷新access_token的接口,这样便于业务服务器在API调用获知access_token已超时的情况下,可以触发access_token的刷新流程。
公众号和小程序均可以使用AppID和AppSecret调用本接口来获取access_token。AppID和AppSecret可在“微信公众平台-开发-基本配置”页中获得(需要已经成为开发者,且帐号没有异常状态)。**调用接口时,请登录“微信公众平台-开发-基本配置”提前将服务器IP地址添加到IP白名单中,点击查看设置方法,否则将无法调用成功。**小程序无需配置IP白名单。
接口调用请求说明
https请求方式: GET https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
参数说明
参数是否必须说明
grant_type获取access_token填写client_credential
appid第三方用户唯一凭证
secret第三方用户唯一凭证密钥,即appsecret

返回说明
正常情况下,微信会返回下述JSON数据包给公众号:

{"access_token":"ACCESS_TOKEN","expires_in":7200}

参数说明
参数说明
access_token获取到的凭证
expires_in凭证有效时间,单位:秒

错误时微信会返回错误码等信息,JSON数据包示例如下(该示例为AppID无效错误):

{"errcode":40013,"errmsg":"invalid appid"}

返回码说明
返回码说明
-1系统繁忙,此时请开发者稍候再试
0请求成功
40001AppSecret错误或者AppSecret不属于这个公众号,请开发者确认AppSecret的正确性
40002请确保grant_type字段值为client_credential
40164调用接口的IP地址不在白名单中,请在接口IP白名单中进行设置。(小程序及小游戏调用不要求IP地址在白名单内。)



gogogo
管理员
管理员
  • UID25
  • 粉丝0
  • 关注0
  • 发帖数1377
地板#
发布于:2020-02-19 22:01
下面讲一下如何实现微信登录。
张翱翔友情提示:微信登录只能在手机微信或电脑的微信测试工具实现,不能用普通网页或手机普通浏览器上操作。


实现微信第三方登录 首先要 网页授权回调域名。用授权后的域名才能实现登录并获取粉丝相关资料。



关于网页授权回调域名的说明
1、在微信公众号请求用户网页授权之前,开发者需要先到公众平台官网中的“开发 - 接口权限 - 网页服务 - 网页帐号 - 网页授权获取用户基本信息”的配置选项中,修改授权回调域名。请注意,这里填写的是域名(是一个字符串),而不是URL,因此请勿加 http:// 等协议头;
2、授权回调域名配置规范为全域名,比如需要网页授权的域名为:www.qq.com,配置以后此域名下面的页面http://www.qq.com/music.htmlhttp://www.qq.com/login.html 都可以进行OAuth2.0鉴权。但http://pay.qq.comhttp://music.qq.comhttp://qq.com 无法进行OAuth2.0鉴权
3、如果公众号登录授权给了第三方开发者来进行管理,则不必做任何设置,由第三方代替公众号实现网页授权即可


关于网页授权的两种scope的区别说明
1、以snsapi_base为scope发起的网页授权,是用来获取进入页面的用户的openid的,并且是静默授权并自动跳转到回调页的。用户感知的就是直接进入了回调页(往往是业务页面)
2、以snsapi_userinfo为scope发起的网页授权,是用来获取用户的基本信息的。但这种授权需要用户手动同意,并且由于用户同意过,所以无须关注,就可在授权后获取该用户的基本信息。
3、用户管理类接口中的“获取用户基本信息接口”,是在用户和公众号产生消息交互或关注后事件推送后,才能根据用户OpenID来获取用户基本信息。这个接口,包括其他微信接口,都是需要该用户(即openid)关注了公众号后,才能调用成功的。
关于网页授权access_token和普通access_token的区别
1、微信网页授权是通过OAuth2.0机制实现的,在用户授权给公众号后,公众号可以获取到一个网页授权特有的接口调用凭证(网页授权access_token),通过网页授权access_token可以进行授权后接口调用,如获取用户基本信息;
2、其他微信接口,需要通过基础支持中的“获取access_token”接口来获取到的普通access_token调用。
关于UnionID机制
1、请注意,网页授权获取用户基本信息也遵循UnionID机制。即如果开发者有在多个公众号,或在公众号、移动应用之间统一用户帐号的需求,需要前往微信开放平台(open.weixin.qq.com)绑定公众号后,才可利用UnionID机制来满足上述需求。
2、UnionID机制的作用说明:如果开发者拥有多个移动应用、网站应用和公众帐号,可通过获取用户基本信息中的unionid来区分用户的唯一性,因为同一用户,对同一个微信开放平台下的不同应用(移动应用、网站应用和公众帐号),unionid是相同的。
关于特殊场景下的静默授权
1、上面已经提到,对于以snsapi_base为scope的网页授权,就静默授权的,用户无感知;
2、对于已关注公众号的用户,如果用户从公众号的会话或者自定义菜单进入本公众号的网页授权页,即使是scope为snsapi_userinfo,也是静默授权,用户无感知。
具体而言,网页授权流程分为四步:
1、引导用户进入授权页面同意授权,获取code
2、通过code换取网页授权access_token(与基础支持中的access_token不同)
3、如果需要,开发者可以刷新网页授权access_token,避免过期
4、通过网页授权access_token和openid获取用户基本信息(支持UnionID机制)




第一步:用户同意授权,获取code
在确保微信公众账号拥有授权作用域(scope参数)的权限的前提下(服务号获得高级接口后,默认拥有scope参数中的snsapi_base和snsapi_userinfo),引导关注者打开如下页面:

https://open.weixin.qq.com/connect/oauth2/authorize?appid=APPID&redirect_uri=REDIRECT_URI&response_type=code&scope=SCOPE&state=STATE#wechat_redirect 若提示“该链接无法访问”,请检查参数是否填写错误,是否拥有scope参数对应的授权作用域权限。
尤其注意:由于授权操作安全等级较高,所以在发起授权请求时,微信会对授权链接做正则强匹配校验,如果链接的参数顺序不对,授权页面将无法正常访问。


参数说明
[table=720][tr][td]参数[/td][td]是否必须[/td][td]说明[/td][/tr][tr][td]appid[/td][td]是[/td][td]公众号的唯一标识[/td][/tr][tr][td]redirect_uri[/td][td]是[/td][td]授权后重定向的回调链接地址, 请使用 urlEncode 对链接进行处理[/td][/tr][tr][td]response_type[/td][td]是[/td][td]返回类型,请填写code[/td][/tr][tr][td]scope[/td][td]是[/td][td]应用授权作用域,snsapi_base (不弹出授权页面,直接跳转,只能获取用户openid),snsapi_userinfo (弹出授权页面,可通过openid拿到昵称、性别、所在地。并且, 即使在未关注的情况下,只要用户授权,也能获取其信息 )[/td][/tr][tr][td]state[/td][td]否[/td][td]重定向后会带上state参数,开发者可以填写a-zA-Z0-9的参数值,最多128字节[/td][/tr][tr][td]#wechat_redirect[/td][td]是[/td][td]无论直接打开还是做页面302重定向时候,必须带此参数[/td][/tr][/table]
下图为scope等于snsapi_userinfo时的授权页面:

用户同意授权后
如果用户同意授权,页面将跳转至 redirect_uri/?code=CODE&state=STATE。
code说明 : code作为换取access_token的票据,每次用户授权带上的code将不一样,code只能使用一次,5分钟未被使用自动过期。

错误返回码说明如下:
[table=720][tr][td]返回码[/td][td]说明[/td][/tr][tr][td]10003[/td][td]redirect_uri域名与后台配置不一致[/td][/tr][tr][td]10004[/td][td]此公众号被封禁[/td][/tr][tr][td]10005[/td][td]此公众号并没有这些scope的权限[/td][/tr][tr][td]10006[/td][td]必须关注此测试号[/td][/tr][tr][td]10009[/td][td]操作太频繁了,请稍后重试[/td][/tr][tr][td]10010[/td][td]scope不能为空[/td][/tr][tr][td]10011[/td][td]redirect_uri不能为空[/td][/tr][tr][td]10012[/td][td]appid不能为空[/td][/tr][tr][td]10013[/td][td]state不能为空[/td][/tr][tr][td]10015[/td][td]公众号未授权第三方平台,请检查授权状态[/td][/tr][tr][td]10016[/td][td]不支持微信开放平台的Appid,请使用公众号Appid[/td][/tr][/table]

第二步:通过code换取网页授权access_token
首先请注意,这里通过code换取的是一个特殊的网页授权access_token,与基础支持中的access_token(该access_token用于调用其他接口)不同。公众号可通过下述接口来获取网页授权access_token。如果网页授权的作用域为snsapi_base,则本步骤中获取到网页授权access_token的同时,也获取到了openid,snsapi_base式的网页授权流程即到此为止。
尤其注意:由于公众号的secret和获取到的access_token安全级别都非常高,必须只保存在服务器,不允许传给客户端。后续刷新access_token、通过access_token获取用户信息等步骤,也必须从服务器发起。
请求方法
获取code后,请求以下链接获取access_token: https://api.weixin.qq.com/sns/oauth2/access_token?appid=APPID&secret=SECRET&code=CODE&grant_type=authorization_code

参数说明
[table=720][tr][td]参数[/td][td]是否必须[/td][td]说明[/td][/tr][tr][td]appid[/td][td]是[/td][td]公众号的唯一标识[/td][/tr][tr][td]secret[/td][td]是[/td][td]公众号的appsecret[/td][/tr][tr][td]code[/td][td]是[/td][td]填写第一步获取的code参数[/td][/tr][tr][td]grant_type[/td][td]是[/td][td]填写为authorization_code[/td][/tr][/table]
返回说明
正确时返回的JSON数据包如下:

{ "access_token":"ACCESS_TOKEN", "expires_in":7200, "refresh_token":"REFRESH_TOKEN", "openid":"OPENID", "scope":"SCOPE" }

[table=720][tr][td]参数[/td][td]描述[/td][/tr][tr][td]access_token[/td][td]网页授权接口调用凭证,注意:此access_token与基础支持的access_token不同[/td][/tr][tr][td]expires_in[/td][td]access_token接口调用凭证超时时间,单位(秒)[/td][/tr][tr][td]refresh_token[/td][td]用户刷新access_token[/td][/tr][tr][td]openid[/td][td]用户唯一标识,请注意,在未关注公众号时,用户访问公众号的网页,也会产生一个用户和公众号唯一的OpenID[/td][/tr][tr][td]scope[/td][td]用户授权的作用域,使用逗号(,)分隔[/td][/tr][/table]
错误时微信会返回JSON数据包如下(示例为Code无效错误):

{"errcode":40029,"errmsg":"invalid code"}


第三步:刷新access_token(如果需要)
由于access_token拥有较短的有效期,当access_token超时后,可以使用refresh_token进行刷新,refresh_token有效期为30天,当refresh_token失效之后,需要用户重新授权。
请求方法
获取第二步的refresh_token后,请求以下链接获取access_token: https://api.weixin.qq.com/sns/oauth2/refresh_token?appid=APPID&grant_type=refresh_token&refresh_token=REFRESH_TOKEN

参数是否必须说明
appid公众号的唯一标识
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_inaccess_token接口调用凭证超时时间,单位(秒)
refresh_token用户刷新access_token
openid用户唯一标识
scope用户授权的作用域,使用逗号(,)分隔

错误时微信会返回JSON数据包如下(示例为code无效错误):

{"errcode":40029,"errmsg":"invalid code"}


第四步:拉取用户信息(需scope为 snsapi_userinfo)
如果网页授权作用域为snsapi_userinfo,则此时开发者可以通过access_token和openid拉取用户信息了。
请求方法
http:GET(请使用https协议) https://api.weixin.qq.com/sns/userinfo?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN

参数说明
参数描述
access_token网页授权接口调用凭证,注意:此access_token与基础支持的access_token不同
openid用户的唯一标识
lang返回国家地区语言版本,zh_CN 简体,zh_TW 繁体,en 英语

返回说明
正确时返回的JSON数据包如下:

{ "openid":" OPENID", "nickname": NICKNAME, "sex":"1", "province":"PROVINCE", "city":"CITY", "country":"COUNTRY", "headimgurl": "http://thirdwx.qlogo.cn/mmopen/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5WKSYVY0ChQKkiaJSgQ1dZuTOgvLLrhJbERQQ4eMsv84eavHiaiceqxibJxCfHe/46", "privilege":[ "PRIVILEGE1" "PRIVILEGE2" ], "unionid": "o6_bmasdasdsad6_2sgVt7hMZOPfL" }

参数描述
openid用户的唯一标识
nickname用户昵称
sex用户的性别,值为1时是男性,值为2时是女性,值为0时是未知
province用户个人资料填写的省份
city普通用户个人资料填写的城市
country国家,如中国为CN
headimgurl用户头像,最后一个数值代表正方形头像大小(有0、46、64、96、132数值可选,0代表640*640正方形头像),用户没有头像时该项为空。若用户更换头像,原有头像URL将失效。
privilege用户特权信息,json 数组,如微信沃卡用户为(chinaunicom)
unionid只有在用户将公众号绑定到微信开放平台帐号后,才会出现该字段。

错误时微信会返回JSON数据包如下(示例为openid无效):

{"errcode":40003,"errmsg":" invalid openid "}


附:检验授权凭证(access_token)是否有效
请求方法
http:GET(请使用https协议) https://api.weixin.qq.com/sns/auth?access_token=ACCESS_TOKEN&openid=OPENID

参数说明
参数描述
access_token网页授权接口调用凭证,注意:此access_token与基础支持的access_token不同
openid用户的唯一标识

返回说明 正确的JSON返回结果:

{ "errcode":0,"errmsg":"ok"}

错误时的JSON返回示例:

{ "errcode":40003,"errmsg":"invalid openid"}
gogogo
管理员
管理员
  • UID25
  • 粉丝0
  • 关注0
  • 发帖数1377
4楼#
发布于:2020-02-20 21:29
昆山数字城市公众号 微信登录或获取用户信息相关接口。
张翱翔提示:调用接口时可用大众程序员熟悉的ajax&jQuery方式,也可采用微信提供的专门调用方式。


1.昆山数字城市公众号 获取用户基本信息 接口:
开发者可通过OpenID来获取用户基本信息。
接口调用请求说明 http请求方式: GET https://api.weixin.qq.com/cgi-bin/user/info?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN
参数说明
[table=720][tr][td]    参数[/td][td]    是否必须[/td][td]    说明[/td][/tr][tr][td]    access_token[/td][td]    是[/td][td]    调用接口凭证[/td][/tr][tr][td]    openid[/td][td]    是[/td][td]    普通用户的标识,对当前公众号唯一[/td][/tr][tr][td]    lang[/td][td]    否[/td][td]    返回国家地区语言版本,zh_CN 简体,zh_TW 繁体,en 英语[/td][/tr][/table]
返回说明
正常情况下,微信会返回下述JSON数据包给公众号:

{ "subscribe": 1, "openid": "o6_bmjrPTlm6_2sgVt7hMZOPfL2M", "nickname": "Band", "sex": 1, "language": "zh_CN", "city": "广州", "province": "广东", "country": "中国", "headimgurl":"http://thirdwx.qlogo.cn/mmopen/g3MonUZtNHkdmzicIlibx6iaFqAc56vxLSUfpb6n5WKSYVY0ChQKkiaJSgQ1dZuTOgvLLrhJbERQQ4eMsv84eavHiaiceqxibJxCfHe/0", "subscribe_time": 1382694957, "unionid": " o6_bmasdasdsad6_2sgVt7hMZOPfL" "remark": "", "groupid": 0, "tagid_list":[128,2], "subscribe_scene": "ADD_SCENE_QR_CODE", "qr_scene": 98765, "qr_scene_str": "" }

参数说明
   参数    说明
   subscribe    用户是否订阅该公众号标识,值为0时,代表此用户没有关注该公众号,拉取不到其余信息。
   openid    用户的标识,对当前公众号唯一
   nickname    用户的昵称
   sex    用户的性别,值为1时是男性,值为2时是女性,值为0时是未知
   city    用户所在城市
   country    用户所在国家
   province    用户所在省份
   language    用户的语言,简体中文为zh_CN
   headimgurl    用户头像,最后一个数值代表正方形头像大小(有0、46、64、96、132数值可选,0代表640*640正方形头像),用户没有头像时该项为空。若用户更换头像,原有头像URL将失效。
   subscribe_time    用户关注时间,为时间戳。如果用户曾多次关注,则取最后关注时间
   unionid    只有在用户将公众号绑定到微信开放平台帐号后,才会出现该字段。
   remark    公众号运营者对粉丝的备注,公众号运营者可在微信公众平台用户管理界面对粉丝添加备注
   groupid    用户所在的分组ID(兼容旧的用户分组接口)
   tagid_list    用户被打上的标签ID列表
   subscribe_scene    返回用户关注的渠道来源,ADD_SCENE_SEARCH 公众号搜索,ADD_SCENE_ACCOUNT_MIGRATION 公众号迁移,ADD_SCENE_PROFILE_CARD 名片分享,ADD_SCENE_QR_CODE 扫描二维码,ADD_SCENE_PROFILE_LINK 图文页内名称点击,ADD_SCENE_PROFILE_ITEM 图文页右上角菜单,ADD_SCENE_PAID 支付后关注,ADD_SCENE_OTHERS 其他
   qr_scene    二维码扫码场景(开发者自定义)
   qr_scene_str    二维码扫码场景描述(开发者自定义)

错误时微信会返回错误码等信息,JSON数据包示例如下(该示例为AppID无效错误):

{"errcode":40013,"errmsg":"invalid appid"}



2. 批量获取用户基本信息 接口
开发者可通过该接口来批量获取用户基本信息。最多支持一次拉取100条。
接口调用请求说明
http请求方式: POST https://api.weixin.qq.com/cgi-bin/user/info/batchget?access_token=ACCESS_TOKEN
POST数据示例

{ "user_list": [ { "openid": "otvxTs4dckWG7imySrJd6jSi0CWE", "lang": "zh_CN" }, { "openid": "otvxTs_JZ6SEiP0imdhpi50fuSZg", "lang": "zh_CN" } ] }

参数说明
  参数   是否必须   说明
  openid   是   用户的标识,对当前公众号唯一
  lang   否   国家地区语言版本,zh_CN 简体,zh_TW 繁体,en 英语,默认为zh-CN

返回说明
正常情况下,微信会返回下述JSON数据包给公众号(示例中为一次性拉取了2个openid的用户基本信息,第一个是已关注的,第二个是未关注的):

{ "user_info_list": [ { "subscribe": 1, "openid": "otvxTs4dckWG7imySrJd6jSi0CWE", "nickname": "iWithery", "sex": 1, "language": "zh_CN", "city": "揭阳", "province": "广东", "country": "中国", "headimgurl": "http://thirdwx.qlogo.cn/mmopen/xbIQx1GRqdvyqkMMhEaGOX802l1CyqMJNgUzKP8MeAeHFicRDSnZH7FY4XB7p8XHXIf6uJA2SCunTPicGKezDC4saKISzRj3nz/0", "subscribe_time": 1434093047, "unionid": "oR5GjjgEhCMJFyzaVZdrxZ2zRRF4", "remark": "", "groupid": 0, "tagid_list":[128,2], "subscribe_scene": "ADD_SCENE_QR_CODE", "qr_scene": 98765, "qr_scene_str": "" }, { "subscribe": 0, "openid": "otvxTs_JZ6SEiP0imdhpi50fuSZg" } ] }

参数说明
  参数   说明
  subscribe   用户是否订阅该公众号标识,值为0时,代表此用户没有关注该公众号,拉取不到其余信息。
  openid   用户的标识,对当前公众号唯一
  nickname   用户的昵称
  sex   用户的性别,值为1时是男性,值为2时是女性,值为0时是未知
  city   用户所在城市
  country   用户所在国家
  province   用户所在省份
  language   用户的语言,简体中文为zh_CN
  headimgurl   用户头像,最后一个数值代表正方形头像大小(有0、46、64、96、132数值可选,0代表640*640正方形头像),用户没有头像时该项为空。若用户更换头像,原有头像URL将失效。
  subscribe_time   用户关注时间,为时间戳。如果用户曾多次关注,则取最后关注时间
  unionid   只有在用户将公众号绑定到微信开放平台帐号后,才会出现该字段。
  remark   公众号运营者对粉丝的备注,公众号运营者可在微信公众平台用户管理界面对粉丝添加备注
  groupid   用户所在的分组ID(暂时兼容用户分组旧接口)
  tagid_list   用户被打上的标签ID列表
  subscribe_scene   返回用户关注的渠道来源,ADD_SCENE_SEARCH 公众号搜索,ADD_SCENE_ACCOUNT_MIGRATION 公众号迁移,ADD_SCENE_PROFILE_CARD 名片分享,ADD_SCENE_QR_CODE 扫描二维码,ADD_SCENE_PROFILE_LINK 图文页内名称点击,ADD_SCENE_PROFILE_ITEM 图文页右上角菜单,ADD_SCENE_PAID 支付后关注,ADD_SCENE_OTHERS 其他
  qr_scene   二维码扫码场景(开发者自定义)
  qr_scene_str   二维码扫码场景描述(开发者自定义)

错误时微信会返回错误码等信息,JSON数据包示例如下(该示例为AppID无效错误):

{"errcode":40013,"errmsg":"invalid appid"}

3.昆山数字城市公众号 获取用户列表 接口:
张翱翔友情提示:一次拉取调用最多拉取10000个关注者的OpenID,不过可以通过多次拉取的方式来满足需求。关注者列表由一串OpenID(加密后的微信号,每个用户对每个公众号的OpenID是唯一的)组成。

http请求方式: GET(请使用https协议)
https://api.weixin.qq.com/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"
}

参数 说明
total 关注该公众账号的总用户数
count 拉取的OPENID个数,最大值为10000
data 列表数据,OPENID的列表
next_openid 拉取列表的最后一个用户的OPENID

错误时返回JSON数据包(示例为无效AppID错误):

{"errcode":40013,"errmsg":"invalid appid"}

附:关注者数量超过10000时
当公众号关注者数量超过10000时,可通过填写next_openid的值,从而多次拉取列表的方式来满足需求。
具体而言,就是在调用接口时,将上一次调用得到的返回中的next_openid值,作为下一次调用中的next_openid值。
示例如下:

公众账号A拥有23000个关注的人,想通过拉取关注接口获取所有关注的人,那么分别请求url如下:https://api.weixin.qq.com/cgi-bin/user/get?access_token=ACCESS_TOKEN 返回结果:
{
  "total":23000,
  "count":10000,
  "data":{"
     openid":[
        "OPENID1",
        "OPENID2",
        ...,
        "OPENID10000"
     ]
   },
   "next_openid":"OPENID10000"
}https://api.weixin.qq.com/cgi-bin/user/get?access_token=ACCESS_TOKEN&next_openid=NEXT_OPENID1返回结果:
{
   "total":23000,
   "count":10000,
   "data":{
     "openid":[
       "OPENID10001",
       "OPENID10002",
       ...,
       "OPENID20000"
     ]
   },
   "next_openid":"OPENID20000"
}https://api.weixin.qq.com/cgi-bin/user/get?access_token=ACCESS_TOKEN&next_openid=NEXT_OPENID2返回结果(关注者列表已返回完时,返回next_openid为空):
{
   "total":23000,
   "count":3000,
   "data":{"
       "openid":[
         "OPENID20001",
         "OPENID20002",
         ...,
         "OPENID23000"
       ]
   },
   "next_openid":"OPENID23000"
}
gogogo
管理员
管理员
  • UID25
  • 粉丝0
  • 关注0
  • 发帖数1377
5楼#
发布于:2020-02-21 21:07
4.昆山数字城市公众号 获取 公众号的黑名单列表接口
张翱翔提示:黑名单列表由一串 OpenID组成。


(1)。接口调用请求说明
http请求方式:POST(请使用https协议) https://api.weixin.qq.com/cgi-bin/tags/members/getblacklist?access_token=ACCESS_TOKEN
JSON 数据说明
{"begin_openid":"OPENID1"}
当 begin_openid 为空时,默认从开头拉取。
返回说明
正确时返回 JSON数据包
{"total":23000,"count":10000,"data":{"
    openid"
:["OPENID1","OPENID2",
       ...,
"OPENID10000"]},"next_openid":"OPENID10000"}

错误时返回 JSON数据包(示例为无效AppID错误)
{"errcode":40013,"errmsg":"invalid appid"}


张翱翔提示:当公众号黑名单列表数量超过 10000 时,可通过填写 next_openid 的值,从而多次拉取列表的方式来满足需求。


2. 拉黑用户
公众号可通过该接口来拉黑一批用户,黑名单列表由一串 OpenID (加密后的微信号,每个用户对每个公众号的OpenID是唯一的)组成。


接口调用请求说明
http请求方式:POST(请使用https协议) https://api.weixin.qq.com/cgi-bin/tags/members/batchblacklist?access_token=ACCESS_TOKEN
参数说明
[table=780,baseline][tr][td]
参数[/td][td]
是否必须[/td][td]
说明[/td][/tr][tr][td]
access_token[/td][td]
[/td][td]
调用接口凭证[/td][/tr][tr][td]
openid_list[/td][td]
[/td][td]
需要拉入黑名单的用户的openid,一次拉黑最多允许20个[/td][/tr][/table]

JSON 数据说明
{"openid_list":["OPENID1”,” OPENID2”]}
返回说明
正确时返回 JSON数据包
{"errcode": 0,"errmsg": "ok"}
错误时返回 JSON数据包(示例为无效AppID错误)
{"errcode":40013,"errmsg":"invalid appid"}
返回码说明
[table=780,baseline][tr][td]
返回码[/td][td]
说明[/td][/tr][tr][td]
-1[/td][td]
系统繁忙[/td][/tr][tr][td]
40003[/td][td]
传入非法的openid[/td][/tr][tr][td]
49003[/td][td]
传入的openid不属于此AppID[/td][/tr][tr][td]
40032[/td][td]
一次只能拉黑20个用户[/td][/tr][/table]

3. 取消拉黑用户
公众号可通过该接口来取消拉黑一批用户,黑名单列表由一串OpenID(加密后的微信号,每个用户对每个公众号的OpenID是唯一的)组成。
接口调用请求说明
http请求方式:POST(请使用https协议) https://api.weixin.qq.com/cgi-bin/tags/members/batchunblacklist?access_token=ACCESS_TOKEN
参数说明
[table=780,baseline][tr][td]
参数[/td][td]
是否必须[/td][td]
说明[/td][/tr][tr][td]
access_token[/td][td]
[/td][td]
调用接口凭证[/td][/tr][tr][td]
openid_list[/td][td]
[/td][td]
需要拉入黑名单的用户的openid,一次拉黑最多允许20个[/td][/tr][/table]

JSON 数据说明
{"openid_list":["OPENID1”,” OPENID2”]}
返回说明
正确时返回 JSON数据包
{"errcode": 0,"errmsg": "ok"}
错误时返回 JSON数据包(示例为无效AppID错误)
{"errcode":40013,"errmsg":"invalid appid"}


5。设置通过微信开发页面获取昆山数字城市移动端系统用户的备注名,开发者可以通过该接口对指定用户设置备注名。


http请求方式: POST(请使用https协议) https://api.weixin.qq.com/cgi-bin/user/info/updateremark?access_token=ACCESS_TOKEN
POST数据格式:JSON
POST数据例子:
{"openid":"oDF3iY9ffA-hqb2vVvbr7qxf6A0Q","remark":"pangzi"}
参数说明
[table=780,baseline][tr][td]
参数[/td][td]
说明[/td][/tr][tr][td]
access_token[/td][td]
调用接口凭证[/td][/tr][tr][td]
openid[/td][td]
用户标识[/td][/tr][tr][td]
remark[/td][td]
新的备注名,长度必须小于30字符[/td][/tr][/table]

返回说明 正常时的返回JSON数据包示例:
{"errcode":0,"errmsg":"ok"}
错误时的JSON数据包示例(该示例为AppID无效错误):
{"errcode":40013,"errmsg":"invalid appid"}


6。对依托昆山数字城市公众号开发的移动系统登录用户 获取其标签的接口。
张翱翔提示:此接口可实现对公众号的标签进行创建、查询、修改、删除等操作,也可以对用户进行打标签、取消标签等操作。




1. 创建标签
一个公众号,最多可以创建100个标签。
接口调用请求说明
http请求方式:POST(请使用https协议) https://api.weixin.qq.com/cgi-bin/tags/create?access_token=ACCESS_TOKEN
POST数据格式:JSON POST数据示例:
{ "tag" : { "name" : "广东"//标签名   } }
参数说明
[table=780,baseline][tr][td]
参数[/td][td]
说明[/td][/tr][tr][td]
access_token[/td][td]
调用接口凭据[/td][/tr][tr][td]
name[/td][td]
标签名(30个字符以内)[/td][/tr][/table]

返回说明(正常时返回的json数据包示例)
{ "tag":{ "id":134,//标签id "name":"广东"   } }
返回参数说明
[table=780,baseline][tr][td]
参数[/td][td]
说明[/td][/tr][tr][td]
id[/td][td]
标签id,由微信分配[/td][/tr][tr][td]
name[/td][td]
标签名,UTF8编码[/td][/tr][/table]

错误码说明
[table=780,baseline][tr][td]
错误码[/td][td]
说明[/td][/tr][tr][td]
-1[/td][td]
系统繁忙[/td][/tr][tr][td]
45157[/td][td]
标签名非法,请注意不能和其他标签重名[/td][/tr][tr][td]
45158[/td][td]
标签名长度超过30个字节[/td][/tr][tr][td]
45056[/td][td]
创建的标签数过多,请注意不能超过100个[/td][/tr][/table]

2). 获取公众号已创建的标签
接口调用请求说明
http请求方式:GET(请使用https协议) https://api.weixin.qq.com/cgi-bin/tags/get?access_token=ACCESS_TOKEN
返回说明
{"tags":[{"id":1,"name":"每天一罐可乐星人","count":0 //此标签下粉丝数},{"id":2,"name":"星标组","count":0},{"id":127,"name":"广东","count":5}] }


3. 编辑标签
接口调用请求说明
http请求方式:POST(请使用https协议) https://api.weixin.qq.com/cgi-bin/tags/update?access_token=ACCESS_TOKEN
POST数据格式:JSON POST数据例子:
{ "tag" : { "id" : 134, "name" : "广东人" } }
返回说明
{ "errcode":0, "errmsg":"ok" }
错误码说明
[table=780,baseline][tr][td]
错误码[/td][td]
说明[/td][/tr][tr][td]
-1[/td][td]
系统繁忙[/td][/tr][tr][td]
45157[/td][td]
标签名非法,请注意不能和其他标签重名[/td][/tr][tr][td]
45158[/td][td]
标签名长度超过30个字节[/td][/tr][tr][td]
45058[/td][td]
不能修改0/1/2这三个系统默认保留的标签[/td][/tr][/table]

4). 删除标签
张翱翔提示:当一个标签下的粉丝超过10w时,后台不可直接删除标签。此时,开发者可以对该标签下的openid列表,先进行取消标签的操作,直到粉丝数不超过10w后,才可直接删除该标签。
接口调用请求说明
http请求方式:POST(请使用https协议) https://api.weixin.qq.com/cgi-bin/tags/delete?access_token=ACCESS_TOKEN
POST数据格式:JSON POST数据例子:
{ "tag":{ "id" : 134 } }
返回说明
{ "errcode":0, "errmsg":"ok" }
错误码说明
[table=780,baseline][tr][td]
错误码[/td][td]
说明[/td][/tr][tr][td]
-1[/td][td]
系统繁忙[/td][/tr][tr][td]
45058[/td][td]
不能修改0/1/2这三个系统默认保留的标签[/td][/tr][tr][td]
45057[/td][td]
该标签下粉丝数超过10w,不允许直接删除[/td][/tr][/table]

5. 获取标签下粉丝列表
接口调用请求说明
http请求方式:GET(请使用https协议) https://api.weixin.qq.com/cgi-bin/user/tag/get?access_token=ACCESS_TOKEN
POST数据格式:JSON POST数据例子:
{ "tagid" : 134, "next_openid":""//第一个拉取的OPENID,不填默认从头开始拉取 }
返回说明(正常时返回的json包示例)
{  
    "count":2,//这次获取的粉丝数量  
    "data":{//粉丝列表
    "openid":[  
    "ocYxcuAEy30bX0NXmGn4ypqx3tI0",    
    "ocYxcuBt0mRugKZ7tGAHPnUaOW7Y"  ]  
},  
    "next_openid":"ocYxcuBt0mRugKZ7tGAHPnUaOW7Y"//拉取列表最后一个用户的openid
}

错误码说明
[table=780,baseline][tr][td]
错误码[/td][td]
说明[/td][/tr][tr][td]
-1[/td][td]
系统繁忙[/td][/tr][tr][td]
40003[/td][td]
传入非法的openid[/td][/tr][tr][td]
45159[/td][td]
非法的tag_id[/td][/tr][/table]

用户管理
标签功能目前支持公众号为用户打上最多20个标签。
1. 批量为用户打标签
接口调用请求说明
http请求方式:POST(请使用https协议) https://api.weixin.qq.com/cgi-bin/tags/members/batchtagging?access_token=ACCESS_TOKEN
POST数据例子:
{"openid_list" : [//粉丝列表 "ocYxcuAEy30bX0NXmGn4ypqx3tI0","ocYxcuBt0mRugKZ7tGAHPnUaOW7Y" ],"tagid" : 134}
返回说明(正常时返回的json包示例)
{"errcode":0,"errmsg":"ok"}
错误码说明
[table=780,baseline][tr][td]
错误码[/td][td]
说明[/td][/tr][tr][td]
-1[/td][td]
系统繁忙[/td][/tr][tr][td]
40032[/td][td]
每次传入的openid列表个数不能超过50个[/td][/tr][tr][td]
45159[/td][td]
非法的标签[/td][/tr][tr][td]
45059[/td][td]
有粉丝身上的标签数已经超过限制,即超过20个[/td][/tr][tr][td]
40003[/td][td]
传入非法的openid[/td][/tr][tr][td]
49003[/td][td]
传入的openid不属于此AppID[/td][/tr][/table]

2). 批量为用户取消标签
接口调用请求说明
http请求方式:POST(请使用https协议) https://api.weixin.qq.com/cgi-bin/tags/members/batchuntagging?access_token=ACCESS_TOKEN
POST数据格式:JSON POST数据例子:
{"openid_list" : [//粉丝列表 "ocYxcuAEy30bX0NXmGn4ypqx3tI0","ocYxcuBt0mRugKZ7tGAHPnUaOW7Y" ],"tagid" : 134}
返回说明(正常时返回的json包示例)
{"errcode":0,"errmsg":"ok"}
错误码说明
[table=780,baseline][tr][td]
错误码[/td][td]
说明[/td][/tr][tr][td]
-1[/td][td]
系统繁忙[/td][/tr][tr][td]
40032[/td][td]
每次传入的openid列表个数不能超过50个[/td][/tr][tr][td]
45159[/td][td]
非法的标签[/td][/tr][tr][td]
40003[/td][td]
传入非法的openid[/td][/tr][tr][td]
49003[/td][td]
传入的openid不属于此AppID[/td][/tr][/table]





3). 获取用户身上的标签列表
接口调用请求说明
http请求方式:POST(请使用https协议) https://api.weixin.qq.com/cgi-bin/tags/getidlist?access_token=ACCESS_TOKEN
POST数据格式:JSON POST数据例子:
{ "openid" : "ocYxcuBt0mRugKZ7tGAHPnUaOW7Y" }
返回说明(正常情况下返回的json示例)
{ "tagid_list":[//被置上的标签列表 134, 2   ] }

gogogo
管理员
管理员
  • UID25
  • 粉丝0
  • 关注0
  • 发帖数1377
6楼#
发布于:2020-02-21 22:29
2020.2.21 1. 依托昆山数字城市公众号的移动端系统 微信卡券相关接口

张翱翔提示:此接口一般需要做公司线上销售时才会用到,数字城市暂时可能用不上,会相对简单描述。
(1)创建卡券
步骤一 获取access_token 这个前面已经讲过,不再重复。

步骤二 上传卡券logo
页面地址:http://mp.weixin.qq.com/debug/
接口类型:基础支持
接口列表:上传图片素材接口
注意事项
1.上传的图片限制文件大小限制1MB,仅支持JPG、PNG格式。
2.调用接口获取图片url仅支持在微信相关业务下使用。
接口调用请求说明

HTTP请求方式: POST/FROMURL:https://api.weixin.qq.com/cgi-bin/media/uploadimg?access_token=ACCESS_TOKEN
参数说明
参数是否必须说明
buffer文件的数据流
access_token调用接口凭证

请求数据

调用示例(使用curl命令,用FORM表单方式上传一个图片):curl –Fbuffer=@test.jpg
返回数据

返回正确的示例:{"url":"http://mmbiz.qpic.cn/mmbiz/iaL1LJM1mF9aRKPZJkmG8xXhiaHqkKSVMMWeN3hLut7X7hicFNjakmxibMLGWpXrEXB33367o7zHN0CwngnQY7zb7g/0"}返回错误的示例{"errcode":40009,"errmsg":"invalid image size"}
参数说明
参数名描述
errcode错误码
errmsg错误信息
url商户图片url,用于创建卡券接口中填入。特别注意:该链接仅用于微信相关业务,不支持引用。



步骤三:创建卡券



接口调用请求说明

HTTP请求方式: POSTURL: https://api.weixin.qq.com/card/create?access_token=ACCESS_TOKEN参数说明
参数是否必须说明
access_token调用接口凭证
POST数据Json数据
POST数据示例

 { "card": { "card_type": "GROUPON", "groupon": { "base_info": { "logo_url": "http://mmbiz.qpic.cn/mmbiz/iaL1LJM1mF9aRKPZJkmG8xXhiaHqkKSVMMWeN3hLut7X7hicFNjakmxibMLGWpXrEXB33367o7zHN0CwngnQY7zb7g/0", "brand_name": "微信餐厅", "code_type": "CODE_TYPE_TEXT", "title": "132元双人火锅套餐", "color": "Color010", "notice": "使用时向服务员出示此券", "service_phone": "020-88888888", "description": "不可与其他优惠同享\n如需团购券发票,请在消费时向商户提出\n店内均可使用,仅限堂食", "date_info": { "type": "DATE_TYPE_FIX_TIME_RANGE", "begin_timestamp": 1397577600, "end_timestamp": 1472724261 }, "sku": { "quantity": 500000 }, "use_limit":100, "get_limit": 3, "use_custom_code": false, "bind_openid": false, "can_share": true, "can_give_friend": true, "location_id_list": [ 123, 12321, 345345 ], "center_title": "顶部居中按钮", "center_sub_title": "按钮下方的wording", "center_url": "www.qq.com", "custom_url_name": "立即使用", "custom_url": "http://www.qq.com", "custom_url_sub_title": "6个汉字tips", "promotion_url_name": "更多优惠", "promotion_url": "http://www.qq.com", "source": "大众点评" }, "advanced_info": { "use_condition": { "accept_category": "鞋类", "reject_category": "阿迪达斯", "can_use_with_other_discount": true }, "abstract": { "abstract": "微信餐厅推出多种新季菜品,期待您的光临", "icon_url_list": [ "http://mmbiz.qpic.cn/mmbiz/p98FjXy8LacgHxp3sJ3vn97bGLz0ib0Sfz1bjiaoOYA027iasqSG0sj piby4vce3AtaPu6cIhBHkt6IjlkY9YnDsfw/0" ] }, "text_image_list": [ { "image_url": "http://mmbiz.qpic.cn/mmbiz/p98FjXy8LacgHxp3sJ3vn97bGLz0ib0Sfz1bjiaoOYA027iasqSG0sjpiby4vce3AtaPu6cIhBHkt6IjlkY9YnDsfw/0", "text": "此菜品精选食材,以独特的烹饪方法,最大程度地刺激食 客的味蕾" }, { "image_url": "http://mmbiz.qpic.cn/mmbiz/p98FjXy8LacgHxp3sJ3vn97bGLz0ib0Sfz1bjiaoOYA027iasqSG0sj piby4vce3AtaPu6cIhBHkt6IjlkY9YnDsfw/0", "text": "此菜品迎合大众口味,老少皆宜,营养均衡" } ], "time_limit": [ { "type": "MONDAY", "begin_hour":0, "end_hour":10, "begin_minute":10, "end_minute":59 }, { "type": "HOLIDAY" } ], "business_service": [ "BIZ_SERVICE_FREE_WIFI", "BIZ_SERVICE_WITH_PET", "BIZ_SERVICE_FREE_PARK", "BIZ_SERVICE_DELIVER" ] }, "deal_detail": "以下锅底2选1(有菌王锅、麻辣锅、大骨锅、番茄锅、清补 凉锅、酸菜鱼锅可选):\n大锅1份 12元\n小锅2份 16元 " } }}




……
游客


返回顶部