View Source WeChat (wechat v0.16.0)
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)
企业微信
详情请看 WeChat.Work
微信支付
详情请看 WeChat.Pay
Summary
Types
client
的应用类型
公众号/小程序 应用id
应用秘钥
是否第三方平台开发
公众号/小程序 应用代码
第三方平台应用id
第三方平台应用秘钥
错误码
错误信息
OpenID 普通用户的标识,对当前公众号唯一
参数
服务器角色
服务器配置里的 token
值,在接收消息时用于校验签名
UnionID 不同应用下的唯一ID
Types
@type app_type() :: :official_account | :mini_program
client
的应用类型
:official_account
: 公众号:mini_program
: 小程序
@type appid() :: String.t()
公众号/小程序 应用id
@type appsecret() :: String.t()
应用秘钥
@type by_component?() :: boolean()
是否第三方平台开发
@type client() :: module()
@type code_name() :: String.t()
公众号/小程序 应用代码
@type component_appid() :: String.t()
第三方平台应用id
@type component_appsecret() :: String.t()
第三方平台应用秘钥
@type env_option() ::
:runtime_env | {:runtime_env, app()} | :compile_env | {:compile_env, app()}
@type err_code() :: non_neg_integer()
错误码
@type err_msg() :: String.t()
错误信息
@type openid() :: String.t()
OpenID 普通用户的标识,对当前公众号唯一
加密后的微信号,每个用户对每个公众号的 OpenID
是唯一的。对于不同公众号,同一用户的 OpenID
不同
@type openid_list() :: [openid()]
@type options() :: [ server_role: server_role() | env_option(), by_component?: by_component?() | env_option(), app_type: app_type() | env_option(), storage: WeChat.Storage.Adapter.t() | env_option(), appid: appid(), appsecret: appsecret() | env_option(), component_appid: component_appid(), component_appsecret: component_appsecret() | env_option(), encoding_aes_key: WeChat.ServerMessage.Encryptor.encoding_aes_key() | env_option(), token: token() | env_option(), requester: module() ]
参数
参数说明
appid
: 应用ID,必填app_type
: 应用类型, 默认值::official_account
code_name
: 如不指定,默认为模块名最后一个名称的全小写格式by_component?
: 是否第三方平台开发, 默认值:false
server_role
: 服务器角色, 默认值::client
storage
: 存储器, 默认值:WeChat.Storage.File
appsecret
: 应用秘钥, 仅在by_component?
设定为false
时才有效component_appid
: 第三方平台应用id, 仅在by_component?
设定为true
时才有效component_appsecret
: 第三方平台应用秘钥, 仅在by_component?
设定为true
时才有效encoding_aes_key
: 在编译时会自动将encoding_aes_key
转换为aes_key
token
: Tokenrequester
: 请求客户端, 默认值:WeChat.Requester
gen_sub_module?
: 是否生成子模块,默认值: truesub_modules
: 指定生成子模块的列表
@type requester() :: module()
@type response() :: Tesla.Env.result()
@type server_role() :: :client | :hub | :hub_client
服务器角色
:client
: 默认,主动刷新 AccessToken
:hub
: 中控服务器,主动刷新 AccessToken
:hub_client
: 逻辑服务器,从 hub
获取 AccessToken
@type start_options() :: %{ optional(:hub_springboard_url) => WeChat.HubClient.hub_springboard_url(), optional(:oauth2_callbacks) => WeChat.HubServer.oauth2_callbacks(), optional(:refresh_before_expired) => WeChat.Refresher.Default.refresh_before_expired(), optional(:refresh_retry_interval) => WeChat.Refresher.Default.refresh_retry_interval(), optional(:refresh_options) => WeChat.Refresher.DefaultSettings.refresh_options() }
@type token() :: String.t()
服务器配置里的 token
值,在接收消息时用于校验签名
@type unionid() :: String.t()
UnionID 不同应用下的唯一ID
同一用户,对同一个微信开放平台下的不同应用,UnionID
是相同的
Functions
@spec add_to_refresher(client(), WeChat.Refresher.Default.client_setting()) :: :ok
将 client 添加到刷新器
动态构建 client
通过 appid
或者 code_name
获取 client
@spec get_client_agent(appid() | code_name(), WeChat.Work.agent() | String.t()) :: nil | {client(), WeChat.Work.Agent.t()}
@spec refresher() :: module()
刷新器
@spec shutdown_client(client()) :: :ok
动态关闭 client
@spec start_client(client(), start_options()) :: :ok
动态启动 client