# 1. 入门指南

# 1.1 概览

为丰富游戏在快手平台上的运营推广及生态建设,快手游戏推出了快手游戏联运SDK 「基础版本」和快手游戏「联运SDK 拓展版本」。游戏厂商可以依托快手平台的内容资源带动游戏的分发,还可以在快手平台建立游戏的内容生态,同时获得品牌的曝光和分发量的增长。

# 1.2 准备工作 (接入必看)

# 开发者提供以下信息

# 游戏图标(分辨率 256px * 256px, 最大100kb——附.尺寸缩小工具 (opens new window))

# 支付公钥(如接入支付提供)

  • 用途:
    • 用于快手支付服务器校验游戏开发者服务器的真实性。游戏服务器的请求用自己的私钥签名,快手服务器使用公钥验签。
  • 要求:
    • 密钥长度为4096bit,签名/验签算法使用SHA512WithRSA
    • 获取方式:首先进入OpenSSL工具,输入以下命令。

TIP

OpenSSL> genrsa -out app_private_key.pem 4096 #生成私钥
OpenSSL> pkcs8 -topk8 -inform PEM -in app_private_key.pem -outform PEM -nocrypt -out app_private_key_pkcs8.pem #Java开发者需要将私钥转换成PKCS8格式
OpenSSL> rsa -in app_private_key.pem -pubout -out app_public_key.pem #生成公钥 OpenSSL> exit #退出OpenSSL程序

经过以上步骤,开发者可以在当前文件夹中(OpenSSL运行⽂件夹),看到app_private_key.pem (开发者RSA私钥,非Java语言适⽤用)、app_private_key_pkcs8.pem(pkcs8格式开发者RSA私钥,Java语言适用)和app_public_key.pem(开发者RSA公钥)3个文件。开发者将私钥保留,将 公钥提交给快手,⽤于验证签名。

TIP

对于使⽤用Java的开发者,需将生成的pkcs8格式的私钥去除头尾、换行和空格,作为私钥填入代码中,对于.NET和PHP的开发者来说,⽆需进行pkcs8命令⾏操作。

  • Android签名MD5 keytool -printcert -jarfile xxx.apk 可以查看打出apk签名的md5
  • Android包名(以.kuaishou结尾)

# 快手运营侧在内部后台创建应用

# appid:

⽤于标识游戏,快手会给每个游戏分配⼀个appId, 用于标识每个游戏,app_id 是集成其他功能的必备参数。

# appSecret:

⽤于快⼿授权服务器校验游戏账号服务的真实性

WARNING

注意: 请不要写在客户端,注意不要泄露给其他人知道

# 中台支付公钥(仅接入支付的游戏提供):

⽤于游戏开发者服务器校验快⼿⽀付回调的真实性。快⼿支付服务器的请求及给游戏服务器的响应都会⽤自⼰的私钥签名,游戏开发者服务器务必使用此公钥验签。

# 1.3 资源准备

请在游戏中导入以下三方库, 建议用对应的版本,过低的或者过高的三方库可能有兼容问题

//okhttp不要用4.6以上的版本,有兼容性问题
implementation 'com.squareup.okhttp3:okhttp:3.10.0'
implementation 'com.google.protobuf.nano:protobuf-javanano:3.1.0'
implementation 'com.getkeepsafe.relinker:relinker:1.3.0'
implementation 'android.arch.lifecycle:extensions:1.1.1'
//gson版本不要太低,会出现支付无法拉起的问题
implementation 'com.google.code.gson:gson:2.8.5'
implementation 'io.reactivex.rxjava2:rxjava:2.1.9'
implementation 'io.reactivex.rxjava2:rxandroid:2.0.1'
implementation 'org.greenrobot:greendao:3.1.1'
implementation 'com.google.dagger:dagger:2.23'
implementation 'android.arch.persistence.room:runtime:1.1.1'
implementation 'com.jakewharton.rxrelay2:rxrelay:2.0.0'
//这是最低兼容版本
implementation 'com.android.support:appcompat-v7:26.1.0'
    
//以下为1.1版本新增
implementation 'com.android.support:support-annotations:27.1.1'
implementation 'com.google.guava:guava:24.0-android'
implementation 'com.squareup.retrofit2:retrofit:2.4.0'
implementation 'com.squareup.retrofit2:converter-gson:2.4.0'
implementation 'com.squareup.retrofit2:adapter-rxjava2:2.4.0'
implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.72'
implementation 'com.android.support:appcompat-v7:26.1.0'
implementation 'com.squareup.retrofit2:converter-scalars:2.4.0'

//支付宝三方sdk. 如果游戏已经导入支付宝sdk ,则不需要重复导入
implementation files ('sdklibs/AlipaySdk-15.8.01.20210112203525') 

TIP

PS: 如果游戏不支持Kotlin,需要添加以下依赖:

implementation 'org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.72'

如果是项目没有使用gradle, 请下载lib.zip 并且导入里面都文件(注,资源文件一定要拷贝) TODO 这里有下载链接

# 1.4 快速开始

  1. 下载demo。导入androidstudio
  2. 修改demo参数为游戏参数。
    • 修改demo中build.gradle文件的包名和appid
      ''
    • 修改MyApplication里的初始化appid
      ''
  3. 修改gradle.properties中的是否使用sdk隐私协议的标志,如果为true , 需要运营开启

WARNING

注: 这个仅是一个客户端demo标志,代表不同的demo逻辑,和sdk接入无关。设置为ture时,需要同步打开后台sdk隐私权限配置开关。

'' 4. 关注demo中 所有 //TODO 注释。运行sdk 。 除支付外所有功能应当正常
5. 支付demo里是通过本地生成的订单, 游戏可以参考PayTestHelper.java类关注 订单字段以及签名和传入的规则。 ''

# 1.5 常用词汇术语

# Appid

游戏app 在快手游戏的唯一身份标识,例如:ks685673047210945076

# App_secret

快手游戏中台分配给游戏的秘钥,用于加密数据及校验权限

# UserId

游戏用户在快手游戏的唯一身份标识(经加密处理),客户端登录返回的AccountMode里面的SdkUserId

# Token

用户的登录凭证,客户端登录返回的AccountMode里面的sdkToken

# Schema

从快手app或网页中启动游戏app时,需要配置的协议