Nie możesz wybrać więcej, niż 25 tematów Tematy muszą się zaczynać od litery lub cyfry, mogą zawierać myślniki ('-') i mogą mieć do 35 znaków.

56 lines
1.5KB

  1. package main
  2. import (
  3. "encoding/json"
  4. "fmt"
  5. "io/ioutil"
  6. "log"
  7. "net/http"
  8. )
  9. func onSubscribe(in InWechatMsg) {
  10. openID := in.header.FromUserName
  11. //getUser fromCRM
  12. info := WechatUserInfo{}
  13. info.getUserInfo(in.header.FromUserName, "zh-CN")
  14. log.Println(openID + " information get above onSubscribe")
  15. }
  16. //WechatUserInfo response for wechat user info.
  17. type WechatUserInfo struct {
  18. Subscribe int32 `json:"subscribe"`
  19. OpenID string `json:"openid"`
  20. NickName string `json:"nickname"`
  21. Sex int32 `json:"sex"` //0 未知 1 男 2 女
  22. Language string `json:"language"`
  23. City string `json:"city"`
  24. Province string `json:"province"`
  25. Country string `json:"country"`
  26. Avatar string `json:"headimgurl"`
  27. SubscribeTime int32 `json:"subscribe_time"`
  28. UnionID string `json:"unionid"`
  29. Remark string `json:"remark"`
  30. GroupID int32 `json:"groupid"`
  31. TagIDList []int32 `json:"tagid_list"`
  32. }
  33. func (m *WechatUserInfo) getUserInfo(openID string, lang string) {
  34. url := m.getURL(openID, lang)
  35. resp, err := http.Get(url)
  36. if err != nil {
  37. }
  38. b, err := ioutil.ReadAll(resp.Body)
  39. err = json.Unmarshal(b, m)
  40. log.Println(m)
  41. }
  42. //lang 返回国家地区语言版本,zh_CN 简体,zh_TW 繁体,en 英语
  43. func (m *WechatUserInfo) getURL(openID, lang string) string {
  44. atk, _ := GetAccessToken()
  45. u := fmt.Sprintf("https://api.weixin.qq.com/cgi-bin/user/info?access_token=%s&openid=%s&lang=%s", atk, openID, lang)
  46. return u
  47. }
  48. func (m *WechatUserInfo) save2CRM() {
  49. }