配置微信公众号后台
================
WeAuth在正式运行之前，需要您在微信公众号后台进行相关设置。

本章教程将从注册微信公众号开始介绍如何将WeAuth服务器接入微信公众平台。

注册公众号
--------

您可以前往 `微信公众平台官网 <https://mp.weixin.qq.com>`__ 进行注册。值得一提的是，
自2024年10月起，个人也可以注册微信服务号。而在以往，个人只能注册订阅号。

对于WeAuth而言，订阅号与服务号没有区别，个人身份注册与企业身份注册也不会影响任何功能。

.. list-table::
    :header-rows: 1

    * - 功能
      - 服务号
      - 订阅号
    * - 显示位置
      - 聊天主页
      - 订阅号折叠页面
    * - 群发能力
      - 4条/一个月
      - 1条/一天
    * - 自定义菜单
      - 有
      - 有
    * - 关注自动回复
      - 有
      - 有


.. warning::
    对于个人主体，每个身份证只能注册一个公众号(订阅号或服务号)。

.. tip::
    如果您使用个人主体注册了服务号，则默认没有邮箱和密码，需要到您先 `找回账号 <https://developers.weixin.qq.com/community/develop/doc/000c485ae8048082fb52008296b800>`__ ，才能开启开发者密钥。


验证服务器地址
------------

进入服务器配置页面
~~~~~~~~~~~~~~~

完成注册公众号后，登录公众号后台，在左侧选择“设置与开发”-“开发接口管理”，然后启用开发者功能。

之后您会看见“服务器配置(未启用)”一栏，里面包含 ``服务器地址(URL)`` , ``令牌(Token)``, ``消息加解密密钥`` , ``消息加解密方式`` 。

暂时不要填写这些内容，因为只有验证成功才能保存服务器配置。

.. list-table::
    :header-rows: 1

    * - 项目
      - 用途
      - 填写方式
    * - 服务器地址
      - 访问WeAuth web服务的URL地址
      - ``http://公网地址/路由地址``
    * - 令牌(Token)
      - 用于验证运算
      - 任意填写，与后续保持一致
    * - 消息加解密密钥
      - 用于加密模式加解密使用
      - 暂时不支持，选择随机生成即可
    * - 消息加解密方式
      - 微信服务器与WeAuth服务器传递消息模式
      - 选择“明文模式”，后续将支持其他模式

开启WeAuth验证模式
~~~~~~~~~~~~~~~~

请跳转到 :doc:`/quick_start/only_for_wechat_confirm`

开启验证模式后，您可以在“服务器配置”中填写服务器地址和token。点击“提交”时，微信便会向WeAuth发送验证请求，如果一切正常，会显示验证成功。

填写config.yaml
---------------

登录公众号后台，在左侧选择“设置与开发”-“开发接口管理”，查看“账号开发信息”。

其中，``开发者ID(AppID)`` 对应config.yaml文件中的 ``appID`` 。 ``开发者密码(AppSecret)`` 对应 ``AppSecret`` 。

此外，您还要将运行WeAuth的服务器IP放入白名单。

登录公众号后台，在左侧点击公众号头像，选择“账号详情”，将“原始ID”填入config.yaml的 ``WxUserName`` 。

如果您使用http服务，请将config.yaml中的 ``ssl`` 设置为 ``0`` 。 （1.6.0起支持）

如果您使用https服务，请将config.yaml中的 ``ssl`` 设置为 ``1`` ，并填写ssl证书文件路径。 （1.6.0起支持）

最后，config.yaml中的 ``url`` 与您先前使用WeAuth验证模式的路由参数保持一致，默认为 ``/wx`` 。

.. note::
    config.yaml的设置应该与您进行微信验证时相同，包括路由地址和是否使用https。

测试配置是否正确
~~~~~~~~~~~~~~

您可以运行WeAuth的微信端测试模式。（1.6.1起支持）

.. code-block:: bash

    weauth -wtest

当WeAuth开始运行时，请您使用手机微信给您的公众号发送消息。如果配置正确，则会显示收到微信服务器消息。

至此，WeAuth可以正常接收到来自微信服务器的消息，包括用户发送的文本消息和订阅/取消订阅事件。