# 微信小游戏海外服务端接口开发文档

# 前言

当前文档为微信官方小游戏服务端文档的海外版本。

  1. 当前微信小游戏海外处于前期测试阶段,将陆续开放更多服务端接口,当前文档不代表最终形态。
  2. 使用未被文档采纳的服务端接口(即在国内已开放,但海外暂无对应接口),将带来不可预料的后果。如国内确实存在调用此类服务端接口,请评估是否可以避免使用,或将使用的接口和对应用途提交微信小游戏官方开发者。
  3. univapi.wechat.com 为小游戏海外官方专有服务端接口域名,但部分接口如获取接口调用凭据则仍然使用 api.weixin.qq.com 接入。

# 一、国内接口兼容

当前小游戏海外开发工具并未完善,如果开发者希望在微信开发者工具中开发,小游戏后台需要区分请求的来源来调用不同的微信服务端接口:

  1. 来自微信开发者工具则继续使用国内文档提供的服务端接口。
  2. 否则使用本文档提供的服务端接口。 一个可参考的兼容方式: 小游戏前端可以通过 wx.getDeviceInfo().platform === 'devtools' 来判断当前环境是否是微信开发者工具,并在调用游戏服务时据此区分环境,以判断使用国内还是国外的服务端接口。Object wx.getDeviceInfo()

接口兼容示意图

# 二、开放接口

# 1. 接口调用凭证

名称 功能说明
getAccessToken 获取小程序全局唯一后台接口调用凭据(access_token)
getStableAccessToken 获取小程序全局唯一后台稳定版接口调用凭据(access_token)

# 1.1 getAccessToken 获取接口调用凭证

沿用国内,见获取接口调用凭证

# 1.2 getStableAccessToken 获取稳定版接口调用凭证

沿用国内,见获取稳定版接口调用凭证

# 2. 登录

名称 功能说明
checkSessionKey 校验服务器所保存的登录态 session_key 是否合法
code2Session 登录凭证校验
resetUserSessionKey 重置指定的登录态 session_key

# 2.1 checkSessionKey 校验登录态

校验服务器所保存的登录态 session_key 是否合法。为了保持 session_key 私密性,接口不明文传输 session_key,而是通过校验登录态签名完成。

# 请求地址

GET 
https://univapi.wechat.com/wxa/checksession?access_token=ACCESS_TOKEN&signature=SIGNATURE&openid=OPENID&sig_method=SIG_METHOD

# 请求参数

属性 类型 默认值 必填 说明
access_token/cloudbase_access_token string 详见表格下方链接1
openid string 用户唯一标识符
signature string 详见表格下方链接2
sig_method string 用户登录态签名的哈希方法,目前只支持 hmac_sha256

链接1:关于 auth.getAccessToken

链接2:服务端获取开放数据

# 返回值

# Object

返回的JSON 数据包

属性 类型
errcode number
errmsg string
# errcode 的合法值
说明
0 ok请求成功
87009 invalid signature 签名错误

# 调用示例

curl -G 
'https://univapi.wechat.com/wxa/checksession?access_token=OsAoOMw4niuuVbfSxxxxxxxxxxxxxxxxxxx&signature=fefce01bfba4670c85b228e6ca2b493c90971e7c442f54fc448662eb7cd72509&openid=oGZUI0egBJY1zhBYw2KhdUfwVJJE&sig_method=hmac_sha256'

# 返回示例

正确时返回的JSON数据包如下:

{
    "errcode": 0,
    "errmsg": "ok"
}

错误时返回的JSON数据包如下:

{
    "errcode": 87009,
    "errmsg": "invalid_signature"
}

# 2.2 code2Session 登录凭证校验

登录凭证校验。通过wx.login(Object object)接口获得临时登录凭证 code 后传到开发者服务器调用此接口完成登录流程。
更多使用方法详见 小程序登录开放文档

# 请求地址

GET 
https://univapi.wechat.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code

# 请求参数

属性 类型 默认值 必填 说明
appid string 小程序 appid
secret string 小程序 appSecret
js_code string 登录时获取的 code
grant_type string 授权类型,此处只需填写 authorization_code

# 返回值

# Object

返回的JSON 数据包

属性 类型 说明
openid string 用户唯一标识
session_key string 会话密钥
unionid string 用户在开放平台的唯一标识符,若当前小程序已绑定到微信开放平台账号下会返回,详见链接3
errcode number 错误码
errmsg string 错误信息

链接3:UnionID 机制说明

# errcode 的合法值
说明
-1 系统繁忙,请开发者稍后再试
0 ok请求成功
40029 code 无效
45011 频率限制,每个用户每分钟最多发起 100 次请求
40226 高风险等级用户,小程序登录拦截。风险等级详见链接4

链接4:健康运营指引

# 2.3 resetUserSessionKey 重置登录态

# 接口说明

重置指定的登录态 session_key。为了保持 session_key 私密性,接口不明文传入 session_key,而是通过校验登录态签名完成。

# 请求地址

GET 
https://univapi.wechat.com/wxa/resetusersessionkey?access_token=ACCESS_TOKEN 

# 请求参数

属性 类型 默认值 必填 说明
access_token string 接口调用凭证,该参数为 URL 参数,非 Body 参数。详见链接6
openid string 用户唯一标识符
signature string 详见表格下方链接6
sig_method string 用户登录态签名的哈希方法,目前只支持 hmac_sha256

链接6:获取接口调用凭据 或者 获取授权账号调用令牌

链接7:服务端获取开放数据

# 返回值

返回的JSON 数据包

属性 类型 说明
errcode number 错误码
errmsg string 错误信息
openid string 用户唯一标识符
session_key string 重置后的用户登录态

# 其他说明

  1. 重置用户session_key后,原有的session_key会失效。请注意接口调用时机,以免影响用户在小程序中的体验。
  2. 重置后的session_key会继承原有的session_key的过期时间,重置操作不能为session_key续期。
  3. 单个小程序appid请求量频率限制为 60000 次 / 分钟。
  4. 不允许频繁重置同一个用户的登录态

# 调用示例

示例说明: resetUserSessionKey 请求示例

# 请求数据示例
GET 
https://univapi.wechat.com/wxa/resetusersessionkey?access_token=ACCESS_TOKEN&openid=OPENID&signature=SIGNATURE&sig_method=hmac_sha256 
# 返回数据示例
{
    "errcode": 0,
    "errmsg": "ok",
    "openid": "xxxxxxx",
    "session_key": "xxxxxxx"
}

# 错误码

错误码 错误描述
45011 api minute-quota reach limit mustslower retry next minute
87008 invalid sig_method
87007 session_key is not existd or expired
-1 system error
87009 invalid signature
40097 invalid args