Getting Started

基础接入流程

步骤 说明
1 快看游戏运营提供给CP方如下:app_id(接入登陆等流程需使用;cp方将app_id硬编码至代码中或存储至cp方服务端,通过调用接口获取)和app_secret(可选,接入支付等流程需使用,存储在CP服务端)
2 CP方将游戏链接(测试)提供给快看游戏运营,由快看游戏运营将域名加入白名单
3 快看游戏运营提供CP方在快看APP中进入【2】步骤中游戏链接的方式,供CP方开发人员调试接入
4 CP方接入完成后,将游戏链接(正式)提供给快看游戏运营
5 快看游戏运营及CP方联合验收完毕,游戏上线

引入sdk文件

  • 最新版本:

  • 通过cdn script的方式引入,并且在body里引入(使用前请确保全局变量kkH5sdk存在)

<script src="https://gamestatic.kkmh.com/kkH5sdk/kkH5sdk.min-{version}.js"></script>

测试页面:kkH5sdk cdn Demo

辅助接入

avatar
使用该二维码可以在快看app里打开cp链接(体验有问题可以及时反馈~)

特殊说明

如果接入的游戏页面存在重定向操作,请确保在重定向后的链接中拼接必要的参数,方便进行相关数据统计及页面的正确展示(比如需要在重定向后的链接中拼接 navback=1 及 origin=xxx(origin参数取值包含在原始连接中));

avatar

如果存在重定向或者中间页跳转到正式游戏页面的情况,可能会遇到 两个胶囊按钮重叠 or 实名认证弹窗闪现的问题,请参考 FAQ 14.认证弹窗闪现15.按钮重叠的处理方式;

高效提问

我们提供的SDK接入文档基本涵盖了在接入过程中,您可能会遇到的大多数问题,并且提供了详尽的解决方案;在反馈问题前,可以使用关键词搜索的方式,排查是否包含您所遇到的问题(这是最高效的解决问题的方式)。

当然,如果遇到了不在文档提及范围内的问题,也请您按照如下问题反馈模板,在相应的QQ群,反馈给技术对接同学;请严格按照模板填写问题,这样可以让技术同学快速定位并解决问题

【问题模板】

  • 【必填】是否首次接入SDK:是/否
  • 【必填】问题描述(建议详细描述遇到的问题):初始化不成功/登录不成功/支付调用报错/胶囊按钮展示重叠等
  • 哪一端的问题(如果安卓、H5均接入了SDK,需要填写此问题):H5/客户端/双端 or 服务端
  • 【建议填写】是否有复现路径(复杂的交互形式建议以录屏形式给到,其次是文字描述):例如,【必现问题 || 特殊场景触发】ios进入页面后,点击xx按钮,出现支付商品列表,点击支付后报错等
  • 【必填】是否有报错信息:控制台是否有报错信息(需要保证debug模式开启) or 接口返回有报错信息

必接项

基础环境

  • 1. 必须支持https链接
  • 2. 必须适配ios刘海屏,在index.html里,viewport的meta,必须添加viewport-fit=cover
  • 3. 由于本地缓存可能会被用户删除掉,建议将用户的数据存储在云端,避免出现存档丢失的情况
  • 4. 在ios上,webgl在渲染的时候如果切换前后台,很容易引起崩溃,建议在ios上切换后台的时候停止渲染,切换回前台再继续渲染。sdk中提供了可以监听前后台切换的接口kkH5sdk.registViewStatus

初始化配置

1、必须调用
2、必须在调用所有方法之前调用;即其他方法的调用必须在config方法的success回调触发后调用
3、默认显示胶囊按钮

kkH5sdk.config();

参数

Object object

属性 类型 默认值 必填 说明
debug Boolean false 值为 true 打开调试模式(线上请关闭)
fullScreen Boolean true 值为 true 自动进入全屏模式
appId Number 使用自己游戏申请的appId
success Function 回调函数,初始化成功时执行
fail Function 回调函数,初始化失败时执行(会有多次返回,分别对应不同模块的初始化)

