For the complete documentation index, see llms.txt. This page is also available as Markdown.

Toss 认证

签约 Toss 认证 >

为您说明使用 Toss 认证服务的签约方式。

请确认最低版本

  • SDK : 1.2.1 以上

  • Toss App(身份验证) : 5.233.0 以上

  • Toss App(一次认证) : 5.236.0 以上

请使用 getTossAppVersion 函数检查 Toss App 版本。

防火墙设置

请求服务器的 出站(Outbound) 请在设置中允许以下 Toss 认证 IP。所有通信均通过 443 端口(HTTPS)

Toss 认证服务器的 入站(Inbound) 开放且无限制,因此无需额外设置即可直接通信。

身份验证 IP

  • 117.52.3.222

  • 117.52.3.235

  • 211.115.96.222

  • 211.115.96.235

1. 获取 AccessToken

用于 Toss 身份验证的 Access Token会发放。发放后的令牌将用于之后所有 API 调用的 Authorization Header。

令牌包含 过期时间(expires_in) 。到期时需要重新发放新令牌, 如果已有有效令牌,请避免重复发放, 减少不必要的调用。

  • Base URL: https://oauth2.cert.toss.im

  • Endpoint: /token

  • Method: POST

  • Content-Type: application/x-www-form-urlencoded

请求头

名称
类型
是否必填
说明

Content-Type

string

Y

application/x-www-form-urlencoded

请求参数

名称
类型
是否必填
说明

grant_type

string

Y

固定值: client_credentials

scope

string

Y

认证请求范围(例如: ca)

client_id

string

Y

发放给客户公司的客户端 ID

client_secret

string

Y

发放给客户公司的客户端 Secret

响应

名称
类型
说明

access_token

string

Access Token 值

scope

string

已发放的认证范围

token_type

string

令牌类型(始终 Bearer)

expires_in

number

令牌过期时间(秒)

2. 发起认证请求

在 Toss 认证服务器上 txId后发放并开始身份验证流程。

  • BaseURL : https://cert.toss.im

  • Endpoint : /api/v2/sign/user/auth/request

  • Method : POST

  • Content-type : application/json

2-1. 基于个人信息的认证

客户的 姓名·出生日期·电话号码加密后传输的方式。为确保安全, 会话密钥(sessionKey)请在每次请求时重新生成。

请求头

名称
类型
是否必填
说明

Authorization

string

Y

Bearer {Access Token}

Content-Type

string

Y

application/json

请求参数

名称
类型
是否必填
说明

requestUrl

string

Y

使用 Toss 身份验证时返回的客户公司 App Scheme

requestType

string

Y

USER_PERSONAL

triggerType

string

Y

APP_SCHEME

userName

string

Y

加密 必填

userPhone

string

Y

仅限数字, 加密 必填

userBirthday

string

Y

YYYYMMDD, 加密 必填

sessionKey

string

Y

用于 AES 加解密,每次请求都需要新生成 (生成方法)

请求示例

响应示例

成功响应

名称
类型
说明

resultType

string

请求结果。成功时 SUCCESS,失败: FAIL)

success.txId

string

可作为认证请求事务 ID 唯一标识交易的值。由于是能够唯一标识特定交易的值,因此必须保存并管理。

success.requestedDt

string

首次请求时间(YYYY-MM-DDThh:mm:ss±hh:mm)

success.appScheme

string

可打开 Toss 认证界面的 App Scheme 信息

success.androidAppUri

string

作为 Android 认证 App Scheme 值,作用与 appScheme 相同,但由于使用 Chrome Intent,能够在无需客户公司额外功能实现的情况下判断是否安装了 Toss App,这是一大优点。

success.iosAppUri

string

作为 iOS 认证 App Scheme 值,作用与 appScheme 相同,但由于使用 Universal Link,因此与 Android 一样,能够在无需客户公司额外功能实现的情况下判断是否安装了 Toss App,这是一大优点。

失败响应

名称
类型
说明

resultType

string

失败时 FAIL

error.errorType

number

错误类型

error.errorCode

string

错误代码(例如: CE1000)

error.reason

string

错误消息

error.data

object

附加数据(如有)

error.title

string | null

错误标题(如有)

下一步

响应中的 txId使用 appsInTossSignTossCert 该函数后,将启动 Toss App 认证界面。 调用认证界面请参考。

2-2. 一次认证

在客户端 无需输入个人信息 调用 Toss App 一次完成认证

请求头

