接口描述#
我们提供了OAuth的授权登录方式,可以让API对接免去登录的环节。所有API均可通过OAuth2.0认证鉴权来获取完整的访问凭证(access_token)。OAuth2的设计背景,在于允许ISV通过授权方式,自动获取当前用户身份,进而调用此用户身份所有API资源。此接口针对合作接入方,以REST风格的HTTP服务接口方式,或模块界面集成方式,提供发票、税务相关能力服务;
客户系统可以根据自己系统的情况,选择不同的实现语言来实现对接。本文档以java为主要示例语言;
access_token默认有效时间是15天,建议在过期之前一段时间重新调用login接口使用refresh_token刷新token,token过期则调用login接口重新获取新的access_token;
获取到的access_token需要存储到本地缓存中再使用,不可频繁请求;建议至少每7天更新一次,频繁请求login接口将会被限制;
获取access_token#
根据获取到的AppKey和AppSecret,通过调用OAuth系列接口来获取access_token。POST /v2/public/oauth2/login HTTP/1.1
Content-Type : application/json;charset=UTF-8
Request Body 为 JSON 格式,说明如下。| 参数名称 | 参数类型 | 说明 |
|---|
| grant_type | String | 固定client_credentials |
| client_appkey | Long | 第一步获取的AppKey |
| client_secret | String | 第一步获取的appsecret的md5值(应为32位小写) |
{
"grant_type":"client_credentials",
"client_appkey":"xxxxxx",
"client_secret":"xxxxxxxxxxxxxxxxxxxx"
}
返回的结果为JSON格式,遵循公共报文格式,示例如下:{
"reqId": "0550e35a24014277ab056cf7246eb7db",
"code": "2000",
"success": true,
"message": null,
"data": {
"access_token": "eyJhbGciOiJIUzUxMiJ9.eyJzdWIiOiJbLTEsLTEsLTEsMTAwLFwiXCIsMTAwMDIyODksbnVsbCxcIlwiLC0xLG51bGxdIiwiZXhwIjoxNjk2NTcwMzMxLCJpYXQiOjE2OTUyNzQzMzF9.8W4VCifcKbU7SG-7HzGn8I0wspGb96f6-chqVbYDDx-lG9pTaFlbGuHNRWZc7k6Hf-Ya7HtAzdqa8FgLVdht4g"
}
}
业务编码列表#
| 业务编码 | 说明 |
|---|
| 40100 | 未登录 |
| 40101 | AppKey登录信息过期! |
| 40102 | 服务器版本已更新,请重新登录! |
| 40500 | 该客户端sdk已经不被支持,请更新版本! |
| 505017 | app级接口访问,请按照接口规范做签名验证! |
| 505018 | req_date字段与服务器时间存在过大时差! |
| 505019 | 验证签名失败! |
| 505069 | 当前产品已超使用期,请联系服务提供商! |
| 505070 | 当前产品已超使用次数,请联系服务提供商! |