Toss 认证
为您说明使用 Toss 认证服务的签约方式。
防火墙设置
请求服务器的 出站(Outbound) 请在设置中允许以下 Toss 认证 IP。所有通信均通过 443 端口(HTTPS) 。
Toss 认证服务器的 入站(Inbound) 开放且无限制,因此无需额外设置即可直接通信。
1. 获取 AccessToken
用于 Toss 身份验证的 Access Token会发放。发放后的令牌将用于之后所有 API 调用的 Authorization Header。
令牌包含 过期时间(expires_in) 。到期时需要重新发放新令牌, 如果已有有效令牌,请避免重复发放, 减少不必要的调用。
Base URL:
https://oauth2.cert.toss.imEndpoint:
/tokenMethod:
POSTContent-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.imEndpoint :
/api/v2/sign/user/auth/requestMethod :
POSTContent-type :
application/json
2-1. 基于个人信息的认证
客户的 姓名·出生日期·电话号码 将 加密后传输的方式。为确保安全, 会话密钥(sessionKey)请在每次请求时重新生成。
请求头
Authorization
string
Y
Bearer {Access Token}
Content-Type
string
Y
application/json
请求参数
请求示例
响应示例
成功响应
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
错误标题(如有)
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
错误标题(如有)
3. 调用认证界面
将从身份验证请求 API 响应中获得的 txId包含 appsInTossSignTossCert后调用,即可启动 Toss App 认证界面。
响应
onSuccess无参数
onErrorError { code: string; message: string }(例如:用户取消、未安装应用、Schema 失败等)
4. 查询身份验证状态
用户当前认证 进行状态进行查询。 txId使用其可确认当前认证阶段(REQUESTED, IN_PROGRESS, COMPLETED, EXPIRED)可确认。
BaseURL :
https://cert.toss.imEndpoint :
/api/v2/sign/user/auth/id/statusMethod :
POSTContent-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. 查询身份验证结果
已完成认证的用户的 结果信息进行查询。查询必须 通过服务器-服务器通信进行。请将身份验证结果中收集到的信息安全地存储在服务器上,并在之后进行电子签名/便捷认证时与该信息进行比较和验证。
BaseURL :
https://cert.toss.imEndpoint :
/api/v2/sign/user/auth/id/resultMethod :
POSTContent-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
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, client_secret 全部 test_ 开头。可通过这个前缀轻松与生产环境信息区分。
Access Token 有效期 — 为了方便联动 1年(31536000秒) 会应用有效期。在生产环境中,可能会根据商家申请的网络方式而有所不同。
提供虚拟个人信息 — 不提供已注册 Toss 用户的加密个人信息,而是 Toss 生成的虚拟人物的固定个人信息会被传递。这是为了保护真实用户信息的措施;如果需要准确的用户信息, 从 Toss 获得的使用机构专属密钥来与生产环境联动。
会话密钥生成
为了安全起见,会话密钥(sessionKey)请在每次请求时重新生成。
更详细的示例请 这里查看。
个人信息加解密
Toss 认证 API 在部分请求中可能包含客户的个人信息。为确保安全,客户公司的服务器与 Toss 服务器只交换加密数据。如需明文,请解密数据后确认。
在认证请求中传递客户姓名、出生日期、手机号码时进行加密
当电子签名服务原文包含客户个人信息时,对原文进行加密
当认证结果中由 Toss 服务器提供包含 CI·DI 等的个人信息时进行加密
会话密钥生成及加密示例
默认建议使用 SDK,但也提供多种语言的代码示例。更详细的示例请 这里查看。
最后更新于
这有帮助吗?