名称
类型
必填
说明

Authorization

string

Y

Bearer {Access Token}

Content-Type

string

Y

application/json

请求参数

名称
类型
必填
说明

requestType

string

Y

"USER_NONE"

requestUrl

string

Y

认证完成后返回的 App Scheme

请求示例

响应示例

成功响应

名称
类型
说明

resultType

string

请求结果。成功时 SUCCESS,失败: FAIL)

success.txId

string

可作为认证请求事务 ID 唯一标识交易的值。由于是能够唯一标识特定交易的值,因此必须保存并管理。

success.requestedDt

string

首次请求时间(YYYY-MM-DDThh:mm:ss±hh:mm)

失败响应

名称
类型
说明

resultType

string

失败时 FAIL

error.errorType

number

错误类型

error.errorCode

string

错误代码(例如: CE1000)

error.reason

string

错误消息

error.data

object

附加数据(如有)

error.title

string | null

错误标题(如有)

下一步

响应中的 txId使用 appsInTossSignTossCert 该函数后,将启动 Toss App 认证界面。 调用认证界面请参考。

3. 调用认证界面

将从身份验证请求 API 响应中获得的 txId包含 appsInTossSignTossCert后调用,即可启动 Toss App 认证界面。

一次认证及应用版本说明

一次认证方式(USER_NONE) 在使用时, skipConfirmDoctrue设置为该值后,可跳过认证书确认文档步骤。

  • Toss 认证(requestType: USER_PERSONAL):Toss App 5.233.0 以上

  • Toss 一次认证(requestType: USER_NONE):Toss App 5.236.0 以上

请使用 getTossAppVersion 函数检查 Toss App 版本。

响应

  • onSuccess

    • 无参数

  • onError

    • Error { code: string; message: string } (例如:用户取消、未安装应用、Schema 失败等)

4. 查询身份验证状态

用户当前认证 进行状态进行查询。 txId使用其可确认当前认证阶段(REQUESTED, IN_PROGRESS, COMPLETED, EXPIRED)可确认。

请注意

状态查询 API 是 用于确认进行状态。最终认证是否成功需通过 结果查询 API来判断。

  • BaseURL : https://cert.toss.im

  • Endpoint : /api/v2/sign/user/auth/id/status

  • Method : POST

  • Content-type : application/json

请求头

名称
类型
是否必填
说明

Authorization

string

Y

Bearer {Access Token}

Content-Type

string

Y

application/json

请求参数

名称
类型
是否必填
说明

txId

string

Y

需要确认状态的认证请求事务 ID

请求示例

成功响应

名称
类型
说明

resultType

string

请求结果。成功时 SUCCESS

success.txId

string

查询到的认证事务 ID

success.status

string

认证进行状态(参考下方“status 值”表)

success.requestedDt

string

首次认证请求时间(YYYY-MM-DDThh:mm:ss±hh:mm,ISO 8601)

失败响应

名称
类型
说明

resultType

string

失败时 FAIL

error.errorType

number

错误类型

error.errorCode

string

错误代码(例如: CE3100)

error.reason

string

错误消息

error.data

object

附加数据(如有)

error.title

string | null

错误标题(如有)

status 值

说明

REQUESTED

在 Toss 认证服务器向用户的 Toss App 发起认证请求的状态

IN_PROGRESS

用户正在进行认证的状态

COMPLETED

客户已完成认证的状态 (最终确认需通过结果查询 API 判断)

EXPIRED

因有效期已过,无法继续认证的状态

5. 查询身份验证结果

已完成认证的用户的 结果信息进行查询。查询必须 通过服务器-服务器通信进行。请将身份验证结果中收集到的信息安全地存储在服务器上,并在之后进行电子签名/便捷认证时与该信息进行比较和验证。

请注意

结果查询 API 以成功为准 最多 2 次只能查询到此为止。用户认证完成后 60分钟(1小时)内 需要结束结果查询。超过60分钟后,结果查询将受限,并且需要从认证请求 API 重新开始。

  • BaseURL : https://cert.toss.im

  • Endpoint : /api/v2/sign/user/auth/id/result

  • Method : POST

  • Content-type : application/json

请求头

名称
类型
是否必填
说明

Authorization

string

Y

Bearer {Access Token}

Content-Type

string

Y

application/json

请求参数

名称
类型
是否必填
说明

txId

string

Y

需要确认结果的认证请求事务 ID

sessionKey

string

Y

