抖音开放平台Logo
开发者文档
控制台

小额支付接入指引

收藏
我的收藏

一、什么是小额支付?

「小额支付」是一种付费点设计和定价策略,能够通过降低支付门槛,撬动账户有钻石余额用户支付能力,提升付费破冰效率,对扩大游戏付费用户规模,提升游戏全生命周期内购GMV具有重要作用。
在实际应用中,小额支付大多与游戏原有的激励广告点位共同展示,用户可自选观看广告获得奖励,也可通过使用小额钻石跳过广告获得奖励,同时平台也支持开发者将小额支付与激励广告解耦,单独设计小额支付点位。
接入小额支付具有以下优势:
开发量小:仅需传参和简单ui设计,1个工作日可完成接入
效果显著:付费用户数、新增付费用户数、付费率一般可达到翻倍效果
接入便捷:无需改动游戏原有的付费设计体系,方便快捷

二、小额支付线上表现是怎样的?

游戏截屏中的这些「n钻免广告」,都是小额支付

三、小额支付showcase

案例1:益智休闲游戏,以广告收入为主

【案例特色】
该游戏收入结构以广告为主,玩法为休闲益智,用户在游戏过程中比较「吃资源」,如元宝/拼图碎片/体力等,且失败重开的时间成本高,对「复活」需求强,开发者在这些重要的资源获取和复活点位新增「3钻免广告」选项,用户仅需支付单次0.3元即可不被广告打断,获得连续爽快的游戏体验。自接入「小额支付」后,游戏付费规模高倍数增长,并贡献近一半的内购GMV收益。

+50倍             +16倍         +14倍         48%

新增付费用户数               付费用户数                付费率                     GMV贡献率

案例2:卡牌rpg,以内购收入为主

【案例特色】
该游戏为中重度数值卡牌玩法,内购收入占比高,用户核心追求神将培养、战力提升、资源获取,小额支付点位与原本的激励广告位置相耦合,提供给用户更高效的资源获取与推图工具,包括离线收益、加速点击、神将抽取机会等。该游戏玩法较重度,原本的付费设计点标价较高,小额支付可提前突破付费破冰,实现用户从免费向付费的高效转化,接入小额支付后,游戏付费率提升1倍。

+1.3倍           6%

付费率                           GMV贡献率

案例3:休闲io游戏,以广告收入为主

【案例特色】
该游戏为休闲io游戏,收入结构以广告为主。该游戏玩法为多人实时对战,用户在对局时有“更强、更好看”的需求,来满足多人对局时的好胜、比美心理。因此开发者在对局前页面提供给用户1钻石试用皮肤的机会,用户在尝鲜心理驱动下完成首次游戏内付费,并在体验皮肤特效后,习惯于选择皮肤再开局,人均小额支付次数达到2次,游戏付费规模增长多倍。

+6倍              +6倍           +6倍          30%

新增付费用户数             付费用户数               付费率                    GMV贡献率

案例4:棋牌桌游类游戏,广告和内购收入占比相当

【案例特色】
该游戏为象棋玩法,广告和内购收入占比相当。棋牌桌游用户和抖音直播用户重合度高,很多棋牌桌游用户同时也看直播,并且在直播中充值或福袋抽取了大量钻石,该游戏通过在对局前设置3钻免广告获得道具,可以充分转化这批账户有钻石余额的用户消费,接入小额之后,该游戏付费用户规模得到大幅增长。

+6倍               +3倍           +3倍        30%

新增付费用户数              付费用户数                付费率                 GMV贡献率

四、如何设计小额支付?

设计要点
【曝光位置上】
    1.小额支付对付费用户量提升的倍数与小额曝光量息息相关,建议尽可能给到小额支付比较多的曝光位置;
    2.小额支付对未付费用户的转化效果强,因此不建议对小额支付设置前置曝光门槛,如:通过20关后、游戏等级10级后、战力高于1万后。
【ui设计上】
    1.如小额点位为勾选形式,建议不同的勾选状态设置不同的文字+icon提醒,例如勾选状态=3💎免广告,未勾选状态=看广告获取📹
    2.为了使用户关注到小额点位,建议加强动效、光效等效果,使小额点位更突出;
    3.若ui设计需使用钻石标识,请使用抖音官方钻石标识,下载地址:抖音钻石.png
【小额定价上】
    1.开发者可自行接入10钻以下(不包括10钻)的小额点位,考虑用户钻石余额分布,建议选择1~3钻接入;
    2.在具体小额定价确定上,可重点参考以下因素:
    a.对比游戏自身ecpm,如游戏ecpm为150(单次广告价值0.15元),则建议接入至少2钻;
    b.对比游戏本身付费设计,如免广告卡6元40次(单次免广告价值0.15元),则建议接入至少2钻;
    c.不同位置梯度定价,如观看1个广告得奖励的点位接入1钻,观看2个广告得奖励的点位接入2钻。
接入点位参考

五、如何接入小额支付?

    1.参数设置

