0.0.2 • Published 10 months ago

weixin-easy-api v0.0.2

Weekly downloads
-
License
Apache-2.0
Repository
-
Last release
10 months ago

nodejs下的微信开发工具。用户只需关注业务逻辑,token、ticket由程序去维护

在线说明: https://tomarking.com/inf.html?id=61124

示例 let wxcfg = {

appid: "APPID",

appsecret: "APPSECRET",

}

//获得服务器IP地址

weixin.getApiDomainIp({init:wxcfg}).then(d=>{

console.log(d);

})

//获得微信端相关信息如access_token,

weixin.info({init:wxcfg}).then(d=>{

console.log(d);

})

这样就可以获得,Api的服务器IP地址、微信端相关信息 {weixin} exports出来的对象 库内部方法 用户无需手动调用 init(opts) 用户无需调用

getToken 获取token

用户无需调用 refreshToken 刷新token

用户无需调用 refreshTokenStable 官方另一种,获得稳定token的方法。

用户无需调用 服务器信息 info 获得当前配置信息,如:access_token和expires_in weixin.info({ init: { appid: "APPID", appsecret: "APPSECRET" } }).then(d => { console.log(d); })

返回:

{

input: {
    appid: "",
    appsecret: ""
},
token: {
    access_token: "",
    expires_in: 0
},

}

getApiDomainIp weixin.getApiDomainIp({ init: { appid: "APPID", appsecret: "APPSECRET" } }).then(d => { console.log(d); })

获取微信服务器IP地址 如果公众号基于安全等考虑,需要获知微信服务器的IP地址列表,以便进行相关限制,可以通过该接口获得微信服务器IP地址列表或者IP网段信息。

由于出口IP及入口IP可能存在变动,建议用户每天请求接口1次,以便于及时更新IP列表。为了避免造成单点故障,强烈建议用户不要长期使用旧的IP列表作为api.weixin.qq.com的访问入口。

  1. 获取微信API接口 IP地址 使用固定IP访问api.weixin.qq.com时,请开发者注意运营商适配,跨运营商访问可能会存在高峰期丢包问题。

API接口IP即api.weixin.qq.com的解析地址,由开发者调用微信侧的接入IP。

系统功能方法 netCheck 网络检测 为了帮助开发者排查回调连接失败的问题,提供这个网络检测的API。它可以对开发者URL做域名解析,然后对所有IP进行一次ping操作,得到丢包率和耗时。

winxin.netCheck({init:{

appid: "APPID",

appsecret: "APPSECRET",

}, action: "all", check_operator:"DEFAULT"})

输入 action 执行的检测动作,允许的值:dns(做域名解析)、ping(做ping检测)、all(dns和ping都做)

check_operator 指定平台从某个运营商进行检测,允许的值:CHINANET(电信出口)、UNICOM(联通出口)、CAP(腾讯自建出口)、DEFAULT(根据ip来选择运营商)

clearQuota weixin.clearQuota({ init: { appid: "APPID", appsecret: "APPSECRET" } }).then(d => { console.log(d); })

清空api的调用quota 本接口用于清空公众号/小程序/第三方平台等接口的每日调用接口次数。

注意事项 每个帐号每月共10次清零操作机会,清零生效一次即用掉一次机会;第三方帮助公众号/小程序调用时,实际上是在消耗公众号/小程序自身的quota

由于指标计算方法或统计时间差异,实时调用量数据可能会出现误差,一般在1%以内 ridGet weixin.ridGet({ init: { appid: "APPID", appsecret: "APPSECRET" },rid: "64a1c55c-452c0f48-0052303c"}).then(d => { console.log(d); })

查询rid信息

本接口用于查询调用公众号/小程序/第三方平台等接口报错返回的rid详情信息,辅助开发者高效定位问题。

注意事项

1、由于查询rid信息属于开发者私密行为,因此仅支持同账号的查询。举个例子,rid=1111,是小程序账号A调用某接口出现的报错,那么则需要使用小程序账号A的access_token调用当前接口查询rid=1111的详情信息,如果使用小程序账号B的身份查询,则出现报错,错误码为xxx。公众号、第三方平台账号的接口同理。

2、如果是第三方服务商代公众号或者小程序查询公众号或者小程序的api返回的rid,则使用同一账号的authorizer_access_token调用即可

3、rid的有效期只有7天,即只可查询最近7天的rid,查询超过7天的rid会出现报错,错误码为76001

clearQuotaByAppSecret weixin.clearQuotaByAppSecret({ init: { appid: "APPID", appsecret: "APPSECRET" }}).then(d => { console.log(d); })

重置 API 调用次数

接口说明

接口英文名

clearQuotaByAppSecret

功能描述

本接口用于清空公众号/小程序等接口的每日调用接口次数

注意事项

