PlugWechat

很不幸,微信公众号的消息体是 text/xml 格式,PhoenixFramework 默认并不解析 xml,也因此我们需要引入一个 xml 解析器。

另外,我们还需要验证消息来自于微信

这两件事,都可以借助 Plug 完成,这便是 PlugWechat 的作用。

安装

mix.exs 文件中添加 plug_wechat 依赖:

def deps do
  [
    {:plug_wechat, "~> 0.2.0"}
  ]
end

在控制器文件中调用 PlugWechat.Ensure 确保消息来源:

plug PlugWechat.Ensure, [token: "wechat token here"] when action in [:setup]
def setup(_, ) do
end

此外,还需要在 endpoint.ex 文件中增加解析器如下:

plug Plug.Parsers,
    parsers: [:urlencoded, :multipart, :json, PlugWechat.Parsers.WECHAT],

这样,微信的 xml 消息体就会被解析为 map。