安卓使用接口:tt.requestGamePayment
ios使用接口:tt.openAwemeCustomerService
属性名
类型
必填
差异化说明
最低支持基础库版本
goodType
number
本参数传2,同时 buyQuantity 字段不传
3.47.0
orderAmount
number
使用小额支付功能时,代表道具现金价格,单位为【分】,如价格为1钻,则回传10
3.47.0
goodName
string
道具名称,长度限制小于等于10个字符,用于区分道具类型,非必填
3.47.0
接口介绍与接入tips:
    1.由于小额支付依托的道具直购能力需在基础库版本3.47.0及以上可用,需使用canIUse来判断是否支持,其中安卓为tt.canIUse('requestGamePayment.object.goodType') iOS为tt.canIUse('openAwemeCustomerService.object.goodType'),处理后线上表现为基础库版本大于3.47.0可见小额支付,小于3.47.0不可见小额支付;
    2.开发者收到支付成功的服务端回调后,可通过 customId 或 extraInfo 判断是否为小额支付的回调;
    3.若游戏为Unity引擎,需额外注意以下几点:
    接口使用:TT.RequestGamePayment(安卓)和TT.openAwemeCustomerService(iOS)
    接入判断条件CanIUse为CanIUse.RequestGamePaymentParams.GoodType

    2.能力实现路径

小额支付使用了道具直购能力,支持在游戏内直接使用钻石/现金兑换明确的游戏道具/权益直购的场景,无需进行游戏币转换

    3.代码示例

普通小游戏

if (tt.canIUse('requestGamePayment.object.goodType')) { // 道具直购 tt.requestGamePayment({ goodType: 2, orderAmount: 10goodName: "道具名称" currencyType: "CNY", zoneId: "1", customId: "QWERTYUIDFxxxxx", mode: "game", // 支付类型 env: 0, // 支付环境 platform: "android", extraInfo: "extraInfo", // extraInfo为字符串格式,用户自定义额外信息,支付结果回调信息包含此字段,基础库版本低于1.55.0没有此字段 success(res) { console.log("调用函数成功"); }, fail(res) { console.log("调用函数失败"); }, complete(res) { console.log("调用完成"); }, }); } else { // 游戏币 tt.requestGamePayment({ mode: "game", // 支付类型 env: 0, // 支付环境 platform: "android", currencyType: "CNY", // 币种:目前仅为 "CNY" buyQuantity: 600, // 购买数量,必须满足:金币数量*金币单价 = 限定价格等级(详见金币限定等级) zoneId: "1", customId: "QWERTYUIDFxxxxx", // 开发者自定义唯一订单号。如不填,支付结果回调将不包含此字段,将导致游戏开发者无法发放游戏道具, 基础库版本低于1.55.0没有此字段 extraInfo: "extraInfo", // extraInfo为字符串格式,用户自定义额外信息,支付结果回调信息包含此字段,基础库版本低于1.55.0没有此字段 success(res) { console.log("调用函数成功"); }, fail(res) { console.log("调用函数失败"); }, complete(res) { console.log("调用完成"); }, }); }

Unity小游戏

if (!CanIUse.RequestGamePayment) { return; } if (CanIUse.RequestGamePaymentParams.GoodType) { var orderAmount = int.Parse(inputPrice.text); var orderInfoParams = new Dictionary<string, object>(); orderInfoParams["mode"] = "game"; orderInfoParams["env"] = "0"; orderInfoParams["currencyType"] = "CNY"; // 固定值: CNY。币种 orderInfoParams["platform"] = "android"; orderInfoParams["customId"] = (TimeUtils.GetCurrentTimeMs() / 1000).ToString(); orderInfoParams["goodType"] = 2; orderInfoParams["orderAmount"] = orderAmount; orderInfoParams["goodName"] = "测试商品"; TT.RequestGamePayment( orderInfoParams, () => { PrintText("Pay Success " + orderInfoParams["customId"]); }, (errCode, errMsg) => { PrintText("Pay failed - errCode: " + errCode + ", errMsg: " + errMsg, true); } ); } else { var quantity = int.Parse(inputPrice.text); Dictionary<string, object> orderInfoParams = new Dictionary<string, object>(); orderInfoParams["mode"] = "game"; orderInfoParams["env"] = "0"; orderInfoParams["currencyType"] = "CNY"; // 固定值: CNY。币种 orderInfoParams["platform"] = "android"; orderInfoParams["buyQuantity"] = quantity; orderInfoParams["customId"] = (TimeUtils.GetCurrentTimeMs() / 1000).ToString(); TT.RequestGamePayment( orderInfoParams, () => { PrintText("Pay Success " + orderInfoParams["customId"]); }, (errCode, errMsg) => { PrintText("Pay failed - errCode: " + errCode + ", errMsg: " + errMsg, true); } ); }

六、常见问题FAQ

    1.为什么有些用户体验不到小额支付?
答:小额支付依赖抖音客户端版本,需用户的抖音版本高于32.0.0(unity小游戏需高于32.1.0),若有用户反馈体验不到小额支付,可引导用户升级抖音客户端即可解决问题。
    2.我的游戏在投放买量,接入小额支付会影响买量效果吗?
答:如果担心接入小额支付后会买入低价值用户,影响买量roi,可联系对接的销售直客同学沟通解决方式。
    3.我在哪里可以看到小额支付的效果数据?
答:开发者可通过后台查询:
入口:小游戏控制台->商业化->虚拟支付
支付数据查询
方法1:通过【支付指标明细】->【支付渠道】查询,如果支付渠道显示-「抖音钻石兑换」且「变化数量」字段显示为「0」,则代表本订单为小额支付订单;
方法2:可根据小额支付单笔定价金额(如0.3元),筛选出小额支付订单。