示例代码

kkH5sdk.config({
  debug: true,
  fullScreen: true,
  appId: appId,
  success: function() {
    console.log('kkH5sdk.config success');
    // 【important】在触发 config success 成功回调后,才能正确执行 sdk 中提供的其余方法
  },
  fail: function(res) {
    console.log('kkH5sdk.config fail', res);
    // 常见失败原因:1.appId缺失; 2.vconsole初始化失败; 3.游戏信息获取失败 
  }
});

loading界面和胶囊按钮(体验优化)

  • 1. 为了优化进入游戏时的体验,在sdk文件下载前就可以提前显示胶囊按钮,增加了loading界面,减少进入游戏前的白屏时间。
  • 2. 对于需要在快看内投放广告进行推广的游戏,必须接入
  • 3. 接入限制:
    (1) 必须通过cdn script的方式引入sdk
    (2) 必须适配ios刘海屏,在index.html里,viewport的meta,必须添加viewport-fit=cover
    (3) sdk版本 >= 3.2.0
    (4) 接入之后,需要联系快看将appId配入白名单,才可使用

选接项

登陆接入

  • 1. kkH5sdk.callLogin 只提供快看账号登陆,无法获取其他信息
  • 2. kkH5sdk.autoAuthorize 包含快看账号登陆和授权获取用户信息
  • 3. 若游戏无需登陆和获取用户信息功能时,无需做任何操作

支付接入

