WeChat (wechat v0.6.2)

WeChat SDK for Elixir

定义 Client 模块

公众号(默认):

defmodule YourApp.WeChatAppCodeName do
@moduledoc "CodeName"
use WeChat,
  appid: "wx-appid",
  appsecret: "appsecret"
end

小程序:

defmodule YourApp.WeChatAppCodeName do
@moduledoc "CodeName"
use WeChat,
  app_type: :mini_program,
  appid: "wx-appid",
  appsecret: "appsecret"
end

第三方应用:

defmodule YourApp.WeChatAppCodeName do
@moduledoc "CodeName"
use WeChat,
  by_component?: true,
  app_type: :official_account | :mini_program, # 默认为 :official_account
  appid: "wx-appid",
  component_appid: "wx-third-appid", # 第三方 appid
end

参数说明

请看 options/0

接口调用

支持两种方式调用:

  • 调用 client 方法

    YourApp.WeChatAppCodeName.Material.batch_get_material(:image, 2)

  • 原生调用方法

    WeChat.Material.batch_get_material(YourApp.WeChatAppCodeName, :image, 2)

Link to this section Summary

Types

client 的应用类型

公众号/小程序 应用id

应用秘钥

是否第三方平台开发

公众号/小程序 应用代码

第三方平台应用id

第三方平台应用秘钥

错误码

错误信息

OpenID 普通用户的标识,对当前公众号唯一

参数

服务器角色

服务器配置里的 token 值,在接收消息时用于校验签名

UnionID 不同应用下的唯一ID

Link to this section Types

Specs

app_type() :: :official_account | :mini_program

client 的应用类型

  • :official_account: 公众号
  • :mini_program: 小程序

Specs

appid() :: String.t()

公众号/小程序 应用id

Specs

appsecret() :: String.t()

应用秘钥

Link to this type

by_component?()

Specs

by_component?() :: boolean()

是否第三方平台开发

Specs

client() :: module()

Specs

code_name() :: String.t()

公众号/小程序 应用代码

Link to this type

component_appid()

Specs

component_appid() :: String.t()

第三方平台应用id

Link to this type

component_appsecret()

Specs

component_appsecret() :: String.t()

第三方平台应用秘钥

Specs

err_code() :: non_neg_integer()

错误码

Specs

err_msg() :: String.t()

错误信息

Specs

openid() :: String.t()

OpenID 普通用户的标识,对当前公众号唯一

加密后的微信号,每个用户对每个公众号的 OpenID 是唯一的。对于不同公众号,同一用户的 OpenID 不同

Docs Link

Link to this type

openid_list()

Specs

openid_list() :: [openid()]

Specs

options() :: [
  server_role: server_role(),
  by_component?: by_component?(),
  app_type: app_type(),
  storage: WeChat.Storage.Adapter.t(),
  appid: appid(),
  appsecret: appsecret(),
  component_appid: component_appid(),
  component_appsecret: component_appsecret(),
  encoding_aes_key: WeChat.ServerMessage.Encryptor.encoding_aes_key(),
  token: token(),
  requester: module()
]

参数

参数说明

默认参数:

Specs

requester() :: module()

Specs

response() :: Tesla.Env.result()
Link to this type

server_role()

Specs

server_role() :: :client | :hub | :hub_client

服务器角色

:client: 默认,刷新token :hub: 中控服务器,刷新token :hub_client: 逻辑服务器,获取token

Specs

token() :: String.t()

服务器配置里的 token 值,在接收消息时用于校验签名

Specs

unionid() :: String.t()

UnionID 不同应用下的唯一ID

同一用户,对同一个微信开放平台下的不同应用,UnionID 是相同的

Docs Link

Link to this section Functions

Link to this function

build_client(client, options)

Specs

build_client(client(), options()) :: {:ok, client()}

动态构建 client

Link to this function

get_client_by_appid(appid)

Specs

get_client_by_appid(appid()) :: nil | client()

根据 appid 获取 client

Link to this function

get_hub_url(client)

Specs

get_hub_url(client()) :: nil | url()
Link to this function

get_oauth2_env_url(client, env)

Specs

get_oauth2_env_url(client(), env()) :: nil | url()
Link to this function

set_hub_url(client, url)

Specs

set_hub_url(client(), url()) :: true
Link to this function

set_oauth2_env_url(client, env, url)

Specs

set_oauth2_env_url(client(), env(), url()) :: true