1、该接口通过appsecret调用,解决了accesss_token耗尽无法调用重置 API 调用次数的情况

2、每个帐号每月使用重置 API 调用次数 与本接口共10次清零操作机会,清零生效一次即用掉一次机会;

3、由于指标计算方法或统计时间差异,实时调用量数据可能会出现误差,一般在1%以内

公众号菜单管理 menuCreate weixin.menuCreate({ init: { appid: "APPID", appsecret: "APPSECRET" },button: { "type": "view", "name": "个人中心", "url": "https://tomarking.com/market.html#page=cmine.html" } }).then(d => { console.log(d); })

自定义菜单/创建接口

自定义菜单能够帮助公众号丰富界面,让用户更好更快地理解公众号的功能。

请注意:

自定义菜单最多包括3个一级菜单,每个一级菜单最多包含5个二级菜单。

一级菜单最多4个汉字,二级菜单最多8个汉字,多出来的部分将会以“...”代替。

创建自定义菜单后,菜单的刷新策略是,在用户进入公众号会话页或公众号profile页时,如果发现上一次拉取菜单的请求在5分钟以前,就会拉取一下菜单,如果菜单有更新,就会刷新客户端的菜单。测试时可以尝试取消关注公众账号后再次关注,则可以看到创建后的效果。​

自定义菜单接口可实现多种类型按钮,如下:

click:点击推事件用户点击click类型按钮后,微信服务器会通过消息接口推送消息类型为event的结构给开发者(参考消息接口指南),并且带上按钮中开发者填写的key值,开发者可以通过自定义的key值与用户进行交互;

view:跳转URL用户点击view类型按钮后,微信客户端将会打开开发者在按钮中填写的网页URL,可与网页授权获取用户基本信息接口结合,获得用户基本信息。

scancode_push:扫码推事件用户点击按钮后,微信客户端将调起扫一扫工具,完成扫码操作后显示扫描结果(如果是URL,将进入URL),且会将扫码的结果传给开发者,开发者可以下发消息。

scancode_waitmsg:扫码推事件且弹出“消息接收中”提示框用户点击按钮后,微信客户端将调起扫一扫工具,完成扫码操作后,将扫码的结果传给开发者,同时收起扫一扫工具,然后弹出“消息接收中”提示框,随后可能会收到开发者下发的消息。

pic_sysphoto:弹出系统拍照发图用户点击按钮后,微信客户端将调起系统相机,完成拍照操作后,会将拍摄的相片发送给开发者,并推送事件给开发者,同时收起系统相机,随后可能会收到开发者下发的消息。

pic_photo_or_album:弹出拍照或者相册发图用户点击按钮后,微信客户端将弹出选择器供用户选择“拍照”或者“从手机相册选择”。用户选择后即走其他两种流程。

pic_weixin:弹出微信相册发图器用户点击按钮后,微信客户端将调起微信相册,完成选择操作后,将选择的相片发送给开发者的服务器,并推送事件给开发者,同时收起相册,随后可能会收到开发者下发的消息。

location_select:弹出地理位置选择器用户点击按钮后,微信客户端将调起地理位置选择工具,完成选择操作后,将选择的地理位置发送给开发者的服务器,同时收起位置选择工具,随后可能会收到开发者下发的消息。

media_id:下发消息(除文本消息)用户点击media_id类型按钮后,微信服务器会将开发者填写的永久素材id对应的素材下发给用户,永久素材类型可以是图片、音频、视频 、图文消息。请注意:永久素材id必须是在“素材管理/新增永久素材”接口上传后获得的合法id。

view_limited:跳转图文消息URL用户点击view_limited类型按钮后,微信客户端将打开开发者在按钮中填写的永久素材id对应的图文消息URL,永久素材类型只支持图文消息。请注意:永久素材id必须是在“素材管理/新增永久素材”接口上传后获得的合法id。

article_id:用户点击 article_id 类型按钮后,微信客户端将会以卡片形式,下发开发者在按钮中填写的图文消息

article_view_limited:类似 view_limited,但不使用 media_id 而使用 article_id

注意: 草稿接口灰度完成后,将不再支持图文信息类型的 media_id 和 view_limited,有需要的,请使用 article_id 和 article_view_limited 代替

请注意,3到8的所有事件,仅支持微信iPhone5.4.1以上版本,和Android5.4以上版本的微信用户,旧版本微信用户点击后将没有回应,开发者也不能正常接收到事件推送。9~12,是专门给第三方平台旗下未微信认证(具体而言,是资质认证未通过)的订阅号准备的事件类型,它们是没有事件推送的,能力相对受限,其他类型的公众号不必使用。

接口调用请求说明

click和view的请求示例

