• 下载
  • 社区

模板消息

产品介绍

概述

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


模板消息有两类:交易类表单类,两种类型分别有不同的下发条件,详见 使用说明

模板消息入口:客户端首页 > 服务提醒。


image.png


使用场景

模板消息功能适用于开发者高效触达用户的场景,比如:交易状态、物流进度等。

用户在小程序内产生页面交互行为后,开发者可通过此能力给用户发送消息,同时开发者可在消息中配置小程序地址或指定页面地址,用户收到消息后可通过消息点击进入到小程序,目前仅支持文本消息。


使用说明

步骤一:选用模板,获取模板 ID。

进入小程序详情页“模板消息”页面,点击 添加模板消息,在 模板库 列表页可选择对应的模板消息,若没有合适的模板消息关键词,可以申请新增关键词,审核通过后即可使用。

当选择模板消息后,可在 我的模板 列表页可获取模板 ID 。


步骤二:通过 form组件 获取 formIdtradeNo 属性。

formId  :页面的 <form/> 组件,属性 report-submit 为 true 时,可以声明为需发模板消息,此时用户点击按钮提交表单可以获取 formId,用于发送表单类模板消息。

tradeNo :当用户完成支付行为时,可以获取 tradeNo 用于发送交易类模板消息。


步骤三:调用接口下发模板消息。

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


下发条件说明


重要:下发消息请先完成模板的选用。

开发者需要先在模板消息后台添加属于自己的模板,获取ID后才能进行消息下发。


下发消息场景

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


  1. 表单类
    当用户在小程序内发生过提交表单行为且该表单为要发模板消息的,可允许开发者向用户在 7 天内推送有限条数的模板消息( 1 次提交表单可下发 3 条,不限制模板数),当开发者调用表单类的模板消息时,必须要传入 formid


下发消息时效性

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


不同消息渠道的说明

如不加特殊说明,模板消息默认代指的消息渠道为“服务提醒”的模板,其消息下发渠道即为 支付宝客户端首页服务提醒。模板消息当前尚支持其他渠道的消息发送,但使用另外类别消息渠道模板需有一定前置要求,特此说明。

image.png


高德消息盒子

已经多端投放至高德客户端的 支付宝小程序,在满足上述下发条件的情况下,也可以将通过选用消息渠道为“高德消息盒子”模板,在高德客户端触达用户。

image.png


发送后,后消息将在高德客户端首页的消息中心提醒推送用户,并发送相应的客户端push通知

image.png


准入条件

接入主体要求

1)部分金融服务:典当行、电汇和汇票服务、个人资金借贷、贵金属投资、金融机构-自动现金服务、小贷公司、支付机构、融资担保公司。

2)部分商业服务:债务催收机构。

3)部分生活服务:财务债务咨询、售卖成人用品类。

4)部分数娱网游:彩票等博彩业务。

5)部分娱乐票务:歌舞厅/夜店。

6)部分专业服务:GCAS紧急服务(仅限Visa使用)、Visa信任服务、档案、电子档案、站内清算、测试实验服务。

7)部分政府服务:保释金、法庭费用、行政费用和罚款。

  • 小程序需满足所属经营类目小程序准入标准,还需满足 小程序相关类目及所需资质材料 要求小程序商户必须遵守 支付宝小程序运营规范 。
  • 小程序业务合规,用户体验良好:90 天内无违规处罚,页面流程顺畅,服务通道畅通有效,平台投诉纠纷率低,无首屏/强制/过度授权,无外链引导,无品牌侵权等。


用户体验原则

  • 同个业务场景同类用户行为的通知不能有重复关系,如有则需将相同的通知模板合并为一。
  • 禁止内容违规:不得侵犯用户隐私,不得有合规、公关、隐私相关风险。
  • 禁止模板滥用:禁止通知消息的内容与用户触发场景不一致。禁止用多个消息模板对同一个触发场景通知。
  • 禁止消息骚扰:频繁发送相同内容或性质的模板消息,有骚扰用户倾向,引起用户反感、退订甚至引起用户投诉。
  • 禁止外链或推广下载:非支付宝端内产品不予申请,且消息提醒的承接页需落在支付宝端内。禁止以任何形式外链到其他网站/服务或推广其他APP下载。
  • 禁止涉及营销相关内容,包括不限于:消费优惠类、购物返利类、商品更新类、价格更新类、优惠券类、代金券类、红包类、会员卡类、积分类、活动类等营销倾向通知。
  • 禁止恶意诱导用户进行触发操作,以达到可向用户下发模板目的。
  • 禁止发送含有支付宝规定的禁售行业或需要特定资质行业的内容。


计费模式


免费


接入指引

第一步:创建小程序并选用合适模板

选用模板

