微信公众号开发基础

开发文档

登录公众号平台: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的节点数据;
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值