模板消息

产品介绍

概述

开发者可通过消息高效触达用户,通知用户当前行为的结果及状态等;同时可在消息中配置跳转小程序指定页面地址,当用户查看消息时,在消息中点击“进入小程序查看”返回小程序,进入开发者配置的小程序指定页面;具体配置方式见接口说明。

可选用的模板消息有两类:交易类和表单类,两种类型分别有不同的下发条件,详见下发条件说明消息入口:客户端首页—服务提醒

首页-服务提醒.png

在绑定生活号的情况下,小程序下发的服务提醒将同步发送到生活号中,用户可以在朋友TAB的生活号栏目中看到对应的消息;

朋友TAB.png

在绑定生活号的情况下,小程序在获得了用户授权后,可在后台申请发送渠道为生活号的模板消息,向生活号发送粉丝引导消息,在消息尾部自动增加引导关注模块,为生活号粉丝沉淀提供工具。

IMG_0987.PNG

场景介绍

模板消息功能适用于开发者高效触达用户的场景,比如:交易状态、物流进度等;用户在小程序内产生页面交互行为后,开发者可通过此能力给用户发送消息,同时开发者可在消息中配置小程序地址或指定页面地址,用户收到消息后可通过消息点击进入到小程序,目前仅支持文本消息。

使用说明

步骤一:绑定生活号生活号作为商家触达用户的通道,小程序绑定生活号能够帮助开发者更好的触达用户;也是小程序下发模板消息的前提条件;登录 https://open.alipay.com,进入小程序详情页“生活号管理”页面,选择已关联的生活号作为下发消息的通道进行绑定;绑定完成后即可选用模板。

步骤二:选用模板,获取模板 ID进入小程序详情页“模板消息”页面,点击添加模板消息,在“模板库”列表页可选择对应的模板消息,若没有合适的模板消息关键词,可以申请新增关键词,审核通过后即可使用。如在此步骤之前未绑定生活号,则会在选择模板时提示绑定生活号,跳转到步骤一完成绑定后方可选择消息模板;当选择模板消息后,可在“我的模板”列表页可获取模板 ID 。

步骤三:通过 form组件 获取 formIdtradeNoformId :页面的<form/>组件,属性report-submittrue时,可以声明为需发模板消息,此时用户点击按钮提交表单可以获取formId,用于发送表单类模板消息。tradeNo :当用户完成支付行为时,可以获取 tradeNo 用于发送交易类模板消息。

步骤四:调用接口下发模板消息下发模板消息的接口名称为:alipay.open.app.mini.templatemessage.send

下发条件说明

重要:下发消息需绑定生活号开发者需要绑定上线可运营的生活号,由生活号来承接服务提醒的消息。

下发消息场景

  • 交易类当用户在小程序内完成支付行为,可允许开发者向付款用户在 7 天内推送有限条数的模板消息(同个订单号只能发送 3 条消息,不限制模板数),当开发者调用交易类的模板消息时,必须要传入 tradeNo
  • 表单类当用户在小程序内发生过提交表单行为且该表单为要发模板消息的,可允许开发者向用户在 7 天内推送有限条数的模板消息( 1 次提交表单可下发 3 条,不限制模板数),当开发者调用表单类的模板消息时,必须要传入 formid

下发消息时效性

开发者获取 formIdtradeNo 后,可在 7 天内向用户推送消息,超出后 formIdtradeNo 将失效,无法推送消息。

获取发送生活号模板消息授权

如模板消息选择发送到生活号渠道,需要在用户授权时增加对于用户发送生活号的授权;即在小程序的授权权限值( scope )中增加生活号标准模板消息授权:auth_life_msg ;配置 scope 后,获取用户信息时会展示通用生活号授权文案“允许生活号推送服务通知消息”。

scope授权文案
通用生活号消息模板授权auth_life_msg允许生活号推送服务通知消息
电信运营商类的消息授权auth_life_msg_tele向运营商查询您的话费、宽带服务信息,通过生活号向您推送服务通知
  1. my.getAuthCode({
  2. scopes: 'auth_life_msg',
  3. success: (res) => {
  4. console.info('sss', res)
  5. }
  6. })

授权样例:

image

相关文档:用户授权指引

关键词申请

若选用的模板中没有合适的关键词,可以申请添加关键词。

lALPBbCc1TjxzOrNAmjNA8Y_966_616.png

Snap1.png

关键词申请规则

  • 每个自然月可提交5次关键词申请;
  • 在同一标题下,申请的关键词不能存在相同;
  • 在同一标题下,申请的关键词不能存在过度相似;
  • 关键词不能带特殊符号、个性化字词等没有行业通用性的内容;
  • 关键词示例内容必须与关键词对应匹配,且描述清晰;
  • 关键词申请审核结果将以站内信方式通知,审核通过后,关键词将纳入到模板中。

接入指引

第一步:添加功能

要在您的小程序应用中使用支付宝开放产品的接口能力:

  • 您需要先去蚂蚁金服开放平台(open.alipay.com),在开发者中心-小程序频道创建小程序应用,此时您将获得小程序应用唯一标识(APPID);
  • 请进入小程序管理后台【开发管理】页面,在【功能列表】中点击【添加功能】,选择【小程序模板消息】;

