Você não pode selecionar mais de 25 tópicos Os tópicos devem começar com uma letra ou um número, podem incluir traços ('-') e podem ter até 35 caracteres.

165 linhas
3.8KB

  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_FEEDBACK"
  34. },
  35. {
  36. "type": "view",
  37. "name":"校友会主页",
  38. "url":"https://www.hitxy.org.au/"
  39. }
  40. ]
  41. },
  42. {
  43. "name":"组织活动",
  44. "sub_button":[
  45. {
  46. "type":"click",
  47. "name":"我来发起一次活动",
  48. "key": "EVENT_STARTONE"
  49. },
  50. {
  51. "type":"click",
  52. "name":"观看当前活动的直播",
  53. "key": "EVENT_LIVE"
  54. },
  55. {
  56. "type":"scancode_waitmsg",
  57. "name":"签到当前活动",
  58. "key": "EVENT_CHECKIN"
  59. },
  60. {
  61. "type":"click",
  62. "name":"参与幸运抽奖",
  63. "key": "EVENT_LUCKYDRAW"
  64. },
  65. {
  66. "type":"click",
  67. "name":"即将举办的活动",
  68. "key":"EVENTS_UPCOMING"
  69. }]
  70. },
  71. {
  72. "name":"职业发展",
  73. "sub_button":[
  74. {
  75. "type":"click",
  76. "name":"澳洲工作机会",
  77. "key": "CAREERDEV_JOBS"
  78. },
  79. {
  80. "type":"click",
  81. "name":"融入澳洲社区",
  82. "key": "CAREERDEV_INDUSTRY"
  83. },
  84. {
  85. "type":"click",
  86. "name":"OutReach Program",
  87. "key": "CAREERDEV_OUTREACH"
  88. },
  89. {
  90. "type":"click",
  91. "name":"母校/国内纽带",
  92. "key": "CAREERDEV_HIT"
  93. },
  94. {
  95. "type":"click",
  96. "name":"校友互助信息",
  97. "key":"CAREERDEV_HELP"
  98. }]
  99. }
  100. ]
  101. }
  102. `)
  103. //CreateCustomMenu bulid a menu for wechat windows
  104. // 3 main manu max (< 4 mandarin words)
  105. // 5 sub items max (< 7 mandarin words)
  106. //success return nil
  107. //error return err
  108. func CreateCustomMenu(m []byte) error {
  109. atoken, err := GetAccessToken()
  110. if err != nil {
  111. return err
  112. }
  113. url := fmt.Sprintf("https://api.weixin.qq.com/cgi-bin/menu/create?access_token=%s", atoken)
  114. if len(m) == 0 {
  115. m = menu //using default menu
  116. }
  117. return jsonPostRequest(url, m)
  118. }
  119. //CreateDefaultMenu build a menu for wechat window
  120. //
  121. func CreateDefaultMenu() error {
  122. var b []byte
  123. return CreateCustomMenu(b)
  124. }
  125. //jsonPostRequest perform http post request with json body
  126. // url is the url to post to
  127. // jsonBody is the payload in http post request
  128. func jsonPostRequest(url string, jsonBody []byte) error {
  129. req, err := http.NewRequest("POST", url, bytes.NewBuffer(jsonBody))
  130. if err != nil {
  131. return err
  132. }
  133. req.Header.Set("X-Custom-Header", "Patrick Sun")
  134. req.Header.Set("Content-Type", "application/json")
  135. client := &http.Client{}
  136. resp, err := client.Do(req)
  137. if err != nil {
  138. return err
  139. }
  140. defer resp.Body.Close()
  141. fmt.Println("response Status:", resp.Status)
  142. fmt.Println("response Headers:", resp.Header)
  143. body, _ := ioutil.ReadAll(resp.Body)
  144. fmt.Println("response Body:", string(body))
  145. return nil
  146. }
  147. func GetMenu() {
  148. }