- update wechatoffice

master
李光春 2 years ago
parent 344a515fba
commit 508ee7c0f8

@ -21,7 +21,7 @@ type CgiBinTicketGetTicketResult struct {
Err error // 错误
}
func NewCgiBinTicketGetTicketResult(result CgiBinTicketGetTicketResponse, body []byte, http gorequest.Response, err error) *CgiBinTicketGetTicketResult {
func newCgiBinTicketGetTicketResult(result CgiBinTicketGetTicketResponse, body []byte, http gorequest.Response, err error) *CgiBinTicketGetTicketResult {
return &CgiBinTicketGetTicketResult{Result: result, Body: body, Http: http, Err: err}
}
@ -29,9 +29,9 @@ func NewCgiBinTicketGetTicketResult(result CgiBinTicketGetTicketResponse, body [
// https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/JS-SDK.html
func (c *Client) CgiBinTicketGetTicket(Type string) *CgiBinTicketGetTicketResult {
// request
request, err := c.request(fmt.Sprintf("https://api.weixin.qq.com/cgi-bin/ticket/getticket?access_token=%s&type=%s", c.getAccessToken(), Type), map[string]interface{}{}, http.MethodGet)
request, err := c.request(fmt.Sprintf(apiUrl+"/cgi-bin/ticket/getticket?access_token=%s&type=%s", c.getAccessToken(), Type), map[string]interface{}{}, http.MethodGet)
// 定义
var response CgiBinTicketGetTicketResponse
err = json.Unmarshal(request.ResponseBody, &response)
return NewCgiBinTicketGetTicketResult(response, request.ResponseBody, request, err)
return newCgiBinTicketGetTicketResult(response, request.ResponseBody, request, err)
}

@ -21,7 +21,7 @@ type CgiBinTokenResult struct {
Err error // 错误
}
func NewCgiBinTokenResult(result CgiBinTokenResponse, body []byte, http gorequest.Response, err error) *CgiBinTokenResult {
func newCgiBinTokenResult(result CgiBinTokenResponse, body []byte, http gorequest.Response, err error) *CgiBinTokenResult {
return &CgiBinTokenResult{Result: result, Body: body, Http: http, Err: err}
}
@ -30,9 +30,9 @@ func NewCgiBinTokenResult(result CgiBinTokenResponse, body []byte, http goreques
// https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/access-token/auth.getAccessToken.html
func (c *Client) CgiBinToken() *CgiBinTokenResult {
// request
request, err := c.request(fmt.Sprintf("https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=%s&secret=%s", c.getAppId(), c.getAppSecret()), map[string]interface{}{}, http.MethodGet)
request, err := c.request(fmt.Sprintf(apiUrl+"/cgi-bin/token?grant_type=client_credential&appid=%s&secret=%s", c.getAppId(), c.getAppSecret()), map[string]interface{}{}, http.MethodGet)
// 定义
var response CgiBinTokenResponse
err = json.Unmarshal(request.ResponseBody, &response)
return NewCgiBinTokenResult(response, request.ResponseBody, request, err)
return newCgiBinTokenResult(response, request.ResponseBody, request, err)
}

@ -23,7 +23,7 @@ type CgiBinUserGetResult struct {
Err error // 错误
}
func NewCgiBinUserGetResult(result CgiBinUserGetResponse, body []byte, http gorequest.Response, err error) *CgiBinUserGetResult {
func newCgiBinUserGetResult(result CgiBinUserGetResponse, body []byte, http gorequest.Response, err error) *CgiBinUserGetResult {
return &CgiBinUserGetResult{Result: result, Body: body, Http: http, Err: err}
}
@ -31,9 +31,9 @@ func NewCgiBinUserGetResult(result CgiBinUserGetResponse, body []byte, http gore
// https://developers.weixin.qq.com/doc/offiaccount/User_Management/Getting_a_User_List.html
func (c *Client) CgiBinUserGet(nextOpenid string) *CgiBinUserGetResult {
// 请求
request, err := c.request(fmt.Sprintf("https://api.weixin.qq.com/cgi-bin/user/get?access_token=%s&next_openid=%s", c.getAccessToken(), nextOpenid), map[string]interface{}{}, http.MethodGet)
request, err := c.request(fmt.Sprintf(apiUrl+"/cgi-bin/user/get?access_token=%s&next_openid=%s", c.getAccessToken(), nextOpenid), map[string]interface{}{}, http.MethodGet)
// 定义
var response CgiBinUserGetResponse
err = json.Unmarshal(request.ResponseBody, &response)
return NewCgiBinUserGetResult(response, request.ResponseBody, request, err)
return newCgiBinUserGetResult(response, request.ResponseBody, request, err)
}

@ -33,7 +33,7 @@ type CgiBinUserInfoResult struct {
Err error // 错误
}
func NewCgiBinUserInfoResult(result CgiBinUserInfoResponse, body []byte, http gorequest.Response, err error) *CgiBinUserInfoResult {
func newCgiBinUserInfoResult(result CgiBinUserInfoResponse, body []byte, http gorequest.Response, err error) *CgiBinUserInfoResult {
return &CgiBinUserInfoResult{Result: result, Body: body, Http: http, Err: err}
}
@ -41,9 +41,9 @@ func NewCgiBinUserInfoResult(result CgiBinUserInfoResponse, body []byte, http go
// https://developers.weixin.qq.com/doc/offiaccount/User_Management/Get_users_basic_information_UnionID.html#UinonId
func (c *Client) CgiBinUserInfo(openid string) *CgiBinUserInfoResult {
// 请求
request, err := c.request(fmt.Sprintf("https://api.weixin.qq.com/cgi-bin/user/info?access_token=%s&openid=%s&lang=zh_CN", c.getAccessToken(), openid), map[string]interface{}{}, http.MethodGet)
request, err := c.request(fmt.Sprintf(apiUrl+"/cgi-bin/user/info?access_token=%s&openid=%s&lang=zh_CN", c.getAccessToken(), openid), map[string]interface{}{}, http.MethodGet)
// 定义
var response CgiBinUserInfoResponse
err = json.Unmarshal(request.ResponseBody, &response)
return NewCgiBinUserInfoResult(response, request.ResponseBody, request, err)
return newCgiBinUserInfoResult(response, request.ResponseBody, request, err)
}

@ -19,28 +19,30 @@ type ConfigClient struct {
// Client 微信公众号服务
type Client struct {
client *gorequest.App // 请求客户端
log *golog.Api // 日志服务
logTableName string // 日志表名
logStatus bool // 日志状态
config *ConfigClient // 配置
client *gorequest.App // 请求客户端
log *golog.ApiClient // 日志服务
logStatus bool // 日志状态
config *ConfigClient // 配置
}
func NewClient(config *ConfigClient) *Client {
func NewClient(config *ConfigClient) (*Client, error) {
var err error
c := &Client{config: config}
c.client = gorequest.NewHttp()
if c.config.PgsqlDb != nil {
c.logStatus = true
c.logTableName = "wechatoffice"
c.log = golog.NewApi(&golog.ApiConfig{
c.log, err = golog.NewApiClient(&golog.ConfigApiClient{
Db: c.config.PgsqlDb,
TableName: c.logTableName,
TableName: logTable,
})
if err != nil {
return nil, err
}
}
return c
return c, nil
}
// ConfigApp 配置
@ -49,35 +51,3 @@ func (c *Client) ConfigApp(appId, appSecret string) *Client {
c.config.AppSecret = appSecret
return c
}
// 请求接口
func (c *Client) request(url string, params map[string]interface{}, method string) (resp gorequest.Response, err error) {
// 创建请求
client := c.client
// 设置请求地址
client.SetUri(url)
// 设置方式
client.SetMethod(method)
// 设置格式
client.SetContentTypeJson()
// 设置参数
client.SetParams(params)
// 发起请求
request, err := client.Request()
if err != nil {
return gorequest.Response{}, err
}
// 日志
if c.logStatus == true {
go c.postgresqlLog(request)
}
return request, err
}

@ -0,0 +1,9 @@
package wechatoffice
const (
apiUrl = "https://api.weixin.qq.com"
)
const (
logTable = "wechatoffice"
)

@ -19,7 +19,7 @@ type DebugCgiBinTicketCheckResult struct {
Err error // 错误
}
func NewDebugCgiBinTicketCheckResult(result DebugCgiBinTicketCheckResponse, body []byte, http gorequest.Response, err error) *DebugCgiBinTicketCheckResult {
func newDebugCgiBinTicketCheckResult(result DebugCgiBinTicketCheckResponse, body []byte, http gorequest.Response, err error) *DebugCgiBinTicketCheckResult {
return &DebugCgiBinTicketCheckResult{Result: result, Body: body, Http: http, Err: err}
}
@ -31,5 +31,5 @@ func (c *Client) DebugCgiBinTicketCheck() *DebugCgiBinTicketCheckResult {
// 定义
var response DebugCgiBinTicketCheckResponse
err = json.Unmarshal(request.ResponseBody, &response)
return NewDebugCgiBinTicketCheckResult(response, request.ResponseBody, request, err)
return newDebugCgiBinTicketCheckResult(response, request.ResponseBody, request, err)
}

@ -18,7 +18,7 @@ type GetCallBackIpResult struct {
Err error // 错误
}
func NewGetCallBackIpResult(result GetCallBackIpResponse, body []byte, http gorequest.Response, err error) *GetCallBackIpResult {
func newGetCallBackIpResult(result GetCallBackIpResponse, body []byte, http gorequest.Response, err error) *GetCallBackIpResult {
return &GetCallBackIpResult{Result: result, Body: body, Http: http, Err: err}
}
@ -27,9 +27,9 @@ func NewGetCallBackIpResult(result GetCallBackIpResponse, body []byte, http gore
// https://developers.weixin.qq.com/doc/offiaccount/Basic_Information/Get_the_WeChat_server_IP_address.html#2.%20%E8%8E%B7%E5%8F%96%E5%BE%AE%E4%BF%A1callback%20IP%E5%9C%B0%E5%9D%80
func (c *Client) GetCallBackIp() *GetCallBackIpResult {
// 请求
request, err := c.request(fmt.Sprintf("https://api.weixin.qq.com/cgi-bin/getcallbackip?access_token=%s", c.getAccessToken()), map[string]interface{}{}, http.MethodGet)
request, err := c.request(fmt.Sprintf(apiUrl+"/cgi-bin/getcallbackip?access_token=%s", c.getAccessToken()), map[string]interface{}{}, http.MethodGet)
// 定义
var response GetCallBackIpResponse
err = json.Unmarshal(request.ResponseBody, &response)
return NewGetCallBackIpResult(response, request.ResponseBody, request, err)
return newGetCallBackIpResult(response, request.ResponseBody, request, err)
}

@ -20,19 +20,19 @@ type MessageTemplateSendResult struct {
Err error // 错误
}
func NewMessageTemplateSendResult(result MessageTemplateSendResponse, body []byte, http gorequest.Response, err error) *MessageTemplateSendResult {
func newMessageTemplateSendResult(result MessageTemplateSendResponse, body []byte, http gorequest.Response, err error) *MessageTemplateSendResult {
return &MessageTemplateSendResult{Result: result, Body: body, Http: http, Err: err}
}
// MessageTemplateSend 模板消息
// https://developers.weixin.qq.com/doc/offiaccount/Message_Management/Template_Message_Interface.html
func (c *Client) MessageTemplateSend(notMustParams ...Params) *MessageTemplateSendResult {
func (c *Client) MessageTemplateSend(notMustParams ...gorequest.Params) *MessageTemplateSendResult {
// 参数
params := c.NewParamsWith(notMustParams...)
params := gorequest.NewParamsWith(notMustParams...)
// 请求
request, err := c.request(fmt.Sprintf("https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=%s", c.getAccessToken()), params, http.MethodPost)
request, err := c.request(fmt.Sprintf(apiUrl+"/cgi-bin/message/template/send?access_token=%s", c.getAccessToken()), params, http.MethodPost)
// 定义
var response MessageTemplateSendResponse
err = json.Unmarshal(request.ResponseBody, &response)
return NewMessageTemplateSendResult(response, request.ResponseBody, request, err)
return newMessageTemplateSendResult(response, request.ResponseBody, request, err)
}

@ -1,27 +0,0 @@
package wechatoffice
// Params 请求参数
type Params map[string]interface{}
func NewParams() Params {
p := make(Params)
return p
}
func (c *Client) NewParamsWith(params ...Params) Params {
p := make(Params)
for _, v := range params {
p.SetParams(v)
}
return p
}
func (p Params) Set(key string, value interface{}) {
p[key] = value
}
func (p Params) SetParams(params Params) {
for key, value := range params {
p[key] = value
}
}

@ -16,7 +16,7 @@ func (c *Client) postgresqlLog(request gorequest.Response) {
RequestApi: gorequest.UriParse(request.RequestUri).Path, //【请求】接口
RequestMethod: request.RequestMethod, //【请求】方式
RequestParams: datatypes.JSON(gojson.JsonEncodeNoError(request.RequestParams)), //【请求】参数
RequestHeader: datatypes.JSON(gojson.JsonEncodeNoError(request.RequestHeader)), //【返回】头部
RequestHeader: datatypes.JSON(gojson.JsonEncodeNoError(request.RequestHeader)), //【请求】头部
ResponseHeader: datatypes.JSON(gojson.JsonEncodeNoError(request.ResponseHeader)), //【返回】头部
ResponseStatusCode: request.ResponseStatusCode, //【返回】状态码
ResponseBody: request.ResponseBody, //【返回】内容

@ -0,0 +1,35 @@
package wechatoffice
import "go.dtapp.net/library/utils/gorequest"
// 请求接口
func (c *Client) request(url string, params map[string]interface{}, method string) (gorequest.Response, error) {
// 创建请求
client := c.client
// 设置请求地址
client.SetUri(url)
// 设置方式
client.SetMethod(method)
// 设置格式
client.SetContentTypeJson()
// 设置参数
client.SetParams(params)
// 发起请求
request, err := client.Request()
if err != nil {
return gorequest.Response{}, err
}
// 日志
if c.logStatus == true {
go c.postgresqlLog(request)
}
return request, err
}

@ -22,7 +22,7 @@ type ShareResult struct {
Err error // 错误
}
func NewShareResult(result ShareResponse, err error) *ShareResult {
func newShareResult(result ShareResponse, err error) *ShareResult {
return &ShareResult{Result: result, Err: err}
}
@ -38,5 +38,5 @@ func (c *Client) Share(url string) *ShareResult {
t := sha1.New()
_, err := io.WriteString(t, response.RawString)
response.Signature = fmt.Sprintf("%x", t.Sum(nil))
return NewShareResult(response, err)
return newShareResult(response, err)
}

@ -9,13 +9,13 @@ func (c *Client) pkcs7Unpaid(data []byte, blockSize int) ([]byte, error) {
if len(data)%blockSize != 0 || len(data) == 0 {
return nil, errors.New("invalid PKCS7 data")
}
c := data[len(data)-1]
n := int(c)
d := data[len(data)-1]
n := int(d)
if n == 0 || n > len(data) {
return nil, errors.New("invalid padding on input")
}
for i := 0; i < n; i++ {
if data[len(data)-n+i] != c {
if data[len(data)-n+i] != d {
return nil, errors.New("invalid padding on input")
}
}

@ -22,15 +22,15 @@ type SnsJsCode2sessionResult struct {
Err error // 错误
}
func NewSnsJsCode2sessionResult(result SnsJsCode2sessionResponse, body []byte, http gorequest.Response, err error) *SnsJsCode2sessionResult {
func newSnsJsCode2sessionResult(result SnsJsCode2sessionResponse, body []byte, http gorequest.Response, err error) *SnsJsCode2sessionResult {
return &SnsJsCode2sessionResult{Result: result, Body: body, Http: http, Err: err}
}
func (c *Client) SnsJsCode2session(jsCode string) *SnsJsCode2sessionResult {
// 请求
request, err := c.request(fmt.Sprintf("https://api.weixin.qq.com/sns/jscode2session?appid=%s&secret=%s&js_code=%s&grant_type=authorization_code", c.getAppId(), c.getAppSecret(), jsCode), map[string]interface{}{}, http.MethodGet)
request, err := c.request(fmt.Sprintf(apiUrl+"/sns/jscode2session?appid=%s&secret=%s&js_code=%s&grant_type=authorization_code", c.getAppId(), c.getAppSecret(), jsCode), map[string]interface{}{}, http.MethodGet)
// 定义
var response SnsJsCode2sessionResponse
err = json.Unmarshal(request.ResponseBody, &response)
return NewSnsJsCode2sessionResult(response, request.ResponseBody, request, err)
return newSnsJsCode2sessionResult(response, request.ResponseBody, request, err)
}

@ -22,7 +22,7 @@ type SnsOauth2AccessTokenResult struct {
Err error // 错误
}
func NewSnsOauth2AccessTokenResult(result SnsOauth2AccessTokenResponse, body []byte, http gorequest.Response, err error) *SnsOauth2AccessTokenResult {
func newSnsOauth2AccessTokenResult(result SnsOauth2AccessTokenResponse, body []byte, http gorequest.Response, err error) *SnsOauth2AccessTokenResult {
return &SnsOauth2AccessTokenResult{Result: result, Body: body, Http: http, Err: err}
}
@ -30,9 +30,9 @@ func NewSnsOauth2AccessTokenResult(result SnsOauth2AccessTokenResponse, body []b
// https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_webpage_authorization.html#0
func (c *Client) SnsOauth2AccessToken(code string) *SnsOauth2AccessTokenResult {
// 请求
request, err := c.request(fmt.Sprintf("https://api.weixin.qq.com/sns/oauth2/access_token?appid=%s&secret=%s&code=%s&grant_type=authorization_code", c.getAppId(), c.getAppSecret(), code), map[string]interface{}{}, http.MethodGet)
request, err := c.request(fmt.Sprintf(apiUrl+"/sns/oauth2/access_token?appid=%s&secret=%s&code=%s&grant_type=authorization_code", c.getAppId(), c.getAppSecret(), code), map[string]interface{}{}, http.MethodGet)
// 定义
var response SnsOauth2AccessTokenResponse
err = json.Unmarshal(request.ResponseBody, &response)
return NewSnsOauth2AccessTokenResult(response, request.ResponseBody, request, err)
return newSnsOauth2AccessTokenResult(response, request.ResponseBody, request, err)
}

@ -26,7 +26,7 @@ type SnsUserinfoResult struct {
Err error // 错误
}
func NewSnsUserinfoResult(result SnsUserinfoResponse, body []byte, http gorequest.Response, err error) *SnsUserinfoResult {
func newSnsUserinfoResult(result SnsUserinfoResponse, body []byte, http gorequest.Response, err error) *SnsUserinfoResult {
return &SnsUserinfoResult{Result: result, Body: body, Http: http, Err: err}
}
@ -34,9 +34,9 @@ func NewSnsUserinfoResult(result SnsUserinfoResponse, body []byte, http goreques
// https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_webpage_authorization.html#0
func (c *Client) SnsUserinfo(accessToken, openid string) *SnsUserinfoResult {
// 请求
request, err := c.request(fmt.Sprintf("https://api.weixin.qq.com/sns/userinfo?access_token=%s&openid=%s&lang=zh_CN", accessToken, openid), map[string]interface{}{}, http.MethodGet)
request, err := c.request(fmt.Sprintf(apiUrl+"/sns/userinfo?access_token=%s&openid=%s&lang=zh_CN", accessToken, openid), map[string]interface{}{}, http.MethodGet)
// 定义
var response SnsUserinfoResponse
err = json.Unmarshal(request.ResponseBody, &response)
return NewSnsUserinfoResult(response, request.ResponseBody, request, err)
return newSnsUserinfoResult(response, request.ResponseBody, request, err)
}

Loading…
Cancel
Save