第二步:设置接口加签方式

开发者调用接口前需要先生成RSA密钥,RSA密钥包含应用私钥(APP_PRIVATE_KEY)、应用公钥(APP_PUBLIC_KEY)。生成密钥后在开放平台管理中心进行密钥配置,配置完成后可以获取支付宝公钥(ALIPAY_PUBLIC_KEY)。详情请参考文档《设置接口加签方式》

第三步:搭建和配置开发环境

1.下载服务端SDK

为了帮助开发者调用开放接口,我们提供了开放平台服务端SDK,包含JAVA、PHP和.NET三个语言版本,封装了签名&验签、HTTP接口请求等基础功能。请先下载对应语言版本的SDK并引入您的开发工程。各语言版本服务端SDK详细使用说明,请参考《服务端SDK使用说明

2.接口调用配置

在SDK调用前需要进行初始化,代码如下:

  1. AlipayClient alipayClient = new DefaultAlipayClient(URL,APP_ID,APP_PRIVATE_KEY,FORMAT,CHARSET,ALIPAY_PUBLIC_KEY,SIGN_TYPE);

关键参数说明:

配置参数示例值解释获取方式/示例值
URL支付宝网关(固定)https://openapi.alipay.com/gateway.do
APPIDAPPID 在创建应用后生成点此查看 获取方式
APP_PRIVATE_KEY开发者私钥,由开发者自己生成获取详见上面 接口加签方式
FORMAT参数返回格式,只支持 JSONJSON(固定)
CHARSET编码集,支持 GBK/UTF-8开发者根据实际工程编码配置
ALIPAY_PUBLIC_KEY支付宝公钥,由支付宝生成获取详见上面接口加签方式
SIGN_TYPE商户生成签名字符串所使用的签名算法类型,目前仅支持 RSA2RSA2

接下来,就可以用 alipayClient 来调用具体的 API 了。alipayClient 只需要初始化一次,后续调用不同的 API 都可以使用同一个 alipayClient 对象。TIPS:ISV/开发者可以通过“第三方应用授权”得到商户授权令牌(app_auth_token)作为请求参数传入,实现代商户发起请求的能力;具体方法请参考 第三方应用授权

第四步:接口调用

开发者调用消息发送接口需根据消息类型传入不同的参数,同时可在接口“page”参数中配置跳转到小程序的指定页面url,小程序页面地址可在代码中的“app.json”中获取

接口英文名接口中文名接口描述
alipay.open.app.mini.templatemessage.send小程序发送模板消息小程序通过openapi给用户触达消息,主要为用户完成支付后的的消息触达(通过tradeNo)和用户提交表单后的消息触达(通过formId)。

image.png

代码示例

Java 示例代码如下:

  1. AlipayClient alipayClient =newDefaultAlipayClient("https://openapi.alipay.com/gateway.do","app_id","your private_key","json","GBK","alipay_public_key","RSA2");
  2. AlipayOpenAppMiniTemplatemessageSendRequest request =new AlipayOpenAppMiniTemplatemessageSendRequest();
  3. request.setBizContent("{"+
  4. "\"to_user_id\":\"2088102122458832\","+
  5. "\"form_id\":\"2017010100000000580012345678\","+
  6. "\"user_template_id\":\"MDI4YzIxMDE2M2I5YTQzYjUxNWE4MjA4NmU1MTIyYmM=\","+
  7. "\"page\":\"page/component/index\","+
  8. "\"data\":\"{\\\"keyword1\\\":{\\\"value\\\":\\\"12:00\\\"},\\\"keyword2\\\":{\\\"value\\\":\\\"20180808\\\"},\\\"keyword3\\\":{\\\"value\\\":\\\"支付宝\\\"}}\""+
  9. "}");
  10. AlipayOpenAppMiniTemplatemessageSendResponse response = alipayClient.execute(request);
  11. if(response.isSuccess()){
  12. System.out.println("调用成功");
  13. }else{
  14. System.out.println("调用失败");
  15. }

场景说明

场景1:使用tradeNo发送模板消息

场景描述当小程序用户发生了支付行为以后(例如APP支付),小程序开发者可通过 tradeNo 向付款人发送模板消息。(小程序开发者通过异步通知buyer_idtrade_no 来发送模板消息)注意:消息类型为支付类型的只能通过 tradeNo 发送。

接口调用流程调用流程图:image

场景2:使用 formId 发送模板消息

场景描述当小程序用户提交了表单之后,小程序开发者可通过form表单组件返回的formId(需在联网环境下),来发送模板消息。注意:消息类型为表单类型的只能通过formId来发送模板消息。

使用formid发送消息之前,需先获取会员信息中的user_id,具体查看获取方式

接口调用流程调用流程图:

image

API 介绍

开发者可通过以下接口给用户发送消息:

接口英文名接口中文名
alipay.open.app.mini.templatemessage.send小程序发送模板消息