支付流程图

  • 1. 确保基础接入流程中步骤(1)~(3)已完成
  • 2. cp方服务器接入支付(服务端接入文档
  • 3. cp方前端接入登陆,使用kkH5sdk.autoAuthorize获取open_id
  • 4. cp方前端使用open_id,向cp方服务端请求商品相关信息trans_datasign
  • 5. cp方前端使用kkH5sdk.pay接口创建交易订单,并调起支付页面(支付页面支付方式的选择,可以联系快看运营进行调整)
    支付成功(success)
  • 6. 返回数据确定用户支付成功,cp方前端向cp方服务器轮询该订单支付情况(以服务器的支付情况为准判定)
    支付失败(fail)
  • 6. 处理错误返回情况

系统分享接入

  • 1. 悬浮菜单「分享游戏」显示条件(必须都满足)
    (1)在快看后台配置世界分享内容(可联系快看运营进行配置)
    (2)调用kkH5sdk.config进行初始化(必须带上appId
  • 2. 分享到世界:内容为快看后台配置内容,可配置内容如下
    (1)分享到世界的帖子的默认文案
    (2)分享到世界的帖子的默认图(可选多张图)
  • 3. 分享到微信等非世界平台:cp方可通过接口kkH5sdk.onMenuShareMessage来配置分享内容,如不配置,使用onMenuShareMessage中所描述的默认值

示例

cocosDemo:cocos creator2.3.1引擎的sdk接入示例

实名认证&防沉迷

1.sdk版本v3.2.3开始支持 2.接入了支付能力,需要实名认证&防沉迷
3.实名认证&防沉迷开启的时机为调用kkH5sdk.autoAuthorize,并且需要保证在kkH5sdk.config触发success回调之后调用 4.如果只是通过kkH5sdk.autoAuthorize来简单地获取用户信息,而不是用于接入支付能力,可通知快看人员关闭实名认证&防沉迷能力

接入方式

先调用kkH5sdk.config,触发success回调之后调用kkH5sdk.autoAuthorize,然后联系快看人员开启能力即可。

实名认证

在调用kkH5sdk.autoAuthorize的时候,如果还没实名认证,会弹出实名认证弹窗

防沉迷

未成年人在规定外的时间游玩,会给予提示

支付限额

未成年人支付超过一定的数额,会给予提示

判断接口是否可以使用

kkH5sdk.canUse(sdkName);

sdk v3.2.8添加该能力,用于判断其他接口是否可能

参数

属性 类型 默认值 必填 说明
sdkName String sdk的名称

返回值

true 或者是 false

示例代码

var canuse1 = kkH5sdk.canUse('callLogin');
var canuse2 = kkH5sdk.canUse('requestBannerAd');

基础能力

登录

未登录的情况下,唤起登录框进行登录

kkH5sdk.callLogin(Object object);

参数

Object object

属性 类型 默认值 必填 说明
success Function 回调函数,用户登录成功时执行
fail Function 回调函数,用户登录失败时执行

示例代码

kkH5sdk.callLogin({
  success: function () {
    console.log("login success");
  },
  fail: function () {
    console.log("login fail");
  }
});

获取设备信息

获取当前设备的信息,例如:系统类型、系统版本和设备号

kkH5sdk.getDeviceInfo(Object object);

参数

Object object

属性 类型 默认值 必填 说明
callback Function 回调函数,获得当前设备信息时执行

Object.success 回调函数

参数

只列举了常用的属性字段

Object res

属性 类型 说明
device_id String 设备号
os String 系统类型
os_version String 系统版本
wifi Boolean 网络环境是否为Wifi

示例代码

kkH5sdk.getDeviceInfo({
  callback: function (res) {
    console.log("device info:", res);
  }
});

注册前后台切换监听

调用该方法成功注册回调后,app在前后台切换时会进入回调

kkH5sdk.registViewStatus(Object object);

参数

Object object

属性 类型 默认值 必填 说明
success Function 回调函数,在切换前后台时被调用
fail Function 回调函数,执行后台回调出错时被调用

示例代码

kkH5sdk.registViewStatus({
  success: function (res) {
    console.log(res);
  },
  fail: function () {
    console.log("fail");
  }
});

success 返回数据res

{
  errno: 0,
  data: {
    isVisible: 0, // 1: 可见;0: 不可见
  },
  message: 'ok'
}

fail无返回数据

保存图片到相册

1. 只支持安卓,不支持ios
2. 暂时只支持保存jpeg图片
3. 只有先执行config初始化操作,才能调起保存图片到本地

kkH5sdk.saveImageInLocal(Object object);

参数

Object

属性 类型 必填 说明
image String 图片的链接或者是base64编码,取决于type值
type Number image的类型。type为1时,image表示图片链接;type为2时,image表示base64编码
success Function 回调函数,保存成功时执行
fail Function 回调函数,保存失败时执行

实例代码

  kkH5sdk.saveImageInLocal({
    image: 'image',
    type: type,
    success: function (res) {
      console.log(JSON.stringify(res));
    },
    fail: function (res) {
      console.log(JSON.stringify(res));
    }
  });

返回数据

  success:
  {
    code: 200,
    // 200:保存成功
    data: {
      path: '',
      // 保存图片的路径
    },
    msg: '信息描述'
  }

  fail:
  {
    code: 10001,
    // 常见错误: 10001:没有config初始化  10006:保存图片失败  10007:ios(android)系统不支持
    msg: '信息描述'
  }

分享(包含快看世界)

只有先执行config初始化操作,才能调起分享
支持:1.快看世界的分享(在快看后台配置世界分享内容才能显示) 2. qq、微博(手机上安装该软件才会显示)

kkH5sdk.activeShare(Object object);

参数

Object object

属性 类型 默认值 必填 说明
title String 分享到qq等外部平台的标题
desc String 分享到qq等外部平台的描述
icon String 分享到qq等外部平台的图标
worldImgUrls Array [] 可由cp方自己选择图片分享到世界,属于额外能力,需开通权限。分享到世界的图片列表,取数组第一到第六张
success Function 回调函数,分享过程中每个步骤执行
fail Function 回调函数,调起分享失败时执行

示例代码

kkH5sdk.activeShare({
    title: "title",
    desc: "desc",
    icon: "icon",
    worldImgUrls: ['url1', 'url2'],
    success: function () {
        console.log("activeShare success");
    },
    fail: function () {
        console.log("activeShare fail");
    }
});

返回数据

{
  code : 200,
  data : {
      path_step:0,   //0.呼起成功 1.关闭 2.分享成功 3.分享失败
      platform: 7,  //-1.分享平台未安装   0.默认值无含义(呼起成功) 3.SinaWeibo    5.QQ   7.World
      error_code: 10001, 
      // path_step为3时的补充信息,分享失败错误码。目前仅世界(world)支持. 
      // 10001: 上一个帖子发送中;   10000: 图片不存在等
      error_msg:  '发帖中'
      // 分享失败msg。目前仅世界(world)支持
  },
  message : 'ok'
}

全屏/非全屏

Andriod快看App内,横屏会出现WebView退出的现象

kkH5sdk.resizeScreen(Object object);

参数

Object object

属性 类型 默认值 必填 说明
fullScreen String 值为 "hide" 表示非全屏,值为 "show" 表示全屏
display Number 值为 1 表示竖屏,值为 2 表示横屏
success Function 回调函数,屏幕改变成功时执行
fail Function 回调函数,屏幕改变失败时执行

示例代码

kkH5sdk.resizeScreen({
  fullScreen: "hide",
  display: 1,
  success: function () {
    console.log("resizeScreen success");
  },
  fail: function () {
    console.log("resizeScreen fail");
  }
});

退出WebView

kkH5sdk.exitWebview();

退出WebView

示例代码

kkH5sdk.exitWebview();

游戏能力

授权登录

kkH5sdk.autoAuthorize(Object object);

参数

Object object

属性 类型 默认值 必填 说明
appId Number 分配给应用的ID
success Function 回调函数,授权登录成功时执行
fail Function 回调函数,授权登录失败时执行

Object.success 回调函数

参数

Object res

属性 类型 说明
open_id String 用户open_id
nickname String 用户昵称
avatar_url String 用户头像链接
access_token String 认证参数
has_real_name Boolean 是否拥有实名
is_new_account Boolean 是否是新账号

Object.fail 回调函数

参数

Object res

属性 类型 说明
code Number 状态码
message String 错误信息

示例代码

kkH5sdk.autoAuthorize({
  appId: 1024,
  success: function (res) {
    console.log(JSON.stringify(res));
  },
  fail: function (res) {
    console.log(JSON.stringify(res));
  }
});

清除 access_token 缓存

删除前端本地缓存的 access_token(如果 验证 open_id 合法性 接口返回 4002,表明access_token已失效,需要cp手动调用 kkH5sdk.clearUserCache 后重新调用 kkH5sdk.autoAuthorize 获取新的 access_token)

kkH5sdk.clearUserCache();

示例代码

kkH5sdk.clearUserCache();

系统分享

系统分享监听

监听用户点击右上角悬浮菜单的「分享游戏」按钮时触发的事件

kkH5sdk.onMenuShareMessage(function callback);

参数

function callback

用户点击右上角悬浮菜单的「分享游戏」按钮时触发的事件的回调函数

参数

Object object

属性 类型 默认值 必填 说明
title String 游戏名称 分享到qq等外部平台的标题
desc String "你的好友分享了好玩的游戏给你,快来玩吧~" 分享到qq等外部平台的描述
icon String 游戏icon 分享到qq等外部平台的图标
worldImgUrls Array [] 分享到世界的图片列表,如果为[]的话取快看后台配置图片,不为空取数组第一张 (使用自己的图片需找快看运营开发权限)

示例代码

kkH5sdk.onMenuShareMessage(()=>{
  console.log('clickMenuShare');
  return {
    title: '转发标题',
    desc: '转发描述',
    icon: '转发icon',
    worldImgUrls: ['url1', 'url2'] // 只取url1
  }
});

广告视频

资源准备:向快看游戏运营获取广告位Id(ad_pos_id)

预加载视频

调用后立即触发
由于加载视频需要一定的下载时间,请尽可能早的调用预加载
预加载是异步的过程,调用返回仅表示开始加载广告资源,并不保证一定资源加载完成

kkH5sdk.preloadAdVideos(Object object);

参数

Object

属性 类型 必填 说明
ad_pos_id String 快看广告位
ad_type String 广告类型(如激励视频)
context_id String 游戏的app_id
callback Function 回调函数

实例代码

  kkH5sdk.preloadAdVideos({
    ad_pos_id: 'ad_pos_id',
    ad_type: '',
    context_id: 'app_id',
    callback: function(res){
      // 
    }
  });

返回数据

{
  code: 200,
  data:{},
  message: '信息描述'
}

查询可用广告视频及状态

调用后立即触发
每次播放前必须调用该方法确认是否加载完成
该方法的返回结果是广告资源是否加载完成的唯一标示

kkH5sdk.isVideoReady(Object object);

参数

Object

属性 类型 必填 说明
ad_pos_id String 快看广告位
ad_type String 广告类型(如激励视频)
context_id String 游戏的app_id
callback Function 回调函数

实例代码

  kkH5sdk.isVideoReady({
    ad_pos_id: 'ad_pos_id',
    ad_type: '',
    context_id: 'app_id',
    callback: function(res){
      // 
    }
  });

返回数据

{
  code: 200,
  data:{
    status: 0,
    // 0:广告未加载完成    1:广告加载完成
  },
  message: '信息描述'
}

播放广告视频

1.调用后立即触发
2.只有在视频加载完成(isVideoReady返回值中status为1)的情况下,才能拉起播放器播放广告
3.根据返回值status为5(成功获取奖励)来判断是否发放奖励
4.无法保证2、4、5的status是按一定的时序返回的

kkH5sdk.playAdVideo(Object object);

参数

Object

属性 类型 必填 说明
ad_pos_id String 快看广告位
ad_type String 广告类型(如激励视频)
context_id String 游戏的app_id
extra String 透传字段(可传空字符串)
callback Function 回调函数

实例代码

  kkH5sdk.playAdVideo({
    ad_pos_id: 'ad_pos_id',
    ad_type: '',
    context_id: 'app_id',
    extra: '',
    callback: function(res){
      // 
    }
  });

返回数据

{
  code: 200,
  // 200: 调用成功 400:调用失败
  data: {
    status: 0,
    // 0:失败 1:成功  2:关闭  3:点击  4:视频播放完毕  5:成功获取奖励(使用5来发放奖励)
  },
  message: '信息描述'
}

广告展示过一次后,下次展示仍然需要依次下列方法

kkH5sdk.preloadAdVideos( proloadParams);
kkH5sdk.isVideoReady( isReadyPrams);
kkH5sdk.playAdVideo( playVideoParams);

banner广告

资源准备:向快看游戏运营获取广告位Id(ad_pos_id) sdk支持版本:v3.2.8 快看客户端支持版本:v5.96

接入banner广告流程

  • 1. 尽可能早地调用一次kkH5sdk.requestBannerAd,这次调用完之后就不需要再调用预加载,sdk里已封装之后的预加载流程
  • 2. 展示banner广告需要调用kkH5sdk.showBannerAd,调用完之后会30s循环展示不同的banner广告资源,在这个30s的循环中可能出现失败的情况,这个可以不用处理,30s之后会再重试展示一次。
  • 3. 取消展示banner广告需要调用kkH5sdk.hideBannerAd,调用之后上述的30s循环会被取消,并且隐藏当前正在展示的banner广告
  • 4. 最终的调用顺序即为requestBannerAd(只调用一次,尽可能早)->showBannerAd->hideBannerAd->showBannerAd->hideBannerAd->showBannerAd->hideBannerAd->....

预加载banner广告

调用后立即触发
由于加载banner需要一定的下载时间,请尽可能早的调用预加载,并且只需调用一次
预加载是异步的过程,调用返回仅表示开始加载广告banner资源,并不保证一定资源加载完成

kkH5sdk.requestBannerAd(Object object);

参数

Object

属性 类型 必填 说明
ad_pos_id String 快看广告位
context_id String 游戏的app_id
callback Function 回调函数

实例代码

  kkH5sdk.requestBannerAd({
    ad_pos_id: 'ad_pos_id',
    context_id: 'app_id',
    callback: function(res){
      // 
    }
  });

返回数据

{
  code: 200,
  data:{},
  message: '信息描述'
}

展示banner广告

调用后立即触发
由于存在banner广告资源还未加载完成,可能存在展示失败和展示成功
展示失败的情况:30s之后会重新尝试展示
展示成功的情况:30s之后会轮播下一个banner
调用hideBannerAd会取消上述30s的循环
banner广告无法被用户手动关闭,只能通过hideBannerAd关闭

kkH5sdk.showBannerAd(Object object);

参数

Object

属性 类型 必填 说明
ad_pos_id String 快看广告位
context_id String 游戏的app_id
ad_position String 广告位置(距离顶部的百分比),取值为0-100
extra String 非必填 其它需要透传的参数
callback Function 回调函数

实例代码

  kkH5sdk.showBannerAd({
    ad_pos_id: 'ad_pos_id',
    context_id: 'app_id',
    ad_position: '80',
    callback: function(res){
      // 
    }
  });

返回数据

 {
   code: 200,
   // 200: 调用成功 400:调用失败
   data: {
     status:0, // 0:失败(show 失败)   1:成功(show 成功)  3:点击操作(click)
   },
   message: '信息描述'
 }

隐藏banner广告

1.调用后立即触发
2.调用后展示广告30s的循环将被取消,并且隐藏广告。 3.调用之后,showBannerAd不会有关闭的回调

kkH5sdk.hideBannerAd(Object object);

参数

Object

属性 类型 必填 说明
ad_pos_id String 快看广告位
context_id String 游戏的app_id
callback Function 回调函数

实例代码

  kkH5sdk.hideBannerAd({
    ad_pos_id: 'ad_pos_id',
    context_id: 'app_id',
    callback: function(res){
      // 
    }
  });

返回数据

code : 200, // 200->调用成功   400->调用失败
  data : {},
  message : "信息描述"

插屏广告

资源准备:向快看游戏运营获取广告位Id(ad_pos_id) sdk支持版本:v3.2.8 快看客户端支持版本:v5.96

接入插屏广告流程

  • 1. 尽可能早地调用一次kkH5sdk.requestInterstitialAd,这次调用完之后就不需要再调用预加载,sdk里已封装之后的预加载流程
  • 2. 展示插屏广告需要调用kkH5sdk.showInterstitialAd,调用完之后会展示插屏广告,可能存在成功或者失败的情况。
  • 3. 取消展示插屏广告需要调用kkH5sdk.hideInterstitialAd,调用之后隐藏当前正在展示的插屏广告
  • 4.requestInterstitialAd(只调用一次,尽可能早)->showInterstitialAd->hideInterstitialAd->showInterstitialAd->hideInterstitialAd->showInterstitialAd->hideInterstitialAd->....

预加载插屏广告

调用后立即触发
由于加载插屏需要一定的下载时间,请尽可能早的调用预加载,并且只需调用一次
预加载是异步的过程,调用返回仅表示开始加载广告插屏资源,并不保证一定资源加载完成

kkH5sdk.requestInterstitialAd(Object object);

参数

Object

属性 类型 必填 说明
ad_pos_id String 快看广告位
context_id String 游戏的app_id
callback Function 回调函数

实例代码

  kkH5sdk.requestInterstitialAd({
    ad_pos_id: 'ad_pos_id',
    context_id: 'app_id',
    callback: function(res){
      // 
    }
  });

返回数据

{
  code: 200,
  data:{},
  message: '信息描述'
}

展示插屏广告

调用后立即触发
由于存在插屏广告资源还未加载完成,可能存在展示失败和展示成功
插屏广告可以被用户手动关闭,也可以通过hideInterstitialAd关闭,手动关闭会触发showInterstitialAd中data.status=2的关闭回调,通过hideInterstitialAd关闭则不会触发回调

kkH5sdk.showInterstitialAd(Object object);

参数

Object

属性 类型 必填 说明
ad_pos_id String 快看广告位
context_id String 游戏的app_id
extra String 非必填 其它需要透传的参数
callback Function 回调函数

实例代码

  kkH5sdk.showInterstitialAd({
    ad_pos_id: 'ad_pos_id',
    context_id: 'app_id',
    callback: function(res){
      // 
    }
  });

返回数据

 {
   code: 200,
   // 200: 调用成功 400:调用失败
   data: {
     status:0, // 0:失败(show 失败)   1:成功(show 成功)    2:关闭(只有用户手动点击关闭按钮会回调)   3:点击操作(click)
   },
   message: '信息描述'
 }

隐藏插屏广告

1.调用后立即触发
2.调用后会隐藏正在展示的插屏广告。 通过hideInterstitialAd关闭,不会触发showInterstitialAd中data.status=2的关闭回调

kkH5sdk.hideInterstitialAd(Object object);

参数

Object

属性 类型 必填 说明
ad_pos_id String 快看广告位
context_id String 游戏的app_id
callback Function 回调函数

实例代码

  kkH5sdk.hideInterstitialAd({
    ad_pos_id: 'ad_pos_id',
    context_id: 'app_id',
    callback: function(res){
      // 
    }
  });

返回数据

code : 200, // 200->调用成功   400->调用失败
  data : {},
  message : "信息描述"

支付能力

支付

app版本5.55开始支持支付。

  1. 安卓:
    sdk版本为3.1.14以下,支付可选方式为微信、qq、支付宝。
    sdk版本为3.1.14及以上,支付可选方式为微信、qq、支付宝、kk币
  2. ios:
    支付可选方式只为kk币支付。
  3. 只有先执行config初始化操作,才能调起支付
  4. 等同于旧版payByRMBMoney

kkH5sdk.pay(Object object);

参数

Object

属性 类型 必填 说明
trans_data String 订单数据信息(cp服务端返回)
sign String 签名(cp服务端返回)
track_data Object 包含app_id属性
success Function 回调函数,支付成功时执行
fail Function 回调函数,支付失败时执行

实例代码

  kkH5sdk.pay({
    trans_data: 'trans_data',
    sign: 'sign',
    success: function (res) {
      console.log(JSON.stringify(res));
    },
    fail: function (res) {
      console.log(JSON.stringify(res));
    }
  });

返回数据

  success:
  {
    code: 0,
    // 0: 支付成功
    data: {
      pay_status: 1,
      // 1:购买成功
    },
    msg: '信息描述'
  }

  fail:
  {
    code: 1,
    // 常见错误:1:支付失败  10001:没有config初始化  10002:app版本或低  10003:网络请求出错  
    //         10004:交易流水号为空 ,7002:签名错误,7003请求参数错误
    //         40051:该游戏不支持付费或无可用支付平台,请检查配置
    data: {// 只有在code为1时返回
      pay_status: 3,
      // 2:购买失败  3:取消购买(ios没有取消购买的回调)
    },
    msg: '信息描述'
  }

FAQ

1.是否一定要让用户授权登陆?

不一定,授权登陆是为了拿到用户对应的openId,作为用户的识别标识,如果说你的游戏只是单纯本地的单机游戏,无需走登陆流程。

2.有哪些操作是必须做?

基础接入流程初始化配置(kkH5sdk.config),如果没做该操作,某些接口会返回10001:没有config初始化的错误码。

3.如何测试sdk

  • 目前只能在快看app上验证sdk能力。需要下载快看app,并注册一个账号,随后将账号uid和测试链接发给快看相关人员,之后快看运营会通过快看app内私信的方式发送给cp方。或者是可以通过辅助接入的二维码,在里面粘贴链接进行测试;
  • 快看app是没有扫描功能的,可以用手机自带扫描功能或者微信的扫描功能来扫描辅助接入的二维码,扫描二维码后点击右上角,将链接在手机浏览器中打开。在浏览器中会提示打开快看APP,点击确定即可到达对应测试页面,输入游戏链接即可测试。

4.sdk从低版本升级到高版本的时候,胶囊按钮会出现消失的情况,而且有报错信息‘cannot read property ‘appendChild’ of null’

因为高版本将胶囊按钮设置为默认显示,会在sdk下载之后就会动态添加胶囊按钮到body里,如果将sdk文件的引入放在body前的话,就会出现报错。因此必须在< body>标签内引用sdk文件。

5.胶囊按钮可能出现一闪而过消失的情况

因为游戏内容的层级高于胶囊按钮的层级,游戏内容覆盖了胶囊按钮。可以动态修改胶囊按钮的z-index,高于游戏内容即可,可根据className获取,class="kkmh-header-menu"。

6.调用分享的时候会出现拉起平台失败的情况

Cp方需检查分享接口传入的参数是否是有效的,如检查无误再联系快看进行排查。

7.cocos引擎的游戏项目在部分安卓机会出现屏幕翻转的现象

可以参考 https://forum.cocos.org/t/360-cocos-creator-h5-90/50183 该链接,将main.js里enableAutoFullScreen的相关代码注释。

// cc.view.enableAutoFullScreen([
//     cc.sys.BROWSER_TYPE_BAIDU,
//     cc.sys.BROWSER_TYPE_WECHAT,
//     cc.sys.BROWSER_TYPE_MOBILE_QQ,
//     cc.sys.BROWSER_TYPE_MIUI,
// ].indexOf(cc.sys.browserType) < 0);

8.使用广告能力的时候,出现闪退的现象

需要检查传入参数的数据类型是否正确

9.游戏代码更新之后发现游戏还是之前的界面

  • 可以检查index.html是否是cdn资源;
  • 目前快看app对于缓存的处理和普通浏览器一样,不会对cp资源文件做特殊的缓存机制。如果CP游戏页面没有设置cache control的话,正常资源是会缓存的。CP可以对静态文件做hash处理让每次打包的css和js文件名都不同,来解决缓存问题。

10.游戏请求报错 aborted(已取消)

在接入SDK前,CP方首先需要联系快看游戏运营将CP的游戏域名加入到白名单中。

11.游戏卡在loading界面

  • 目前新游戏接入,是自动接入loading页面的。部分旧游戏是需要配置白名单才能接入loading页面,可联系快看运营进行配置;
  • 3.2.10之后的SDK版本已经修复了卡在loading界面的问题,3.2.9之前的版本如出现该问题,可升级版本来解决;
  • 如果使用了最新版本的SDK,仍然卡在loading界面,有可能是SDK引入的问题。SDK引入不要在head标签里引入,需要在body标签里的最前面引入,因为sdk使用了document.body;
  • 目前SDK没有提供主动关闭loading页面的方法。

12.广告播放失败

获取广告接口调用成功只是表明拿到了资源,但是资源有可能还没有加载完毕,因为加载广告需要一定的下载时间。 因此尽可能早的调用预加载接口。

13.如何自测协议是否生效

avatar
使用该二维码可以在快看app里打开测试页面;首先点击config,完成初始化配置后,在依次测试不同SDK(体验有问题可以及时反馈~)

参考调试SDK视频

14.为什么实名认证弹窗闪现,且消失后不再出现

请确认游戏页面是否有重定向操作,如果有,请保证最后重定向的页面进行 sdk 初始化操作。

15.为什么页面中存在两个胶囊按钮

请确认游戏页面是否有重定向操作,如果有,请保证最后重定向的页面链接 url 中包含 navback=1 的query参数。