基于 Hapi.js 的微信服务号开发实战

阅读时长 11 分钟读完

微信服务号已经深入人心,成为了企业宣传和客户交流的重要途径。然而,微信官方文档中的开发指南可能还不够详细或者有点抽象,而 Hapi.js,一个 Node.js Web 应用框架,能够刚好填补这个空缺。

在本文中,我们将介绍如何使用 Hapi.js 搭建一个微信服务号,并实现一些简单的功能。

步骤

1. 创建微信服务号并配置开发者模式

首先,需要在微信公众平台上创建一个服务号,并配置开发者模式。

在微信公众平台的开发者中心页面中,开启开发者模式并填写 URL 和 Token,其中 URL 是你的 Hapi.js 应用的地址,Token 是你随意定义的一个字符串。

2. 搭建 Hapi.js 应用

接着,安装 Hapi.js 应用。在命令行中进入项目目录,并执行以下命令:

然后,在这个项目目录中创建一个 index.js 文件,并将以下代码插入其中:

-- -------------------- ---- -------
----- ---- - ----------------
----- ------ - --- --------------

------------------- ----- ---- ---

--------------
  ------- ------
  ----- ----
  ---------------- ------ -
    ------ ------------ ----------
  --
---

------------------ -- -
  -- ----- -
    -----------------
  -
  ------------------- ------- --- ---------------------
---

上述代码片段用于搭建一个简单的 Hapi.js 应用,并监听端口为 3000。这个应用只有一个路由,当你 GET 这个应用的主页时,它将返回 Hello Hapi.js

在终端中运行以下命令可以启动应用程序:

如果看到输出 Server running at: http://localhost:3000,则意味着你的应用程序已经正常启动了。

3. 获取微信服务号的 Token

为了完成微信服务号的开发,你需要使用微信公众平台提供的 API。其中,请求都需要 Token。

index.js 中,添加以下代码获取 Token:

-- -------------------- ---- -------
----- ---- - ----------------
----- ----------- - -----------------------

----- ------------ - -
  --------- --------------------
  ----- -----------------------------------------------------------------------------------------
  ------- ------
--

----- -------- - -- -- -
  ----- ------- - -------------------------- ---------- -- -
    --- ------ - ---
    ------------------- ------- -- -
      ------ -- ------
    ---
    ------------------ -- -- -
      ----- ----- - --------------------------------
      -------------------
    ---
  ---
  --------------
-

-----------

在上述代码中,yourAppidyourAppSecret 都需要替换为你自己的服务号的 Appid 和 App Secret。

运行后你就可以得到你的 Token。

4. 接入微信服务号

微信服务号将向你的应用程序发送两种类型的消息:GET 和 POST。在请求 URL 中提供的 Token 应该被用于验证并用来处理后续的消息。

添加以下代码段,然后启动你的应用程序,运行代码确认服务器响应请求:

-- -------------------- ---- -------
--------------
  ------- ------
  ----- ----
  ---------------- ------ -
    ----- - ---------- ---------- ------ ------- - - --------------
    ----- ----- - ------------

    ----- ----- - -------------------------------------
    ----- ---- - -------------------------------------
    ----- ---- - ------------------- ---------- --------------------------------------

    -- ---------- --- ----- -
      ------ ---------------
    -

    ------ ---------- --------------------
  --
---

--------------
  ------- -------
  ----- ----
  ---------------- ------ -
    --------------------- ---------
    ------ --------------- ----------
  --
---

在上述代码片段中,我们添加了两个路由。第一个路由处理微信服务号的 GET 请求,并验证 Token 是否有效。如果验证通过,则返回 echostr。第二个路由处理微信服务号的 POST 请求。

5. 处理微信服务号的 POST 请求

当微信服务号收到消息时,它会将消息发送到你的服务器的 URL 地址中。接下来,你的 Hapi.js 应用需要提取收到的消息。(这就是为什么我们在上一步中添加了一个 POST 路由)。

处理微信服务号 POST 请求的代码应该类似于:

