电商/票务类小程序必读,如何用小程序推送消息?

如果你有一个电商小程序,或是一个活动报名小程序,那么你可能会遇到这样的问题:

  • 当消费者购买商品后,如何通知他们东西发货了呢?
  • 如果用户报名成功,怎么样快速又方便地告知他们报名结果呢?

这时候,我们就需要用到小程序的「模板消息」接口

今天,知晓程序(微信号 zxcx0101)就来教你如何正确地发送模板消息。

什么是模板消息?

顾名思义,模板消息是一种「套上模板的消息」

通常,服务方向用户推送的消息都带有通知性质,文案也相对固定。服务方将这类固定的文案制作成模板,这些文案就可以快速重复使用。

在发送时,服务方只需向模板内填充必要的数据(如客户名称、订单号、价格等),就可以将这条消息发送给用户了。

例如,航空公司可能会向用户发送这样的消息:

张三,您好,您已购买 1 月 1 日 13:00 从广州飞往上海的 AB1234 航班的机票。

从中可以得知,除了一些需要根据实际情况填写的信息,其他文案都是固定的。

那么,我们就可以提取这样的消息模板:

(旅客姓名),您好,您已购买(时间)从(出发地)飞往(到达地)的(航班号)航班的机票。

当航空公司发送消息时,他们只需要根据实际情况填充信息,就可以将这条消息发送给相应的用户了。

微信小程序的模板消息限制

与普通的模板消息不同,在微信小程序中发送模板消息,具有一定条件

官方文档中规定,用户在小程序中进行支付或提交表单,小程序才能向用户发送模板消息

那么,微信如何得知用户是否有支付行为、表单提交的行为呢?

用户支付或提交表单过后,开发者可以得到模板消息的 formID(为了方便解释,将它叫做「发送码」),这代表着开发者有发送模板消息的权限。

开发者发送模板消息时,就需要向微信提供这样的发送码,完成模板消息的发送过程。

而且,发送码是一次性的,用一次就会作废。也就是说,如果用户只发起过一次支付或提交过一次表单,那么开发者也只能向用户发送一次消息。

除了需要用户进行支付或提交表单,小程序也不能通过模板消息接口,群发推广信息、垃圾信息等。

如何发送模板消息?

知道了这些,就能得知,微信小程序发送模板消息的大致步骤是:

  1. 开发者在微信公众平台,创建一个新的消息模板;
  2. 获取支付过程或提交过程中,微信返回的消息发送码;
  3. 开发者利用消息发送码,带上模板中非固定的信息,向微信发起发送消息的请求。

那么,我们一步步开始吧。

创建新的消息模板

既然是「模板消息」,那第一步当然是创建新的模板了。

  • 打开 https://mp.weixin.qq.com 并登录小程序帐户。
  • 点击左侧菜单中的「模板消息」。
  • 进入顶部的「模板库」,从微信预置的模板中,选择一个合适的模板。
  • 确定模板中所使用的关键词。

如果关键词列表中没有你希望使用的关键词,你可以申请新的关键词。但申请新的关键词需要提交审核

模板添加后,会获得模板 ID(template_id),稍后就可以用到它。

获取模板消息发送码

创建消息模板后,还需要「发送码」,才能发送模板消息。

以提交表单为例,看看发送码的获取方式。

首先,在小程序中,放置一个带有 report-submit 属性的表单:

然后,在页面的 Page() 函数中,新建一个提交表单的函数。

在函数中,就能接收到 formId,也就是发送码了。

如果你想在微信发起支付请求后,获取发送码,那么你需要调用微信支付中的「统一下单」接口。

当「统一下单」接口请求成功之后,回调值中的「预支付交易会话标识」,也就是 prepay_id,就可以作为发送码来使用。

发送模板消息

经过这么多步骤,终于可以向用户发送模板消息了。在这一步,所有过程都是在开发者的服务器完成。

首先,通过 GET 方式,获取到小程序的 Access Token:

接着,用 POST 方式,向微信提交模板消息的发送请求。

请求地址为:

请求数据的格式如下:

当接口返回成功消息时,就代表着模板消息已经发送出去了。

有关于微信小程序模板消息接口的更多使用方法和使用限制,可以访问 http://suo.im/3ieJrr 了解详情。

往期精选文章

  • 效率提升 100%,小程序开发应该这样做
  • 技术高人如何开发小程序?他们用这套方法
  • 小程序开发有哪些坑?这份笔记都整理出来了

原文发布于微信公众号 - 知晓程序(zxcx0101)

原文发表时间:2017-02-23

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏情情说

RabbitMQ实战:消息通信模式和最佳实践

通过前2篇的介绍,了解了消息通信的主要元素和交互过程,以及如何运行和管理RabbitMQ,这篇将站在开发模式的角度理解「面向消息通信」带来的好处,以及在各种场景...

5365
来自专栏Java后端生活

Linux(二)CentOS的安装

3155
来自专栏北京马哥教育

Linux的10个最危险的命令

豌豆贴心提醒,本文阅读时间10分钟 Linux命令行佷有用、很高效,也很有趣,但有时候也很危险,尤其是在你不确定你自己在正在做什么时候。 这篇文章将会向你...

4757
来自专栏全华班

一款免费、开源,使用JAVA语言开发管理系统

基于SpringBoot2.0的权限管理系统 易读易懂、界面简洁美观。 核心技术采用Spring、MyBatis、Shiro没有任何其它重度依赖。直接运行即可用

1.3K2
来自专栏大魏分享(微信公众号:david-share)

VMware软件定义数据中心分析工具介绍----第三终结篇

在本文连载的第一篇中,我向大家介绍了vROps的基本架构、vROps的指标含义,以及如何自定义告警。第二篇中,介绍了如何自定义仪表盘。在本篇中,我将介绍如何自定...

3788
来自专栏EAWorld

8种至关重要OAuth API授权流与能力

在本文中,Curity的Daniel Lindau概述了重要的OAuth授权流程和能力。

671
来自专栏杂文共赏

【移动开发】基于MobileLine的零代码快速集成崩溃监控服务(Android)

移动开发平台(MobileLine)提供各种服务帮助您快速构建移动应用并推动业务增长。借助 MobileLine,您可以使用云服务来保证移动应用的高质量,我们帮...

2427
来自专栏马洪彪

应用系统数据删除与恢复

1142
来自专栏快乐八哥

Angular企业级开发(1)-AngularJS简介

AngularJS介绍 AngularJS是一个功能完善的JavaScript前端框架,同时是基于MVC(Model-View-Controller理念的框架,...

2208
来自专栏Laoqi's Linux运维专列

高性能可靠服务集群架构

2713

扫码关注云+社区