微信小程序服务端能力是指小程序服务端的技术能力,它可以帮助开发者快速构建出高性能、高可用的小程序服务端。微信小程序服务端能力分析主要包括以下几个方面:
1. 数据存储:微信小程序服务端能够实现数据存储,并且可以根据开发者的需要进行自定义。 2. 数据处理:微信小程序服务端能够实现数据处理,包括数据分析、数据聚合、数据转化等。 3. 后台逻辑处理:微信小程序服务端能够实现后台逻辑处理,包括用户注册、用户权限校验、用户行为分析、交易流水分析等。 4. 电商平台集成:微信小程序服务端能够实现对电商平台的集成,如京东、天猫、苏宁易购、国美在线、当当和一号店。 5. 社交平台集成:微信小程序服务端也能够实现对各大主流的SNS平台的集成,如新浪微博、QQ好友和QQ互联。
此外,微信小程序服务端还具备其他一些重要的特性和优化扩展能力。例如在性能方面,微信小程序服务端采用了分布式部署方式来优化性能;在扩展方面,微信
小程序还提供了一系列在后端服务器使用 HTTPS 请求调用的 API,帮助开发者在后台完成各类数据分析、管理和查询等操作。如 getAccessToken,code2Session 等。
access_token 是小程序全局唯一后台接口调用凭据,调用绝大多数后台接口时都需使用。开发者可以通过 getAccessToken 接口获取并进行妥善保存。
为了 access_token 的安全性,后端 API 不能直接在小程序内通过 wx.request 调用,即 api.weixin.qq.com 不能被配置为服务器域名。开发者应在后端服务器使用getAccessToken获取 access_token,并调用相关 API;
注意:当API调用成功时,部分接口不会返回 errcode 和 errmsg,只有调用失败时才会返回。
接入微信小程序消息推送服务,可以两种方式选择其一:
开发者需要按照如下步骤完成:
登录小程序后台后,在「开发」-「开发设置」-「消息推送」中,管理员扫码启用消息服务,填写服务器地址(URL)、令牌(Token) 和 消息加密密钥(EncodingAESKey)等信息。
同时,开发者可选择消息加解密方式:明文模式(默认)、兼容模式和安全模式。可以选择消息数据格式:XML 格式(默认)或 JSON 格式。
模式的选择与服务器配置在提交后都会立即生效,请开发者谨慎填写及选择。切换加密方式和数据格式需要提前配置好相关代码,详情请参考 消息加解密说明。
开发者提交信息后,微信服务器将发送GET请求到填写的服务器地址URL上,GET请求携带参数如下表所示:
参数 | 描述 |
---|---|
signature | 微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。 |
timestamp | 时间戳 |
nonce | 随机数 |
echostr | 随机字符串 |
开发者通过检验 signature 对请求进行校验(下面有校验方式)。若确认此次 GET 请求来自微信服务器,请原样返回 echostr 参数内容,则接入生效,成为开发者成功,否则接入失败。加密/校验流程如下:
验证URL有效性成功后即接入生效,成为开发者。
检验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示例代码下载:下载
当某些特定的用户操作引发事件推送时(如用户向小程序客服发送消息、或者进入会话等情况),微信服务器会将消息(或事件)的数据包以 POST 请求发送到开发者配置的 URL,开发者可以依据自身业务逻辑进行响应。
微信服务器在将用户的消息发给开发者服务器地址后,微信服务器在五秒内收不到响应会断掉连接,并且重新发起请求,总共重试三次。如果在调试中,发现用户无法收到响应的消息,可以检查是否消息处理超时。关于重试的消息排重,有 msgid 的消息推荐使用 msgid 排重。事件类型消息推荐使用 FromUserName + CreateTime 排重。
服务器收到请求必须做出下述回复,这样微信服务器才不会对此作任何处理,并且不会发起重试,否则,将出现严重的错误提示。详见下面说明:
对于客服消息,一旦遇到以下情况,微信会在小程序会话中向用户下发系统提示“该小程序客服暂时无法提供服务,请稍后再试”:
如果开发者希望增强安全性,可以在开发者中心处开启消息加密,这样,用户发给小程序的消息以及小程序被动回复用户消息都会继续加密,详见消息加解密说明。
需开发者工具版本至少 1.02.1906252
开通了云开发的小程序可以使用云函数接收消息推送,目前仅支持客服消息推送。
接入步骤如下:
打开云开发控制台,到设置 tab 中选择全局设置 - 添加消息推送配置。消息类型对应收包的 MsgType,事件类型对应收包的 Event,同一个 <消息类型, 事件类型> 二元组只能推到一个环境的一个云函数。例如客服消息文本消息对应的就是消息类型为 text,事件类型为空。具体值请查看各个消息的消息格式。
云函数被触发时,其 event 参数即是接口所定义的 JSON 结构的对象(统一 JSON 格式,不支持 XML 格式)。
以客服消息为例,接收到客服消息推送时,event 结构如下:
{
"FromUserName": "ohl4L0Rnhq7vmmbT_DaNQa4ePaz0",
"ToUserName": "wx3d289323f5900f8e",
"Content": "测试",
"CreateTime": 1555684067,
"MsgId": "49d72d67b16d115e7935ac386f2f0fa41535298877_1555684067",
"MsgType": "text"
}
此时可调用客服消息发送接口回复消息,一个简单的接收到消息后统一回复 “收到” 的示例如下:
// 云函数入口文件
const cloud = require("wx-server-sdk")
cloud.init()
// 云函数入口函数
exports.main = async (event, context) => {
const wxContext = cloud.getWXContext()
await cloud.openapi.customerServiceMessage.send({
touser: wxContext.OPENID,
msgtype: "text",
text: {
content: "收到",
},
})
return "success"
}
Electron 现在支持 Pepper Flash 插件。要在 Electron 里面使用 Pepper Flash 插件,你需要手动设置 Pepper Flash 的路径和在你...
备注:Electron 的原名是 Atom Shell。与 NW.js 相似,Electron 提供了一个能通过 JavaScript 和 HTML 创建桌面应用的平台,同时...
遵循下面的引导,在 Linux 上构建 Electron .PrerequisitesPython 2.7.x. 一些发行版如 CentOS 仍然使用 Python 2.6.x ,所以或...
下载Tableau DesktopTableau Desktop的免费个人版可以从 Tableau Desktop下载。 您需要注册您的详细信息才能下载。下载后,安装...
什么是Skinning?Flex中的Skinning是一个完全自定义UI组件的外观和感觉的过程。皮肤可以定义组件的文本,图像,过滤器,过渡和状...