-- -------------------- ---- -------
--------------
  ------- -------
  ----- ----
  ---------------- ------ -
    --- ----------- - ---
    ------------------ ------- -- -
      ----------- -- ------
    ---

    ----------------- -- -- -
      ----- ------ - ------------------
      ----- ------ - --- ---------------
        -------------- ------
        ------------ -----
      ---
      ------------------------------- ----- ------- -- -
        ------------------------
      ---
    ---
    -----------------
  --
---

在上述代码片段中,我们创建了 xml2js 实例,用于解析微信服务器发送的 POST 请求。reply 返回了一个字符串success,表示你已经正在处理发来的消息并且成功处理。

6. 处理不同类别的消息

微信服务号可以处理多个类型的消息,包括文字消息、语音消息、位置信息等等。在代码上,这通常是依据 POST 请求中的 MsgType 属性:

-- -------------------- ---- -------
--------------
  ------- -------
  ----- ----
  ---------------- ------ -
    --- ----------- - ---
    ------------------ ------- -- -
      ----------- -- ------
    ---

    ----------------- -- -- -
      ----- ------ - ------------------
      ----- ------ - --- ---------------
        -------------- ------
        ------------ -----
      ---

      ------------------------------- ----- ------- -- -
        ----- - ------- - - -----------
        ------ --------- -
          ---- -------
            --------------------- ---- -------- ------------------------
            ------
          ---- --------
            --------------------- ----- ----------
            ------
          --------
        -
      ---
    ---
    -----------------
  --
---

在上述代码片段中,我们为 Text 和 Image 消息分别添加了处理代码。更多的消息类型可以在微信官方文档中找到。

总结

在本文中,我们学习了如何使用 Hapi.js 开发微信服务号应用,了解了如何处理微信服务号发来的 GET 和 POST 请求,并做了一些简单的消息处理。

这只是一个入门教程,并只包含了开发的基础内容,当然,你可以使用 Hapi.js 来创建更加高级的应用程序。使用下面的代码将会有不错的效果,同时,不会有必要再从零开始创建你的应用了。

可以把这个 Hapi.js 应用转换成一个包,然后发布到 NPM。这是对微信服务号开发的关键之一,将返回的消息构造成标准的 XML 并使用 reply 作出响应。

-- -------------------- ---- -------
----- ---- - ----------------
----- ------ - ------------------

----- ------ - --- --------------

------------------- ----- ---- ---

--------------
  ------- ------
  ----- ----
  ---------------- ------ -
    ----- - ---------- ---------- ------ ------- - - --------------
    ----- ----- - ------------

    ----- ----- - -------------------------------------
    ----- ---- - -------------------------------------
    ----- ---- - ------------------- ---------- --------------------------------------

    -- ---------- --- ----- -
      ------ ---------------
    -

    ------ ---------- --------------------
  --
---

--------------
  ------- -------
  ----- ----
  ---------------- ------ -
    --- ----------- - ---
    ------------------ ------- -- -
      ----------- -- ------
    ---

    ----------------- -- -- -
      ----- ------ - --- ---------------
        -------------- ------
        ------------ -----
      ---

      ------------------------------- ----- ------- -- -
        ----- ------- - --------------------------
        ---------------
      ---
    ---
  --
---


----- ------------- - ------------- -
  ----- ------- - -
    ----------- -----------------
    ------------- ---------------
    ----------- -----------
    -------- -------
  --
  ------ ------------- -
    ---- -------
      --------------- - ---- ---- --- -------- ----------------
      ------
    ---- -----------
      --------------- - ----- -------- --- ------------------ -------------------
      ------
    --------
      --------------- - ------- - ------ ---------- ---- --- -------
  -
  ----- ------- - --- ---------------- --------- ----- ---
  ------ -----------------------------
-

使用这个初步的 Hapi.js 应用,你可以在微信公众平台中回答用户的消息。通常情况下,应用程序只是解析消息然后返回简单的响应。如果有需要,操作也是可能的,例如将消息存储到数据库中、将用户发送过来的消息传递到 API 或者做出网络请求。

我希望你在本文中找到了你需要的关键信息,并能够在实践当中使用 Hapi.js 创建一个微信服务号应用。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64687532968c7c53b08aa1d1

纠错
反馈