1. 程式人生 > >微信公眾號java開發沉澱(五)推送群發訊息

微信公眾號java開發沉澱(五)推送群發訊息

許可權

只有認證的的訂閱號 和 服務號,可以群發訊息。自己申請的測試號,或者沒認證的訂閱號、服務號,沒有許可權。
在這裡插入圖片描述

樣子

發出去的文字訊息、圖片訊息等於普通訊息無差,我就不多說了。傳送出去的圖文訊息是這樣子的。

在這裡插入圖片描述

者其實是兩條圖文訊息,上面的真好是第一條,下面的Happy Day是第二條。多條的時候依次在後面增加。

使用fastweixin 的api, 群發訊息

package com.tsing.fast;

import com.alibaba.fastjson.JSON;
import com.github.sd4324530.fastweixin.api.MessageAPI;
import
com.github.sd4324530.fastweixin.api.config.ApiConfig; import com.github.sd4324530.fastweixin.api.enums.MediaType; import com.github.sd4324530.fastweixin.api.response.GetSendMessageResponse; import com.github.sd4324530.fastweixin.message.ImageMsg; import com.github.sd4324530.fastweixin.message.MpNewsMsg;
import com.github.sd4324530.fastweixin.message.TextMsg; import com.tsing.wechat.utils.HttpUtils; import com.tsing.wechat.utils.ResourceUtils; import java.util.HashMap; import java.util.Map; /** * @author susq * @since 2018-10-24 */ public class MessageService extends BaseService { private static
final String DEL_URL = "https://api.weixin.qq.com/cgi-bin/message/mass/delete?access_token="; public static void main(String[] args) { ApiConfig config = new ApiConfig(APP_ID, ENCODING_AES_KEY); MessageAPI messageAPI = new MessageAPI(config); // TextMsg textMsg = getMsg(); // ImageMsg imageMsg = getImgMsg(); MpNewsMsg mpNewsMsg = getMaNewMsg(); // isToAll 是否傳送給全部使用者。false時需要填寫tagId,true時可忽略tagId樹形 GetSendMessageResponse response = messageAPI.sendMessageToUser(mpNewsMsg, true, null); System.out.println("傳送結果:" + JSON.toJSONString(response)); } private static void delSendAll(ApiConfig config) { String param = ResourceUtils.getResourceString(MediaService.class.getResourceAsStream("/del.txt")); String response = HttpUtils.doPost(DEL_URL + config.getAccessToken(), param); System.out.println("傳送結果:" + JSON.toJSONString(response)); } private static MpNewsMsg getMaNewMsg() { MpNewsMsg msg = new MpNewsMsg(); msg.setMediaId("2XkN4_oHgQAghifHt5iemp1lOvLsH5pZfNrB8Avat5rAcMzpCnVi0WAMcM8yZFsz"); return msg; } private static TextMsg getMsg() { TextMsg textMsg = new TextMsg(); textMsg.setContent("群發訊息"); textMsg.setMsgType("text"); return textMsg; } private static ImageMsg getImgMsg() { ImageMsg imageMsg = new ImageMsg(); imageMsg.setMsgType(MediaType.IMAGE.toString()); imageMsg.setMediaId("PSUYMe5hdzqT-JrvKg-FEId9iGBj-648kuMLqDQPGr1ffA0yCCF4HxlmFuzrIfAL"); return imageMsg; } }

需要注意的是:如果傳送的是文字訊息,直接寫。 如果傳送的是媒體檔案,圖片,語音等。需要先通過素材上傳介面上傳。返回 media_id, 後面發群發訊息的時候設定這個 media_id 到訊息中即可。

上傳素材

package com.tsing.fast;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.github.sd4324530.fastweixin.api.MediaAPI;
import com.github.sd4324530.fastweixin.api.config.ApiConfig;
import com.github.sd4324530.fastweixin.api.entity.Article;
import com.github.sd4324530.fastweixin.api.enums.MediaType;
import com.github.sd4324530.fastweixin.api.response.UploadMediaResponse;
import com.google.common.collect.Lists;
import com.tsing.wechat.utils.ResourceUtils;

import java.io.File;

/**
 * @author susq
 * @since 2018-10-21
 */
public class MediaService extends BaseService {

    public static void main(String[] args) {
        ApiConfig config = new ApiConfig(APP_ID, ENCODING_AES_KEY);
        MediaAPI mediaAPI = new MediaAPI(config);
        // updaloadImg(mediaAPI);
        uploadNews(mediaAPI);
    }

    /**
     * @param mediaAPI
     */
    private static void updaloadImg(MediaAPI mediaAPI) {
        File file = new File("E:/title.png");
        UploadMediaResponse response = mediaAPI.uploadMedia(MediaType.IMAGE, file);
        System.out.println("上傳結果:" + JSON.toJSONString(response));
    }

    /**
     *  上傳結果:{"created_at":1540365524,"media_id":"G03TyVQ14R3nRfyTqItxF4OeFX_t_hniGUGAzWXIjy5VtUaR8ynCMlyt_giabLDW","type":"news"}
     * @param mediaAPI
     */
    private static void uploadNews(MediaAPI mediaAPI) {

        String new1 = ResourceUtils.getResourceString(MediaService.class.getResourceAsStream("/new1.txt"));
        String new2 = ResourceUtils.getResourceString(MediaService.class.getResourceAsStream("/new2.txt"));

        Article article1 = JSONObject.parseObject(new1, Article.class);
        Article article2 = JSONObject.parseObject(new2, Article.class);

        UploadMediaResponse response = mediaAPI.uploadNews(Lists.newArrayList(article1, article2));
        System.out.println("上傳結果:" + JSON.toJSONString(response));

    }
}

如果傳送的是圖文訊息,也需要提前上傳,傳送的是圖文訊息的 media_id, 需要注意的是圖文訊息的縮圖,需要提前上傳,獲取到的media_id寫入到圖文訊息的 thumb_media_id 欄位中。

例如文中開始的那張圖文訊息,原本是這樣的

{
	"thumb_media_id": "WU0huRZOFJk_ItOiC_AXIyaNszCKaih9yiy6ofDn1F0nRBGL5xjqNQhwsEC6xfUh",
	"author": "蘇少青",
	"title": "真好",
	"content_source_url": "www.qq.com",
	"content": "第一個圖文訊息的內容。",
	"digest": "digest",
	"show_cover_pic": 1
}
{
	"thumb_media_id": "WU0huRZOFJk_ItOiC_AXIyaNszCKaih9yiy6ofDn1F0nRBGL5xjqNQhwsEC6xfUh",
	"author": "susq",
	"title": "Happy Day",
	"content_source_url": "blog.csdn.net/u013041642",
	"content": "content",
	"digest": "digest",
	"show_cover_pic": 0
}

thumb_media_id 是已經上傳好的一張圖片的 media_id, 把這兩條圖文,通過uploadNews 方法上傳,得到圖文訊息的media_id, 再發送。所有關注當前公眾號的粉絲。都可以收到了。

最後

相關推薦

公眾java開發沉澱群發訊息

許可權 只有認證的的訂閱號 和 服務號,可以群發訊息。自己申請的測試號,或者沒認證的訂閱號、服務號,沒有許可權。 樣子 發出去的文字訊息、圖片訊息等於普通訊息無差,我就不多說了。傳送出去的圖文訊息是這樣子的。 者其實是兩條圖文訊息,上面的真好是第一條,下面

公眾java開發沉澱獲取使用者資訊

​ 關注公眾號後,公眾號可獲得關注者的OpenID(加密後的微訊號,每個使用者對每個公眾號的OpenID是唯一的。對於不同公眾號,同一使用者的openid不同)。公眾號可通過OpenID獲取使用者基本資訊,包括暱稱、頭像、性別、所在城市、語言和關注時間。 ​

公眾支付開發手記node

微信支付 前言 總結一下最近業務開發中對微信公眾號支付的開發過程,微信支付的開發前提是已經具備可上線微信公眾號開發的基礎上進行的,如果你的開發階段目前停留在起步,建議參考這篇文章開始。 好了,來聊一聊微信支付。不論是今天的分享,還是網上其他的分享,開頭總是在吐槽微信的文件。我也不例外,剛開始總是覺得文件

公眾支付開發全過程java

sdk 命令 所有 data 權限 {} servle res ast 文章有不當之處,歡迎指正,如果喜歡微信閱讀,你也可以關註我的微信公眾號:好好學java,獲取優質學習資源。 一、微信官方文檔微信支付開發流程(公眾號支付) 首先我們到微信支付的官方文檔的開發步驟部分查

公眾支付掃碼PHP

基本思路: 1、使用者掃碼進入我們的系統頁面(自己定義的一個使用者輸入金額的頁面)       通過獲取CODE然後獲取openid 2、使用者輸完金額後,點選支付按鈕,進入統一支付介面   &nbs

C#公眾全攻略3--接管所有訊息驗證部分 C#程式碼

新建網站 新建一般處理程式 怎麼操作SQL資料庫不寫了 只發一些關鍵部分程式碼 一般處理程式關鍵程式碼 public class Interface : IHttpHandler { public stati

C#公眾全攻略5--群發訊息時的openid對應的使用者是誰呢

有一個openid不屬於公眾號關注使用者的任何一位 在通過微信控制檯群發訊息後 將有一個Event為MASSSENDJOBFINISH的事件推送 對應的openid 他是誰呢 他的nickname是張三瘋 來自 中國 廣東 廣州 簽名是DayDayUpUp

C#公眾全攻略4--實現回覆訊息C#程式碼

接上文 這個函式把使用者發來的內容交接給messageHelp來處理 最後返回messageHelp.ReturnMessage private void Handle(string postStr) { messageHelp help = new

公眾授權---第三方平臺php

用過微擎、微贊、微動力等第三方公眾號管理平臺的人都知道,需要在這些平臺中接入公眾號(就是授權給第三方平臺),為了瞭解探究微擎中掃碼授權的機制,看了微信開放平臺中的第三方平臺開發,並做了例項,寫下此文紀念我這一天遇到的坑!!! 公眾平臺第三方平臺是為了讓公

公眾授權登入一laravel

namespace App\Http\Controllers; use Illuminate\Http\Request; use Validator; use Session; use App\Http\Requests; use App\Http\Controller

公眾 呼叫客服介面實現圖文例項、

微信平臺更新之後,發現客服介面不錯。研究了下 和大家分享下。 按照官方文件,是向客服介面傳送規定的JSon 就可以了。 首先先封裝下 JSon 的類: package com.lwz.wx.bean.kf; // 這個是最外層的 也可以說是基類吧、 public class

公眾平臺java開發詳解工程程式碼+解析

說明:本次的教程主要是對微信公眾平臺開發者模式的講解,網路上很多類似文章,但很多都讓初學微信開發的人一頭霧水,所以總結自己的微信開發經驗,將微信開發的整個過程系統的列出,並對主要程式碼進行講解分析,讓初學者儘快上手。在閱讀本文之前,應對微信公眾平臺的官方開發文件有所瞭解,知

公眾支付開發 --Java

/** * 付款頁面 * @param request * @param response * @return * @throws Exception */ @RequestMapping("/callback") public

公眾平臺開發:幾大介面的呼叫

文章結構 1、怎麼呼叫微信高階介面 2、呼叫微信高階幾大例項 2.1、呼叫自定義選單介面 2.2、客服介面 2.3、生成二維碼 3、獲取非微信功能介面,如天氣網的天氣介面、股票網站的資訊介面。 怎麼呼叫微信高階介

公眾對接第三方平臺全網釋出 java

目錄 目錄 背景 第三方平臺 程式碼開發 結束語 背景   由於平臺對接的使用者不斷增加,微信會進行一個檢測。如果你對接的微信公眾平臺多次使用同一個地址進行開發者對接。那麼它會認為你這個網站存在風險-官方解釋,或者你對接微信公眾號平臺

公眾支付開發全過程----JAVA

1、生成統一下單介面,獲取prepay_id.需要的引數 ==名稱==從哪裡找到他們:微信官方給了個引數的詳細說明。https://pay.weixin.qq.com/wiki/doc/api/jsapi.php?chapter=9_1 部分引數,仍然不知道哪裡找的小夥伴們請繼續向下看appid ==應用ID

玩玩公眾Java版之二:接收、處理及返回消息

log med iou set arch weixin b- rom data- 前面已經配置了微信服務器,那麽先開始最簡單的接收微信消息吧~ 可以用我們的微信號來直接進行測試,下面先看測試效果圖: 這是最基本的文本消息的接收、處理及返回,來看看是怎麽實現的

公眾退款開發

col 代碼 use equal user 工具類 oms sdk 轉換 博主是小菜鳥,這篇文章僅是自己開發的隨筆記錄,不足博友可以指出來,一起進步 1、【微信支付】公眾號支付開發者文檔鏈接地址 https://pay.weixin.qq.com/wiki/doc/api/

公眾平臺開發(二)息的分類.md

數據 msg 額外 環境 con pic 響應 我們 高質量 在上一篇博客中,我們只是簡單地與微信服務器建立了連接,接下來就是從微信服務器中接收信息了。在SecurityController中,我定義了兩個方法(get和post)。Get方法是我們用來與微信服務器建立連接,

公眾第三方開發之七提交全網釋出【個人收藏】

【原文:http://blog.csdn.net/eadio/article/details/51546687,如有版權問題請告知我進行刪除】   在開始這個章節前,我要特別說明下,“公眾號訊息與事件接收URL ”微信有說明尾數一定要帶字串/$APPID$/,而這個固定字