Вы не можете выбрать более 25 тем Темы должны начинаться с буквы или цифры, могут содержать дефисы(-) и должны содержать не более 35 символов.

157 lines
3.5KB

  1. package main
  2. import (
  3. "bytes"
  4. "fmt"
  5. "io/ioutil"
  6. "net/http"
  7. )
  8. //menu is a json definition
  9. var menu = []byte(`
  10. {
  11. "button":[
  12. {
  13. "name":"会员信息",
  14. "sub_button":[
  15. {
  16. "type":"click",
  17. "name":"我的会员资料",
  18. "key": "MEMBER_MYPROFILE"
  19. },
  20. {
  21. "type":"click",
  22. "name":"积分和账单",
  23. "key": "MEMBER_CREDITS"
  24. },
  25. {
  26. "type":"click",
  27. "name":"搜索其他会员信息",
  28. "key":"MEMBER_SEARCH"
  29. },
  30. {
  31. "type":"click",
  32. "name":"广播给所有会员",
  33. "key":"MEMBER_BROADCAST"
  34. }
  35. ]
  36. },
  37. {
  38. "name":"组织活动",
  39. "sub_button":[
  40. {
  41. "type":"click",
  42. "name":"我来发起一次活动",
  43. "key": "EVENT_STARTONE"
  44. },
  45. {
  46. "type":"click",
  47. "name":"参与直播活动",
  48. "key": "EVENT_CONTRIBUTEPHOTO"
  49. },
  50. {
  51. "type":"click",
  52. "name":"签到当前活动",
  53. "key": "EVENT_CHECKIN"
  54. },
  55. {
  56. "type":"click",
  57. "name":"参与幸运抽奖",
  58. "key": "EVENT_LUCKYDRAW"
  59. },
  60. {
  61. "type":"click",
  62. "name":"即将举办的活动",
  63. "key":"EVENTS_UPCOMING"
  64. }]
  65. },
  66. {
  67. "name":"职业发展",
  68. "sub_button":[
  69. {
  70. "type":"click",
  71. "name":"澳洲工作机会",
  72. "key": "CAREERDEV_JOBS"
  73. },
  74. {
  75. "type":"click",
  76. "name":"融入澳洲社区",
  77. "key": "CARDEV_INDUSTRY"
  78. },
  79. {
  80. "type":"click",
  81. "name":"母校发展机会",
  82. "key": "CARDEV_HIT"
  83. },
  84. {
  85. "type":"click",
  86. "name":"全球发展机会",
  87. "key":"CARDEV_TRANSPORT"
  88. }]
  89. }
  90. ]
  91. }
  92. `)
  93. //CreateCustomMenu bulid a menu for wechat windows
  94. // 3 main manu max (< 4 mandarin words)
  95. // 5 sub items max (< 7 mandarin words)
  96. //success return nil
  97. //error return err
  98. func CreateCustomMenu(m []byte) error {
  99. atoken, err := GetAccessToken()
  100. if err != nil {
  101. return err
  102. }
  103. url := fmt.Sprintf("https://api.weixin.qq.com/cgi-bin/menu/create?access_token=%s", atoken)
  104. if len(m) == 0 {
  105. m = menu //using default menu
  106. }
  107. return jsonPostRequest(url, m)
  108. }
  109. //CreateDefaultMenu build a menu for wechat window
  110. //
  111. func CreateDefaultMenu() error {
  112. var b []byte
  113. return CreateCustomMenu(b)
  114. }
  115. //jsonPostRequest perform http post request with json body
  116. // url is the url to post to
  117. // jsonBody is the payload in http post request
  118. func jsonPostRequest(url string, jsonBody []byte) error {
  119. req, err := http.NewRequest("POST", url, bytes.NewBuffer(jsonBody))
  120. if err != nil {
  121. return err
  122. }
  123. req.Header.Set("X-Custom-Header", "Patrick Sun")
  124. req.Header.Set("Content-Type", "application/json")
  125. client := &http.Client{}
  126. resp, err := client.Do(req)
  127. if err != nil {
  128. return err
  129. }
  130. defer resp.Body.Close()
  131. fmt.Println("response Status:", resp.Status)
  132. fmt.Println("response Headers:", resp.Header)
  133. body, _ := ioutil.ReadAll(resp.Body)
  134. fmt.Println("response Body:", string(body))
  135. return nil
  136. }
  137. func GetMenu() {
  138. }