Java開発WeChatテンプレートメッセージプッシュ

イルカエルフhttps : //mgo.whhtjl.com

これを見たら、インターネットであらゆる種類の情報を読んだと思います。馬鹿げた話をせず、要点だけに集中してください。次のリンクをクリックすると、公式のクエリ情報に移動できます。

https://developers.weixin.qq.com/doc/offiaccount/Message_Management/Template_Message_Interface.html

使用規則については、次の点に注意してください。

1.すべてのサービスアカウントは、[機能]-> [機能プラグインの追加]でアプリケーションテンプレートメッセージ機能のエントリを表示できますが、認証後のサービスアカウントのみが、テンプレートメッセージを適用し、その許可を取得できます。

2.公式アカウントサービスがある2つの業種を選択する必要があります。選択した業種は月に1回変更できます。

3.選択した業界のテンプレートライブラリで呼び出す既存のテンプレートを選択します。

4.各アカウントは同時に25のテンプレートを使用できます。

5.各アカウントのテンプレートメッセージの現在の1日あたりの呼び出し制限は100,000回です。1つのテンプレートに特別な制限はなく、公式アカウントMPバックグラウンドデベロッパーセンターページに示されている数が優先されます。

インターフェースのドキュメントについては、次の点に注意してください。

1.テンプレートメッセージが呼び出されるときに、テンプレートIDとテンプレート内の各パラメーターの割り当て内容が主に必要です。

2.テンプレートのパラメーターの内容は「.DATA」で終わる必要があります。そうでない場合、予約語と見なされます。

3.テンプレート予約記号「{ {}}」

以下のように、コードに焦点を当てて、ここでは例のみを示します。

ここで使用したweixin-java-mp、pom.xmlファイルは次のとおりです。

<!--公众号(包括订阅号和服务号) -->
<dependency>
	<groupId>com.github.binarywang</groupId>
	<artifactId>weixin-java-mp</artifactId>
	<version>2.7.0</version>
</dependency>

構成ファイルのコードは次のとおりです。

#微信公众号
wx.mp.appId=XXXXXXXXXXXXXXXXX
wx.mp.appSecret=XXXXXXXXXXXXXXXXXXX

WeChatMpPropertiesエンティティークラスを作成する

package com.ltf.config;

import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

/**
 * 微信公众号商户基本信息
 * @author xhz
 *
 */
@Data
@Component
@ConfigurationProperties(prefix = "wx.mp")
public class WeChatMpProperties {

	/**
	 * appId
	 */
	private String appId;

	/**
	 * 公众平台密钥
	 */
	private String appSecret;

}

WxJsMpConfigを作成する

package com.ltf.config;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;
import me.chanjar.weixin.mp.api.WxMpConfigStorage;
import me.chanjar.weixin.mp.api.WxMpInMemoryConfigStorage;
import me.chanjar.weixin.mp.api.WxMpService;
import me.chanjar.weixin.mp.api.impl.WxMpServiceImpl;

/**
 * 微信公众号信息注入bean中
 * @author xhz
 *
 */
@Component
public class WxJsMpConfig {

	@Autowired
	private WeChatMpProperties wxJsMpProperties;

	@Bean
	public WxMpService wxJsMpService( ){
		WxMpService wxJsMpService = new WxMpServiceImpl();
		wxJsMpService.setWxMpConfigStorage(wxMpConfigStorage());
		return wxJsMpService;
	}

	private WxMpConfigStorage wxMpConfigStorage(){
		WxMpInMemoryConfigStorage wxJsMpConfigStorage = new WxMpInMemoryConfigStorage();
		// 公众号appId
		wxJsMpConfigStorage.setAppId(this.wxJsMpProperties.getAppId());
		// 公众号appSecret
		wxJsMpConfigStorage.setSecret(this.wxJsMpProperties.getAppSecret());
		return wxJsMpConfigStorage;
	}

}

