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

能力接入介绍
收藏
我的收藏

前提条件 - 开通支付功能 ​

    1.小游戏开发者后台-【虚拟支付】查看能力,并申请开通(未满足开通条件时,请先按照说明补全资质认证)​
    2.请仔细阅读相关协议,并勾选同意协议​
    3.开通收款商户,详细资料填写流程可参考虚拟支付2.0接入指引
    4.确认结算账户信息并填写银行账号等相关信息。​
    5.设置游戏币兑换汇率(注意填写后提交通过后将无法更改),设置服务端回调地址等,完成后提交申请,等待审核。 ​
    6.审核通过后即可使用支付 SDK 能力进行小游戏支付 ​

小游戏支付时序图 ​

技术方案流程​

步骤一:前端调用小游戏支付​

小游戏前端调用 tt.requestGamePayment(Android) / tt.openAwemeCustomerService(ios) 接口,生成订单调起小程序收银台,发起支付流程。示例如下:​
tt.requestGamePayment({ currencyType: "CNY", // 币种:目前仅为"DIAMOND" buyQuantity: 600, // 购买游戏币数量 zoneId: "1", customId: "QWERTYUIDFxxxxx", //开发者自定义唯一订单号。如不填,支付结果回调将不包含此字段,将导致游戏开发者无法发放游戏道具, 基础库版本低于1.55.0没有此字段 extraInfo: `{ userId: "12xxx6", //用户自定义额外信息,支付结果回调信息包含此字段, 基础库版本低于1.55.0没有此字段 version: "v0.0.0", price: "30", }`, //extraInfo要转成字符串 success(res) { console.log("调用函数成功"); }, fail(res) { console.log("调用函数失败"); }, complete(res) { console.log("调用完成"); }, });

步骤二:获取支付结果并将结果发给小游戏服务端​

支付结果会发送给小游戏前端和字节服务端,为减少掉单情况发生,建议开发者同时接入小游戏前端回调和服务端回调,同时把支付结果传递给小游戏服务端进行后续业务处理。
    前端回调:Android 小游戏前端可使用 tt.requestGamePayment 回调结果进行后续业务处理;ios支付接口 tt.openAwemeCustomerService 暂不支持,请从服务端回调获取支付结果。​
    服务端回调:需要提前设置服务端回调地址,参考服务端回调接口,设置成功后,字节服务端会将用户支付成功的订单发送给小游戏服务端,​
    主动查询订单状态:回调由于网络异常等原因无法 100%触达,开发者可以使用queryPayState手动查询订单状态。​

步骤三:小游戏服务端发起请求扣除游戏币并下发对应游戏道具给用户​

当确认用户支付订单成功后,小游戏服务端可使用游戏币扣除接口进行游戏币扣除并发放游戏道具等。​

测试流程​

方案
说明
图示
注意事项
在IDE中调用支付接口​
在开发者工具中调用支付接口时,可验证接口传入参数有效性。​
参数校验通过后模拟器将展示支付二维码,对应真机上表现为拉起收银台​
此二维码只用作能力模拟,无法真实进行扫码支付​
扫码/真机调试(推荐)
完整测试支付链路,使用开发者工具中的【预览/真机调试】功能,扫码后可在真机上拉起收银台​
    目前暂不支持测试沙盒环境,在真机测试的过程中将使用真实金额进行支付,建议选择小额支付进行测试,大额场景检查收银台支付金额是否正确即可​
    测试版和预览版小游戏无需完成钻石支付签约,即可拉起钻石支付收银台;开发者可以完成测试后,再前往平台开通钻石支付签约。​
    用户在不同APP端或系统支付时收银台样式存在差异,开发者无需关注​

接口列表​

名称
类型
描述
JSAPI​
安卓发起支付JSAPI​
JSAPI​
ios发起支付JSAPI​
回调​
玩家支付完成后,字节服务端会将订单发送给小游戏服务端​
OpenAPI​
未接收到回调时,开发者可以通过该接口主动回查订单状态​
OpenAPI​
开通小游戏支付后,如果需要查询某个用户的游戏币余额,此时可以通过调用获取游戏币余额接口获取用户余额。 ​
OpenAPI​
可以调用该接口扣除某个用户的游戏币​
OpenAPI​
小游戏可设置一些场景任务给予玩家一定的游戏币奖励,如观看广告或者完成某些任务,此时可以通过调用游戏币赠送接口给玩家赠送游戏币。 ​
算法实现​
为确保支付安全性,游戏币赠送接口,游戏币查询接口,扣除游戏币接口都需要传递支付签名字段​