在结果查询中,不论认证方式 txId需一并必传。作为请求/响应 AES 加解密用的会话密钥,每次请求都要重新生成,认证请求中使用的会话密钥禁止复用 (生成方法)

请求示例

成功响应

名称
类型
说明

resultType

string

成功时 SUCCESS

success.txId

string

已查询结果的认证事务 ID

success.status

string

COMPLETED (结果查询已正常处理的状态)

success.userIdentifier

string | null

当前版本未使用 (null)

success.userCiToken

string | null

当前版本未使用 (null)

success.signature

string

用户签名的电子签名值(Base64 编码的 DER). 需与 txId 一并保存管理

success.randomValue

string | null

当前版本未使用 (null)

success.completedDt

string

用户认证完成时间(YYYY-MM-DDThh:mm:ss±hh:mm,ISO 8601)

success.requestedDt

string

首次认证请求时间(YYYY-MM-DDThh:mm:ss±hh:mm,ISO 8601)

success.personalData

object

用于认证的 个人信息(加密值). 请参考下级字段表

personalData(执行认证的用户个人信息)对象

名称
类型
说明

ci

string

加密后的用户 CI

name

string

加密后的用户姓名

birthday

string

加密后的8位出生日期

gender

string

加密后的性别信息(MALE | FEMALE)

nationality

string

加密后的国籍(LOCAL | FOREIGNER)

ci2

string | null

用于应对不可预测情况下 CI 泄露的临时参数, null 固定

di

string

加密后的用户 DI

ciUpdate

string | null

用于应对不可预测情况下 CI 泄露的临时参数, null 固定

ageGroup

string

加密后的是否成人(ADULT | MINOR)

失败响应

名称
类型
说明

resultType

string

失败时 FAIL

error.errorType

number

错误类型

error.errorCode

string

错误代码(例如: CE3102)

error.reason

string

错误消息

error.data

object

附加数据(如有)

error.title

string | null

错误标题(如有)


测试

即使合同尚未完成 Toss认证测试环境中可以尝试进行认证联动。请先完成联动后再进行测试。测试时请使用 在应用商店安装的最新版本 Toss 应用进行使用。 身份验证一键认证 两种方式都可以测试。

测试环境凭证

  • client_id : test_a8e23336d673ca70922b485fe806eb2d

  • client_secret : test_418087247d66da09fda1964dc4734e453c7cf66a7a9e3

与生产环境的差异

认证使用费免费 — 即使认证成功完成,也不会收费。

测试环境凭证client_id, client_secret 全部 test_ 开头。可通过这个前缀轻松与生产环境信息区分。

Access Token 有效期 — 为了方便联动 1年(31536000秒) 会应用有效期。在生产环境中,可能会根据商家申请的网络方式而有所不同。

提供虚拟个人信息 — 不提供已注册 Toss 用户的加密个人信息,而是 Toss 生成的虚拟人物的固定个人信息会被传递。这是为了保护真实用户信息的措施;如果需要准确的用户信息, 从 Toss 获得的使用机构专属密钥来与生产环境联动。

测试环境中提供的虚拟个人信息示例

  • CI : CI0110000000001 ...

  • DI : DI0110000000001 ...

  • 姓名:金Toss

  • 出生日期:19930324

  • 性别:FEMALE

  • 本国/外国人:LOCAL


会话密钥生成

为了安全起见,会话密钥(sessionKey)请在每次请求时重新生成。

更详细的示例请 这里查看。


个人信息加解密

Toss 认证 API 在部分请求中可能包含客户的个人信息。为确保安全,客户公司的服务器与 Toss 服务器只交换加密数据。如需明文,请解密数据后确认。

  • 在认证请求中传递客户姓名、出生日期、手机号码时进行加密

  • 当电子签名服务原文包含客户个人信息时,对原文进行加密

  • 当认证结果中由 Toss 服务器提供包含 CI·DI 等的个人信息时进行加密

一键身份认证

由于客户公司服务器不会将客户信息传递给 Toss认证服务器,因此不需要加密过程。不过,在用户认证完成后调用结果查询 API 时,需要携带会话密钥发起请求。

会话密钥生成及加密示例

请参考

在 Toss 测试环境中,提供的不是实际用户的个人信息,而是 Toss 生成的虚拟人物的固定个人信息。

生成会话密钥时使用的 Public key

默认建议使用 SDK,但也提供多种语言的代码示例。更详细的示例请 这里查看。

最后更新于

这有帮助吗?