在您的小程序内使用 小程序模板消息,您需要首先完成 开发者入驻 并 创建小程序

完成后进入模板消息后台 查找选用需要的模板。登陆open.alipay.com,进入小程序运营。

image.png


选择 模板消息 - 消息模板库,进行模板选用。


image.png


新关键词申请

若选用的模板中没有合适的关键词,可以在小程序后台管理中以下路径申请添加关键词:模板消息 > 模板,任意一个已有模板消息操作栏中点击 选用,点击弹出的对话框下方 点击申请,在关键字和示例内容框中输入相应内容,点击 提交

image.png



image.png


关键词申请规则:

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


第二步:集成并配置 SDK

服务端 SDK 需要商户集成在自己的服务端系统中,用于后续的服务端接口调用。


下载服务端 SDK

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

接口调用配置

在 SDK 调用前需要进行初始化,以 JAVA 代码为例:


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


关键参数说明:

配置参数

示例值解释

获取方式/示例值

URL

支付宝网关(固定)

https://openapi.alipay.com/gateway.do

APPID

APPID 在创建应用后生成

点此查看 获取方式

APP_PRIVATE_KEY

开发者私钥,由开发者自己生成

获取详见上面 接口加签方式

FORMAT

参数返回格式,只支持 JSON

JSON(固定)

CHARSET

编码集,支持 GBK/UTF-8

开发者根据实际工程编码配置

ALIPAY_PUBLIC_KEY

支付宝公钥,由支付宝生成

获取详见上面接口加签方式

SIGN_TYPE

商户生成签名字符串所使用的签名算法类型,目前仅支持 RSA2

RSA2


接下来,就可以用 alipayClient 来调用具体的 API 了。alipayClient 只需要初始化一次,后续调用不同的 API 都可以使用同一个 alipayClient 对象。


注意:

ISV 开发者可以通过 第三方应用授权 得到商户授权令牌(app_auth_token)作为请求参数传入,实现代商户发起请求的能力。


第三步:调用接口

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

接口英文名

接口中文名

接口描述

alipay.open.app.mini.templatemessage.send

小程序发送模板消息

小程序通过 openapi 给用户触达消息,主要为用户完成支付后的的消息触达(通过 tradeNo)和用户提交表单后的消息触达(通过 formId)



代码示例

Java 示例代码如下:


 1AlipayClient alipayClient =newDefaultAlipayClient("https://openapi.alipay.com/gateway.do","app_id","your private_key","json","GBK","alipay_public_key","RSA2");
 2AlipayOpenAppMiniTemplatemessageSendRequest request =new AlipayOpenAppMiniTemplatemessageSendRequest();
 3request.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"}");
10AlipayOpenAppMiniTemplatemessageSendResponse response = alipayClient.execute(request);
11if(response.isSuccess()){
12System.out.println("调用成功");
13}else{
14System.out.println("调用失败");
15}


场景说明

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

场景描述

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


接口调用流程

调用流程图:


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

场景描述

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


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


接口调用流程

调用流程图:


API 列表


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


接口英文名

接口中文名

alipay.open.app.mini.templatemessage.send

小程序发送模板消息


如果您在调用 API 时出现报错,您可以:

  • 公共错误码 中根据错误码的类型,查找相关错误码及解决方案;
  • 在 小蚂哥 问答页面直接输入您遇到的错误码;
  • 在技术支持 帮助中心 搜索相关错误码,找到解决方案。

常见问题

  • 小程序不需要上线也可以发送模板消息。
  • 小程序不需要绑定生活号。
  • formId 可以传交易号,trade_no 也可以通过 form 表单组件返回的 formId(需在真机联网环境下,IDE上获取的form_id会报错不合法,并且 表单的formId 只能通过用户点击交互来获取)来发送模板消息。

      注意:消息类型为表单类型的只能通过 formId 来发送模板消息。使用 formid 发送消息之前,需先获取会员信        息中的 user_id,具体请见 my.getOpenUserInfo

  • 模板 ID 只能通过 小程序应用后台 > 模板消息 > 我的模板 列表获取 。
  • 发送消息的时候报错 form_id 不合法,form_id 是表单提交生成的,要么就传交易号,两者都需要确认 form_id 的正确性,可以参考第3条。谁提交的 form,模板消息就发送给谁;谁支付产生的交易号是也发给谁,不能发错。 

模板消息有推送频率限制吗?

小程序发送模板消息对用户有疲劳度限制,对单个用户有发送限制,商家需要控制发送频率,单个用户超过发送频率后,后续发送的消息会被舍弃。

发送模板消息的接口为何报错 radeNo 只能发送给实际付款人?

传参错误。对交易号进行推送模板消息,传参必须是交易号而不是表单 id。