{

 "button":[

 {

      "type":"click",

      "name":"今日歌曲",

      "key":"V1001_TODAY_MUSIC"

  },

  {

       "name":"菜单",

       "sub_button":[

       {

           "type":"view",

           "name":"搜索",

           "url":"http://www.soso.com/"

        },

        {

             "type":"miniprogram",

             "name":"wxa",

             "url":"http://mp.weixin.qq.com",

             "appid":"wx286b93c14bbf93aa",

             "pagepath":"pages/lunar/index"

         },

        {

           "type":"click",

           "name":"赞一下我们",

           "key":"V1001_GOOD"

        }]

   }]

}

其他新增按钮类型的请求示例

{

"button": [

    {

        "name": "扫码", 

        "sub_button": [

            {

                "type": "scancode_waitmsg", 

                "name": "扫码带提示", 

                "key": "rselfmenu_0_0", 

                "sub_button": [ ]

            }, 

            {

                "type": "scancode_push", 

                "name": "扫码推事件", 

                "key": "rselfmenu_0_1", 

                "sub_button": [ ]

            }

        ]

    }, 

    {

        "name": "发图", 

        "sub_button": [

            {

                "type": "pic_sysphoto", 

                "name": "系统拍照发图", 

                "key": "rselfmenu_1_0", 

               "sub_button": [ ]

             }, 

            {

                "type": "pic_photo_or_album", 

                "name": "拍照或者相册发图", 

                "key": "rselfmenu_1_1", 

                "sub_button": [ ]

            }, 

            {

                "type": "pic_weixin", 

                "name": "微信相册发图", 

                "key": "rselfmenu_1_2", 

                "sub_button": [ ]

            }

        ]

    }, 

    {

        "name": "发送位置", 

        "type": "location_select", 

        "key": "rselfmenu_2_0"

    },

    {

       "type": "media_id", 

       "name": "图片", 

       "media_id": "MEDIA_ID1"

    }, 

    {

       "type": "view_limited", 

       "name": "图文消息", 

       "media_id": "MEDIA_ID2"

    },

    {

        "type": "article_id",

        "name": "发布后的图文消息",

        "article_id": "ARTICLE_ID1"

    },

    {

        "type": "article_view_limited",

        "name": "发布后的图文消息",

        "article_id": "ARTICLE_ID2"

    }

]

}

参数说明

参数是否必须说明

button是一级菜单数组,个数应为1~3个

sub_button否二级菜单数组,个数应为1~5个

type是菜单的响应动作类型,view表示网页类型,click表示点击类型,miniprogram表示小程序类型

name是菜单标题,不超过16个字节,子菜单不超过60个字节

keyclick等点击类型必须菜单KEY值,用于消息接口推送,不超过128字节

urlview、miniprogram类型必须网页 链接,用户点击菜单可打开链接,不超过1024字节。 type为miniprogram时,不支持小程序的老版本客户端将打开本url。

media_idmedia_id类型和view_limited类型必须调用新增永久素材接口返回的合法media_id

appidminiprogram类型必须小程序的appid(仅认证公众号可配置)

pagepathminiprogram类型必须小程序的页面路径

article_idarticle_id类型和article_view_limited类型必须发布后获得的合法 article_id

返回结果

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

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

错误时的返回JSON数据包如下(示例为无效菜单名长度):

{"errcode":40018,"errmsg":"invalid button name size"}

使用网页调试工具调试该接口

开发过程中如遇问题,可前往微信开放社区 #公众号 专区发帖交流。

menuGet weixin.menuGet({ init: { appid: "APPID", appsecret: "APPSECRET" }}).then(d => { console.log(d); })

自定义菜单 /查询接口 本接口将会提供公众号当前使用的自定义菜单的配置,如果公众号是通过API调用设置的菜单,则返回菜单的开发配置,而如果公众号是在公众平台官网通过网站功能发布菜单,则本接口返回运营者设置的菜单配置。

请注意:

第三方平台开发者可以通过本接口,在旗下公众号将业务授权给你后,立即通过本接口检测公众号的自定义菜单配置,并通过接口再次给公众号设置好自动回复规则,以提升公众号运营者的业务体验。 本接口与自定义菜单查询接口的不同之处在于,本接口无论公众号的接口是如何设置的,都能查询到接口,而自定义菜单查询接口则仅能查询到使用API设置的菜单配置。 认证/未认证的服务号/订阅号,以及接口测试号,均拥有该接口权限。 从第三方平台的公众号登录授权机制上来说,该接口从属于消息与菜单权限集。 本接口中返回的图片/语音/视频为临时素材(临时素材每次获取都不同,3天内有效,通过素材管理-获取临时素材接口来获取这些素材),本接口返回的图文消息为永久素材素材(通过素材管理-获取永久素材接口来获取这些素材)。

返回结果说明

如果公众号是在公众平台官网通过网站功能发布菜单,则本接口返回的自定义菜单配置样例如下:

