开发文档
登录公众号平台:https://mp.weixin.qq.com/
微信公众平台提供哪些服务
针对不同类型的公众号(服务号、订阅号、小程序和企业微信)有不同的功能侧重:
服务号:
提供用户服务:服务号为用户提供更深度的服务交互体验,适合企业或组织进行客户服务、业务处理等。
消息推送:每月可发送4条群发消息,直接显示在用户的聊天列表中,触达率较高。
功能接口:支持更多的高级接口权限,如自定义菜单、模板消息、用户管理、支付功能、卡券功能等。
订阅号:
内容传播:主要用于媒体和个人内容创作者发布文章、资讯等内容,每天可以推送一条群发消息。
信息展示:订阅号的群发消息会折叠在用户的订阅号文件夹中,用户需手动点击查阅。
用户互动:尽管推送频率较高,但相比服务号,在消息触达及时性上相对较弱。
小程序:
应用服务:无需下载安装即可使用的轻应用,提供各种工具、游戏、电商、生活服务等功能。
前端界面:通过微信内访问,具备原生APP的部分体验,用户使用后可在历史列表快速找回。
功能集成:可以调用微信提供的丰富API,实现地理位置获取、支付、社交分享等功能。
企业微信(原企业号):
组织管理:为企业内部沟通协作设计,包括公告通知、打卡考勤、审批流程、会议、企业邮箱等办公场景。
客户关系管理:可以添加客户并进行消息沟通,适用于客服接待、客户维系等工作。
第三方应用集成:支持与企业内部系统及第三方应用的对接,帮助企业实现移动办公自动化。
选择哪种类型的服务取决于企业和个人的具体需求,例如内容产出、客户服务、产品销售、内部管理等。
提供的服务:
1.消息回复(群发消息,被动回复消息,客服消息,通知模版消息)
2.公众号内网页:微信JS-SDK
开发者需要按照如下步骤完成:
微信公众号测试号:快速了解和上手微信公众号开发;
1.1 填写服务器配置
1.2 验证服务器地址的有效性
开发者提交信息后,微信服务器将发送GET请求到填写的服务器地址URL上,
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;
}
}
有官方提供的示例代码如下:
1.3 依据接口文档实现业务逻辑
相关node包依赖
npm i xml2js
npm i ejs
npm i Puppeteer
npm i dplayer
npm i request-promise-native request
Access token
ttps请求方式: GET https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
{“access_token”:“ACCESS_TOKEN”,“expires_in”:7200}
expires_in:单位秒
// 过期时间转换:当前时刻 + 过期时间
expires_in = Date.now() + (res.expires_in - 5 * 60)*1000
如果 expires_in < Date.now()是过期啦;
常见封装请求
使用 new Promise()实现,then方法调用返回值,
二、接收普通消息
当普通微信用户向公众账号发消息时,微信服务器将POST消息的XML数据包到开发者填写的URL上。
请注意:
关于重试的消息排重,推荐使用msgid排重。
微信服务器在五秒内收不到响应会断掉连接,并且重新发起请求,总共重试三次。假如服务器无法保证在五秒内处理并回复,可以直接回复空串,微信服务器不会对此作任何处理,并且不会发起重试。详情请见“发送消息-被动回复消息”。
如果开发者需要对用户消息在5秒内立即做出回应,即使用“发送消息-被动回复消息”接口向用户被动回复消息时,可以在
公众平台官网的开发者中心处设置消息加密。开启加密后,用户发来的消息和开发者回复的消息都会被加密(但开发者通过客服接口等API调用形式向用户发送消息,则不受影响)。关于消息加解密的详细说明,请见“发送消息-被动回复消息加解密说明”。 各消息类型的推送XML数据包结构如下
2.1 node的流式数据的拼接返回xml
<xml>
<ToUserName><![CDATA[toUser]]></ToUserName>
<FromUserName><![CDATA[fromUser]]></FromUserName>
<CreateTime>12345678</CreateTime>
<MsgType><![CDATA[text]]></MsgType>
<Content><![CDATA[你好]]></Content>
</xml>
2.2 利用工具包xml2js转化为json
2.3 回复消息-返回给微信服务器的响应xml
参考
三、js-jdk
参考文档:https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html#62
注意事项
签名用的noncestr和timestamp必须与wx.config中的nonceStr和timestamp相同。
签名用的url必须是调用JS接口页面的完整URL。
出于安全考虑,开发者必须在服务器端实现签名的逻辑。
配置config
用第一步拿到的access_token 采用http GET方式请求获得jsapi_ticket(有效期7200秒,开发者必须在自己的服务全局缓存jsapi_ticket):https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=ACCESS_TOKEN&type=jsapi
示例代码:
https://www.weixinsxy.com/jssdk/sample.zip
备注:链接中包含php、java、nodejs以及python的示例代码供第三方参考,第三方切记要对获取的accesstoken以及jsapi_ticket进行缓存以确保不会触发频率限制
var sign = function (jsapi_ticket, url) {
var ret = {
jsapi_ticket: jsapi_ticket,
nonceStr: createNonceStr(),
timestamp: createTimestamp(),
url: url
};
var string = raw(ret);
jsSHA = require('jssha');
shaObj = new jsSHA(string, 'TEXT');
ret.signature = shaObj.getHash('SHA-1', 'HEX');
return ret;
};
回复图片文字识别
开通百度AI开发平台,文字识别 ,可以看到开通的应用
查看文档 -》 人工智能-〉 文字识别
http-sdk文档有详细的使用,入参数,出参数,返回结果详解
图灵机器人:
如何读取xml数据:
通过输入流获取xml的节点数据;