テンプレートメッセージエンティティクラスを作成する

package com.ltf.entity;
import java.io.Serializable;
import lombok.Data;
/**
 * 微信消息模板实体类
 * @author xhz
 *
 */
@Data
public class WxMsgTemplate implements Serializable {

	private static final long serialVersionUID = 1L;
	private String openId;
	private String templateId;
	private String url;
	private String color;
	private String first;
	private String keyWord1;
	private String keyWord2;
	private String keyWord3;
	private String keyWord4;
	private String keyWord5;
	private String keyWord6;
	private String remark;

}

WeChatメッセージプッシュサービスレイヤーの作成

package com.ltf.service;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ltf.entity.WxMsgTemplate;
import me.chanjar.weixin.mp.api.WxMpService;
import me.chanjar.weixin.mp.bean.template.WxMpTemplateData;
import me.chanjar.weixin.mp.bean.template.WxMpTemplateMessage;

/**
 * 微信消息推送
 * @author xhz
 *
 */
@Service
public class WxMsgPushService {

	private static final Logger logger = LoggerFactory
			.getLogger(WxMsgPushService.class);

	/**
	 * 微信公众号API的Service
	 */
	@Autowired
	private WxMpService wxJsMpService;

	/**
	 * 注册成功后发送微信模板消息
	 * @param wxMsgTemplate
	 * @return
	 */
	public Boolean sendWxMsgAfterSuccessRegister(WxMsgTemplate wxMsgTemplate) {
		String result=null;
		try {
			WxMpTemplateMessage templateMessage = WxMpTemplateMessage.builder()
					.toUser(wxMsgTemplate.getOpenId())//要推送的用户openId
					.templateId(wxMsgTemplate.getTemplateId())//模版id
					.url(wxMsgTemplate.getUrl())//点击模版消息要访问的网址
					.build();
			templateMessage.addWxMpTemplateData(new WxMpTemplateData("first", wxMsgTemplate.getFirst(), wxMsgTemplate.getColor()));
			templateMessage.addWxMpTemplateData(new WxMpTemplateData("keyword1", wxMsgTemplate.getKeyWord1(),  wxMsgTemplate.getColor()));
			templateMessage.addWxMpTemplateData(new WxMpTemplateData("keyword2", wxMsgTemplate.getKeyWord2(),  wxMsgTemplate.getColor()));
			templateMessage.addWxMpTemplateData(new WxMpTemplateData("remark", wxMsgTemplate.getRemark(), wxMsgTemplate.getColor()));
			result=wxJsMpService.getTemplateMsgService().sendTemplateMsg(templateMessage);
		} catch (Exception e) {
			logger.error("WxMsgPushService.sendWxMsgAfterSuccessRegister()----error", e);
		}
		return result!=null;
	}

}

テストクラスを作成する

public static void main(String[] args) {
WxMsgTemplate wxMsgTemplate=new WxMsgTemplate();
wxMsgTemplate.setOpenId("xxxxxxxxxxxxxxxxxxx");
wxMsgTemplate.setTemplateId(CacheConstans.TEMPLATEID_REGISTER);
wxMsgTemplate.setUrl(CacheConstans.URL);
wxMsgTemplate.setColor(CacheConstans.COLOR);
wxMsgTemplate.setFirst("XXXXXX注册通知");//详细内容
wxMsgTemplate.setKeyWord1("小盒子");//用户名
wxMsgTemplate.setKeyWord2(DateUtils.toString(new Date(), "yyyy-MM-dd HH:mm:ss"));//注册时间
wxMsgTemplate.setRemark("欢迎来到XXXXXX");
//给新用户推送消息
wxMsgPushService.sendWxMsgAfterSuccessRegister(wxMsgTemplate);
}

実行中のコードは次のとおりです。

はい、職場から帰宅します。

 

おすすめ

転載: blog.csdn.net/qq_35393693/article/details/108284699