nodejs发送小程序模板消息

一、微信小程序模板消息说明

传送门

二、发送模板消息流程

自己实现的功能主要是发货后给用户发送模板消息的功能。首先在小程序后台配置模板,然后,在用户提交订单的时候利用form表单,把formid和订单数据传给后端,然后后端一起保存到数据库订单表中。发货后,调用小程序发送模板接口进行模板消息下发就可以了。(这里需要注意:formid有7天的有效时间,所以发货通知需在7天之内进行通知,否则无效

主要的nodejs代码:

/*
 * 小程序发送模板消息
 * */

var express = require('express');
var app = express();

var request = require('request');

var appId = '自己的小程序appid';
var appSecret = '自己的小程序APPsecret';

app.get('/getformid',function(req,res){
	//res.send('hello world!!!')
	
	var code = req.query.code;
	var formid = req.query.formid;
	
	console.log(formid)
	
	request('https://api.weixin.qq.com/sns/jscode2session?appid='+appId+'&secret='+appSecret+'&js_code='+code+'&grant_type=authorization_code',function(error,response,body){
		if(!error && response.statusCode === 200){	//通过前端传过来的code获取openID
			console.log(body,'获取openID返回的信息')
			var bodyJson = JSON.parse(body);
			
			//获取access_token
			request('https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid='+appId+'&secret='+appSecret,function(error2,response2,body2){
				if (!error2 && response2.statusCode == 200) {
    				console.log(body2,'获取access_token返回的数据')
    				
    				var bodyJson2 = JSON.parse(body2);
    				
    				var requestData = {
						touser: bodyJson.openid,	//要通知的用户的openID
						form_id: 1540380591153,	//保存的form_id,因为编辑器无法获取到,只能真机测试才可以,所以只能从真机测试后拿过来写死
						template_id: "EVKZI7sq4vuEh_b0kmi--RiCC_ib_RAikRO_dadnmCU",	//模板id
						data: {	//要通知的模板数据
							"keyword1": {"value":"2018-10-24"},
							"keyword2": {"value":"顺丰"},
							"keyword3": {"value":"28orudfs0808uosdufou"},
							"keyword4": {"value":"发货通知成功,闪开,我要开始装逼了"}
						}
					};
									
    				request({	//调用接口进行模板消息发送
						url: 'https://api.weixin.qq.com/cgi-bin/message/wxopen/template/send?access_token='+bodyJson2.access_token,
						method: 'POST',
						json: true,
						 headers: {
					        "content-type": "application/json",
					    },
					    body: requestData,
					},function(error3,response3,body3){
						
						if (!error3 && response3.statusCode == 200) {
		    				console.log(body3,'发送消息返回的参数')
						}						
					})
				}
			})
				
		}
	})	

})

var server = app.listen(8087,function(){
	var host = server.address().address;
	var port = server.address().port;
	console.log('应用实例,访问地址为http://%s:%s',host,port)
})

这里因为是自己做的一个demo,所以,前端还需要调用wx.login把code发送到后端,然后后端通过调用微信的接口code2Session来获取用户的openID,然后通过调用getAccessToken接口,获取到accesstoken后就可以调用发送模板消息接口sendTemplateMessage发送消息了。

这里的formid写死是因为,在编辑器上无法获取到formid,会提示"the formId is a mock one",只能从真机上测试获取,而自己的node文件又是跑在pc端的本地,手机上测试无法调用接口,所以只能从手机上获取后,然后写死测试。

结果:

 

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值