说明:本文采用的是微信模板SDK开发,主要描述如何使用。
消息推送一共有两种,一种是客户端类似支付、下单完成等微信端的信息推送;另外一种就是后端管理页面的新消息的提醒(声音的提醒、弹框的提醒)。对于第一种,是微信端的消息推送,需要对微信模板的使用有所了解。第二种是后端提供服务的消息提醒。
客户模块的webSocket的使用:微信端的消息推送消息的最终效果如下图所示.
具体开发流程如下:
1.首先需要进入微信测试号配置模板(在公众号中可以直接选择,附测试号登陆地址: https://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login)
2.添加模板消息
{{first.DATA}}
商家名称:{{keyword1.DATA}}
商家电话:{{keyword2.DATA}}
订单号:{{keyword3.DATA}}
状态:{{keyword4.DATA}}
总价:{{keyword5.DATA}}
{{remark.DATA}}
3.首先需要添如下的SDK,在该SDK中有微信授权登录、微信支付、支付宝支付、消息推送等接口,可供直接传入参数调用。(地址:https://github.com/Wechat-Group/WxJava)Maven管理加载以下依赖:
com.github.binarywang
weixin-java-mp
2.8.0
4.设计接口。为什么需要设计接口呢?因为我们需要把模里面的参数一一传入,实现不同订单对应不同的消息。在发送消息的模板的时候是使用SDK中的wxMpService.getTemplateMsgService().sendTemplateMsg()这个接口,而参数就是WxMpTemplateMessag对象,在这个对象中可以将模板消息塞进去,最后直接发送此对象就行。本文的模板ID是放在配置文件中的,因此注入的配置文件类WechartAccountConfig
5.根据业务将模板中的信息动态的传入,然后调发送消息的Service,至此完成了消息的发送。最后在业务需求的地方直接调用此接口就可以完成一次消息的推送。具体实现如下代码:
@Slf4j
@Service
public class PushMessageServiceimpl implements PushMessageService {
@Autowired
private WxMpService wxMpService;
@Autowired
private WechartAccountConfig wechartAccountConfig;
@Override
public void orderStatus(OrderDto orderDto) {
//调用SDK发送消息
WxMpTemplateMessage wxMpTemplateMessage = new WxMpTemplateMessage();
wxMpTemplateMessage.setTemplateId(wechartAccountConfig.getTemplateId().get("orderStatus"));
wxMpTemplateMessage.setToUser("o6oCR0ZptF_U1lkn1LgIST5o-Wwk");
List data = Arrays.asList(
new WxMpTemplateData("first","亲,记得收货哦!"),
new WxMpTemplateData("keyword1","湖北xx学院"),
new WxMpTemplateData("keyword2","11111111111"),
new WxMpTemplateData("keyword3",orderDto.getOrderId()),
new WxMpTemplateData("keyword4",orderDto.getOrderAmountEnum().getMessage()),
new WxMpTemplateData("keyword5","¥"+ orderDto.getOrderAmount()),
new WxMpTemplateData("remark","欢迎下次光临")
);
wxMpTemplateMessage.setData(data);
try {
wxMpService.getTemplateMsgService().sendTemplateMsg(wxMpTemplateMessage);
} catch (WxErrorException e) {
log.error("【消息推送】发送失败"+e);
e.printStackTrace();
}
}
}