View Source WeChat (wechat v0.10.4)
WeChat SDK for Elixir
定义-client-模块
定义 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
企业微信
企业微信
defmodule YourApp.WeChatAppCodeName do
@moduledoc "CodeName"
use WeChat.Work,
corp_id: "corp_id",
agents: [%Work.Agent{name: :agent_name, id: 10000, secret: "your_secret"}, ...]
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
Functions
动态构建 client
通过 appid
或者 code_name
获取 client
set hub_springboard_url for hub client
set hub_springboard_url for hub client
set oauth2_env_url for hub server
set oauth2_env_url for hub server
Link to this section 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 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(), 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() ]
参数
参数说明
参数说明
appid
:appid/0
- 必填app_type
:app_type/0
code_name
:code_name/0
, 如不指定,默认为模块名最后一个名称的全小写格式by_component?
:by_component?/0
server_role
:server_role/0
storage
:t:WeChat.Storage.Adapter.t()
appsecret
:appsecret/0
- 仅在by_component?
设定为false
时才有效component_appid
:component_appid/0
- 仅在by_component?
设定为true
时才有效component_appsecret
:component_appsecret/0
- 仅在by_component?
设定为true
时才有效encoding_aes_key
:WeChat.ServerMessage.Encryptor.encoding_aes_key/0
- 在编译时会自动将encoding_aes_key
转换为aes_key
token
:token/0
requester
: 请求客户端 -module/0
gen_sub_module?
: 是否生成子模块,默认生成sub_modules
: 指定生成子模块的列表
默认参数
默认参数:
server_role
::client
by_component?
:false
app_type
::official_account
storage
:WeChat.Storage.File
requester
:WeChat.Requester
gen_sub_module?
: true
@type requester() :: module()
@type response() :: Tesla.Env.result()
@type server_role() :: :client | :hub | :hub_client
服务器角色
:client
: 默认,主动刷新 AccessToken
:hub
: 中控服务器,主动刷新 AccessToken
:hub_client
: 逻辑服务器,从 hub
获取 AccessToken
@type token() :: String.t()
服务器配置里的 token
值,在接收消息时用于校验签名
@type unionid() :: String.t()
UnionID 不同应用下的唯一ID
同一用户,对同一个微信开放平台下的不同应用,UnionID
是相同的
Link to this section Functions
动态构建 client
通过 appid
或者 code_name
获取 client
@spec get_client_agent(appid() | code_name(), WeChat.Work.agent() | String.t()) :: nil | {client(), WeChat.Work.Agent.t()}
@spec get_hub_springboard_url(client()) :: nil | url()
@spec get_hub_springboard_url(client(), WeChat.Work.agent()) :: nil | url()
@spec get_oauth2_env_url(client(), env()) :: nil | url()
@spec get_oauth2_env_url(client(), WeChat.Work.agent(), env()) :: nil | url()
@spec set_hub_springboard_url(client(), url()) :: true
set hub_springboard_url for hub client
@spec set_hub_springboard_url(client(), WeChat.Work.agent(), url()) :: true
set hub_springboard_url for hub client
@spec set_oauth2_env_url(client(), env(), url()) :: true
set oauth2_env_url for hub server
@spec set_oauth2_env_url(client(), WeChat.Work.agent(), env(), url()) :: true
set oauth2_env_url for hub server