{ "is_menu_open": 1, "selfmenu_info": { "button": [ { "name": "button", "sub_button": { "list": [ { "type": "view", "name": "view_url", "url": "http://www.qq.com" }, { "type": "news", "name": "news", "value":"KQb_w_Tiz-nSdVLoTV35Psmty8hGBulGhEdbb9SKs-o", "news_info": { "list": { "title": "MULTI_NEWS", "author": "JIMZHENG", "digest": "text", "show_cover": 0, "cover_url": "http://mmbiz.qpic.cn/mmbiz/GE7et87vE9vicuCibqXsX9GPPLuEtBfXfK0HKuBIa1A1cypS0uY1wickv70iaY1gf3I1DTszuJoS3lAVLvhTcm9sDA/0", "content_url": "http://mp.weixin.qq.com/s?biz=MjM5ODUwNTM3Ng==&mid=204013432&idx=1&sn=80ce6d9abcb832237bf86c87e50fda15#rd", "source_url": "" }, { "title": "MULTI_NEWS1", "author": "JIMZHENG", "digest": "MULTI_NEWS1", "show_cover": 1, "cover_url": "http://mmbiz.qpic.cn/mmbiz/GE7et87vE9vicuCibqXsX9GPPLuEtBfXfKnmnpXYgWmQD5gXUrEApIYBCgvh2yHsu3ic3anDUGtUCHwjiaEC5bicd7A/0", "content_url": "http://mp.weixin.qq.com/s?biz=MjM5ODUwNTM3Ng==&mid=204013432&idx=2&sn=8226843afb14ecdecb08d9ce46bc1d37#rd", "source_url": "" } } }, { "type": "video", "name": "video", "value": "http://61.182.130.30/vweixinp.tc.qq.com/1007_114bcede9a2244eeb5ab7f76d951df5f.f10.mp4?vkey=77A42D0C2015FBB0A3653D29C571B5F4BBF1D243FBEF17F09C24FF1F2F22E30881BD350E360BC53F&sha=0&save=1" }, { "type": "voice", "name": "voice", "value": "nTXe3aghlQ4XYHa0AQPWiQQbFW9RVtaYTLPC1PCQx11qc9UB6CiUPFjdkeEtJicn" } ] } }, { "type": "text", "name": "text", "value": "This is text!" }, { "type": "img", "name": "photo", "value": "ax5Whs5dsoomJLEppAvftBUuH7CgXCZGFbFJifmbUjnQk_ierMHY99Y5d2Cv14RD" } ] } } 如果公众号是通过API调用设置的菜单,自定义菜单配置样例如下:

{ "is_menu_open": 1, "selfmenu_info": { "button": [ { "type": "click", "name": "今日歌曲", "key": "V1001_TODAY_MUSIC" }, { "name": "菜单", "sub_button": { "list": { "type": "view", "name": "搜索", "url": "http://www.soso.com/" }, { "type": "view", "name": "视频", "url": "http://v.qq.com/" }, { "type": "click", "name": "赞一下我们", "key": "V1001_GOOD" } } } ] } } 参数说明

参数 说明 is_menu_open 菜单是否开启,0代表未开启,1代表开启 selfmenu_info 菜单信息 button 菜单按钮 type 菜单的类型,公众平台官网上能够设置的菜单类型有view(跳转网页)、text(返回文本,下同)、img、photo、video、voice。使用API设置的则有8种,详见《自定义菜单创建接口》 name 菜单名称 value、url、key等字段 对于不同的菜单类型,value的值意义不同。官网上设置的自定义菜单: Text:保存文字到value; Img、voice:保存mediaID到value; Video:保存视频下载链接到value; News:保存图文消息到news_info,同时保存mediaID到value; View:保存链接到url。 使用API设置的自定义菜单: click、scancode_push、scancode_waitmsg、pic_sysphoto、pic_photo_or_album、 pic_weixin、location_select:保存值到key;view:保存链接到url news_info 图文消息的信息 title 图文消息的标题 digest 摘要 author 作者 show_cover 是否显示封面,0为不显示,1为显示 cover_url 封面图片的URL content_url 正文的URL source_url 原文的URL,若置空则无查看原文入口 menuDelete weixin.menuDelete({ init: { appid: "APPID", appsecret: "APPSECRET" }}).then(d => { console.log(d); })

自定义菜单 /删除接口

使用接口创建自定义菜单后,开发者还可使用接口删除当前使用的自定义菜单。另请注意,在个性化菜单时,调用此接口会删除默认菜单及全部个性化菜单。

返回说明

对应创建接口,正确的Json返回结果:

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

使用网页调试工具调试该接口

基础消息能力 正在制作中……

客户消息 正在制作中……

目录

0.0.2

10 months ago

0.0.1

10 months ago