消息推送----微信小程序,公衆號

##微信公衆號,和微信小程序是微信的兩款單獨的產品,各自擁有一套openid,用來發送消息
一.微信小程序發推送消息只有在以下情況:
1.微信支付回調;
2.提交form表單的時候;

微信小程序獲取openid步驟(官網api文檔都有):

	官網api文檔地址:https://developers.weixin.qq.com/miniprogram/dev/api/
	1.調用接口wx.login() 獲取臨時登錄憑證(code)會返回
	2.請求 https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code
	參數說明:appid 小程序唯一標識    secret 小程序的 app secret
			js_code	登錄時獲取的 code  grant_type	填寫爲 authorization_code

微信公衆號獲取openid步驟(官網api文檔都有):

	官網api文檔地址:https://mp.weixin.qq.com/wiki?t=resource/res_main&id=mp1445241432
	1.先獲取公衆號的accessToken(appid,secret填寫微信公衆號的,跟小程序不一樣,切記)
	  https請求方式: GET
		https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
	2.獲取用戶的openid
	  微信公衆號提供獲取用戶列表接口(即獲取所有關注該微信公衆號的用戶信息)
	  請求地址https://api.weixin.qq.com/cgi-bin/user/get?access_token=ACCESS_TOKEN&next_openid=NEXT_OPENID
	  如果想獲取整個用戶列表的openid,next_openid=即可,即https://api.weixin.qq.com/cgi-bin/user/get?access_token=ACCESS_TOKEN&next_openid=
	3.獲取用戶基本信息  
	  接口調用請求說明
		http請求方式: GET
		https://api.weixin.qq.com/cgi-bin/user/info?access_token=ACCESS_TOKEN&openid=OPENID&lang=zh_CN

ok,小程序的openid,公衆號的openid都到手了(小滿足),BUT, 要想打通小程序,公衆號,光有各自的openid並沒有什麼用,因爲兩套產品,各自都只維護自己的openid,so,騰訊搞出了一套unionid機制,即騰訊旗下所有產品相對於用戶來說,都存在一個唯一標識就是unionid,如何獲取unionid?註冊一個開發者賬號,綁定公衆號,小程序,即指定小程序,公衆號在同一開發者下,這樣在獲取公衆號openid,小程序openid都會返回unionid(真的是一樣的,開心),這樣數據庫存儲公衆號,小程序的openid,unionid,通過反查出公衆號的openid,就可以在公衆號發模板消息了…(小程序觸發事件,向公衆號推送模板消息)
走一波,封裝參數:

http請求方式: POST 
https://api.weixin.qq.com/cgi-bin/message/template/send?access_token=ACCESS_TOKEN

	POST數據
	{
       "touser":"OPENID",
       "template_id":"ngqIpbwh8bUfcSsECmogfXcV14J0tQlEpBO27izEYtY",
       "url":"http://weixin.qq.com/download",  
       "miniprogram":{
         "appid":"xiaochengxuappid12345",
         "pagepath":"index?foo=bar"
       },          
       "data":{
               "first": {
                   "value":"恭喜你購買成功!",
                   "color":"#173177"
               },
               "keyword1":{
                   "value":"巧克力",
                   "color":"#173177"
               },
               "keyword2": {
                   "value":"39.8元",
                   "color":"#173177"
               },
               "keyword3": {
                   "value":"2014年9月22日",
                   "color":"#173177"
               },
               "remark":{
                   "value":"歡迎再次購買!",
                   "color":"#173177"
               }
       }
   }
   這裏的access_token是微信公衆號的
   注意事項:
			  pagepath   不能用 / 開頭 (小程序的跳轉頁面鏈接)
			  appid 使用小程序的appid  

java 對象封裝(個人不建議使用map封裝,建議採用對象封裝)

	    import lombok.Getter;		
		import lombok.Setter;
		import java.util.Map;
		@Getter
		@Setter
		public class WechatTemplate {
		    private String touser;
		    private String template_id;
		    private String url;
		    private Map<String, TemplateData> data;
		    private MiniprogramData miniprogram;
		}

		@Getter
		@Setter
		public class TemplateData {
	    private String value;
	    private String color;
		}

		@Setter
		@Getter
		public class MiniprogramData {
		    private String appid;
		    private String pagepath;
		}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章