绑定普通二维码

收藏
我的收藏
为了方便小程序开发者能更便捷地推广小程序,兼容线下已有的二维码,抖音开放平台开放扫描普通二维码跳转到抖音小程序能力。普通二维码,是指开发者使用工具对网页链接进行编码后生成的二维码。

功能介绍

线下商户可不需更换线下二维码,在完成相关配置后,即可在用户扫描普通链接二维码时打开小程序,继而引导用户在小程序内完成相关操作。对于普通链接二维码,目前支持使用抖音“扫一扫”或抖音内打开图片识别二维码跳转小程序。
抖音和抖音极速版 20.4.0 以上支持。

准入条件

暂无准入条件,所有小程序均可使用。

接入流程

第一步:配置二维码信息

    2.在「我的应用」页面中点击「小程序」,然后在「小程序」页签中点击已创建的应用。
    3.在应用详情页面左侧导航栏选择「设置」>「关联设置」。在「关联设置」页面的「普通二维码绑定」区域点击「添加」。
    4.在「配置普通二维码」对话框中填写相关信息,点击「提交」。

需配置的信息说明:

信息
说明
二维码链接
    1.二维码规则的域名须通过 ICP 备案的验证。
    2.支持 HTTP、HTTPS 开头的链接(如:http://open.dy.comhttps://open.dy.com/mp/https://open.dy.com/mp?id=123)。
    3.一个小程序帐号可配置不多于 100 个二维码前缀规则。
校验文件
    1.下载随机校验文件,并将文件上传至服务器指定位置的目录下,方可通过所属权校验。
    2.验证文件放置规则: 放置于 URL 中声明的最后一级子目录下,若无子目录,则放置于 host 所属服务器的顶层目录下。请根据页面提示将验证文件放置在指定的目录下。
小程序功能页面
扫描后进入的小程序落地页,如:pages/index/index
前缀占用规则
选择是否占用符合二维码匹配规则的所有子规则。如选择占用,则其他帐号不可申请使用满足该前缀匹配规则的其他子规则。
如:若开发者 A 配置二维码规则:https://open.dy.com/mp?id=123,并选择「占用所有子规则」,其他开发者将不可以配置满足前缀匹配的子规则如https://open.dy.com/mp?id=1234
测试范围
选择测试范围:建议先测试再调整成全网生效。
    1.测试版:配置只对开发者生效。
    2.线上版:配置对线上用户生效。
功能测试只在指定版本针对指定用户生效,可随时修改,不影响线上用户的正常使用。

配置规则:

抖音客户端扫码将按以下匹配规则控制跳转:
    二维码链接的协议、域名与已配置的二维码规则一致。
    二维码链接属于后台配置的二维码规则的子路径(如需支持子路径匹配,请确认后台配置的二维码规则以/结尾,且勾选了占用前缀规则)。
    如果二维码规则包含参数,链接?后为参数部分,参数要求前缀匹配。
示例:
注册 URL
扫码解析 URL
是否匹配
原因
协议不匹配
非子路径
域名不匹配
非子路径
以“/”结尾,代表可以匹配子路径。
匹配子路径需要勾选占用前缀规则
满足前缀匹配,包含动态参数
不以“/”结尾,不能匹配子路径
满足前缀匹配,包含动态参数
不满足前缀匹配
不满足前缀匹配,匹配的参数键值对需相等
满足前缀匹配

第二步:测试/调试

测试仅对指定的测试链接和测试范围内的抖音用户生效,其他用户扫码后依然跳转到原页面,不影响全网用户正常使用。

第三步:全网生效

测试无误后,可在「操作」列点击「发布」,选择发布二维码。
发布后开发者仍然可以选择在指定版本(测试版/线上版本)下测试,请注意扫码用户要打开开发版必须提交过代码。

传递动态参数

跳转至对应小程序页面后:
在页面的onLoad()函数中,将 URL 的“参数”以 json string 的形式,放在query.q中传递给小程序;如果你需要读取完整的 URL,也可以在 query.url 中获取。系统会以字符串的形式将二维码解析出来的完整 URL 放在 query.url 中。
如果小程序页配置上也有一个 q=xx 的参数,会用动态参数覆盖配置的静态参数;如果原有配置上有 url=xxx 作为参数,会用动态参数覆盖配置的静态参数。
query 中会增加一个参数 scancode_time(UNIX 时间戳,单位秒),表示用户扫码的时间。
示例:
后台配置:
扫码识别出的 URL:
最终小程序获取的参数:
onLoad(query) { console.log(扫码时间${query.scancode_time}); //扫码时间xxx console.log(动态参数${query.q}); //动态参数{"isShare":"true","from":"scan"},url动态参数 console.log(动态参数${query.url}); // 动态地址:https://www.tt.com/a/b?isShare=true&from=scan console.log(${query.code}); //true,开发者自己配置的功能页面query console.log(${query.q}); //不为3,开发者自己配置的功能页面query中q被url传入的动态参数覆盖 console.log(${query.url}); // https://www.tt.com/a/b?isShare=true&from=scan }