Documentation ¶
Overview ¶
微信公众平台(订阅号&服务号) SDK 的核心库
Index ¶
- Constants
- type AccessToken
- type AccessTokenServer
- type Client
- func (clt *Client) GetJSON(incompleteURL string, response interface{}) (err error)
- func (clt *Client) PostJSON(incompleteURL string, request interface{}, response interface{}) (err error)
- func (clt *Client) PostMultipartForm(incompleteURL string, fields []MultipartFormField, response interface{}) (err error)
- type Context
- type DefaultAccessTokenServer
- func (srv *DefaultAccessTokenServer) Debug() bool
- func (srv *DefaultAccessTokenServer) RefreshToken(currentToken string) (token string, err error)
- func (srv *DefaultAccessTokenServer) SetDebug(debug bool)
- func (srv *DefaultAccessTokenServer) SetUpdateTokenCallback(h TokenUpdateHandler)
- func (srv *DefaultAccessTokenServer) Token() (token string, err error)
- func (srv *DefaultAccessTokenServer) UpdateTicket(ticket *Ticket) error
- type DefaultTokenStorage
- type Error
- type MultipartFormField
- type Ticket
- type TicketStorage
- type TokenStorage
- type TokenUpdateHandler
Constants ¶
View Source
const ( ErrCodeOK = 0 ErrCodeInvalidCredential = 40001 // access_token 过期错误码 ErrCodeAccessTokenExpired = 42001 // access_token 过期错误码(maybe!!!) )
Variables ¶
This section is empty.
Functions ¶
This section is empty.
Types ¶
type AccessToken ¶
type AccessTokenServer ¶
type AccessTokenServer interface { UpdateTicket(ticket *Ticket) error Token() (token string, err error) // 请求中控服务器返回缓存的 access_token Debug() bool SetDebug(bool) RefreshToken(currentToken string) (token string, err error) // 请求中控服务器刷新 access_token }
access_token 中控服务器接口.
type Client ¶
type Client struct { AccessTokenServer HttpClient *http.Client }
func NewClient ¶
func NewClient(srv AccessTokenServer, clt *http.Client) *Client
NewClient 创建一个新的 Client.
如果 clt == nil 则默认用 util.DefaultHttpClient
func (*Client) GetJSON ¶
GetJSON HTTP GET 微信资源, 然后将微信服务器返回的 JSON 用 encoding/json 解析到 response.
NOTE: 1. 一般不需要调用这个方法, 请直接调用高层次的封装函数; 2. 最终的 URL == incompleteURL + access_token; 3. response 格式有要求, 要么是 *Error, 要么是下面结构体的指针(注意 Error 必须是第一个 Field): struct { Error ... }
func (*Client) PostJSON ¶
func (clt *Client) PostJSON(incompleteURL string, request interface{}, response interface{}) (err error)
PostJSON 用 encoding/json 把 request marshal 为 JSON, HTTP POST 到微信服务器, 然后将微信服务器返回的 JSON 用 encoding/json 解析到 response.
NOTE: 1. 一般不需要调用这个方法, 请直接调用高层次的封装函数; 2. 最终的 URL == incompleteURL + access_token; 3. response 格式有要求, 要么是 *Error, 要么是下面结构体的指针(注意 Error 必须是第一个 Field): struct { Error ... }
func (*Client) PostMultipartForm ¶
func (clt *Client) PostMultipartForm(incompleteURL string, fields []MultipartFormField, response interface{}) (err error)
PostMultipartForm 通用上传接口.
--BOUNDARY Content-Disposition: form-data; name="FIELDNAME"; filename="FILENAME" Content-Type: application/octet-stream FILE-CONTENT --BOUNDARY Content-Disposition: form-data; name="FIELDNAME" JSON-DESCRIPTION --BOUNDARY-- NOTE: 1. 一般不需要调用这个方法, 请直接调用高层次的封装函数; 2. 最终的 URL == incompleteURL + access_token; 3. response 格式有要求, 要么是 *Error, 要么是下面结构体的指针(注意 Error 必须是第一个 Field): struct { Error ... }
type Context ¶
type Context struct { ResponseWriter http.ResponseWriter Request *http.Request QueryParams url.Values // 回调请求 URL 的查询参数集合 EncryptType string // 回调请求 URL 的加密方式参数: encrypt_type MsgSignature string // 回调请求 URL 的消息体签名参数: msg_signature Signature string // 回调请求 URL 的签名参数: signature Timestamp int64 // 回调请求 URL 的时间戳参数: timestamp Nonce string // 回调请求 URL 的随机数参数: nonce MsgCiphertext []byte // 消息的密文文本 MsgPlaintext []byte // 消息的明文文本, xml格式 MixedMsg *core.MixedMsg // 消息 Token string // 当前消息所属公众号的 Token AESKey []byte // 当前消息加密所用的 aes-key, read-only!!! Random []byte // 当前消息加密所用的 random, 16-bytes AppId string // 当前消息加密所用的 AppId }
Context 是 Handler 处理消息(事件)的上下文环境. 非并发安全!
type DefaultAccessTokenServer ¶
type DefaultAccessTokenServer struct {
// contains filtered or unexported fields
}
DefaultAccessTokenServer 实现了 AccessTokenServer 接口.
NOTE: 1. 用于单进程环境. 2. 因为 DefaultAccessTokenServer 同时也是一个简单的中控服务器, 而不是仅仅实现 AccessTokenServer 接口, 所以整个系统只能存在一个 DefaultAccessTokenServer 实例!
func NewDefaultAccessTokenServer ¶
func NewDefaultAccessTokenServer(appId, appSecret string, ticketStorage TicketStorage, tokenStorage TokenStorage, httpClient *http.Client) (srv *DefaultAccessTokenServer)
NewDefaultAccessTokenServer 创建一个新的 DefaultAccessTokenServer, 如果 httpClient == nil 则默认使用 util.DefaultHttpClient.
func (*DefaultAccessTokenServer) Debug ¶
func (srv *DefaultAccessTokenServer) Debug() bool
func (*DefaultAccessTokenServer) RefreshToken ¶
func (srv *DefaultAccessTokenServer) RefreshToken(currentToken string) (token string, err error)
func (*DefaultAccessTokenServer) SetDebug ¶
func (srv *DefaultAccessTokenServer) SetDebug(debug bool)
func (*DefaultAccessTokenServer) SetUpdateTokenCallback ¶
func (srv *DefaultAccessTokenServer) SetUpdateTokenCallback(h TokenUpdateHandler)
func (*DefaultAccessTokenServer) Token ¶
func (srv *DefaultAccessTokenServer) Token() (token string, err error)
func (*DefaultAccessTokenServer) UpdateTicket ¶
func (srv *DefaultAccessTokenServer) UpdateTicket(ticket *Ticket) error
type DefaultTokenStorage ¶
type DefaultTokenStorage struct {
// contains filtered or unexported fields
}
func (*DefaultTokenStorage) Get ¶
func (this *DefaultTokenStorage) Get() *AccessToken
func (*DefaultTokenStorage) Put ¶
func (this *DefaultTokenStorage) Put(token *AccessToken) error
type MultipartFormField ¶
type TicketStorage ¶
type TokenStorage ¶
type TokenStorage interface { Get() *AccessToken Put(token *AccessToken) error }
type TokenUpdateHandler ¶
Click to show internal directories.
Click to hide internal directories.