开发者在创建应用前,需要先选择应用类型。诺诺开放平台支持如下两种应用类型,企业可根据业务需求选择:
接入诺诺开放平台业务能力,为自己公司开发应用。自助接入建议使用自用型应用。
企业成功登录并认证通过后,可转至应用管理页面创建自用型应用。
注:应用标签可根据所需调用的 API 进行选择,一个应用标签最多可创建三个应用;应用创建成功后,应用标签和应用类型不支持变更。
应用创建成功后,即可在"应用概况"页面获得一个 appKey 和一个 appSecret。
注:appKey 是每个应用的唯一身份,appSecret 是应用里面用于保障数据安全的"钥匙",每一个应用都有一个独立的访问密钥,为了保证数据的安全,appKey、appSecret 务必不能泄漏。
access_token 是开发者调用开放平台接口的调用凭据,也叫做令牌(access_token)。开发者通过应用参数向诺诺开放平台调用令牌接口地址获取 access_token。令牌有效期默认 24h(也可在创建应用时设置 token 永不过期),且令牌 30 天内的调用上限为 50 次,请开发者做好令牌的管理。
https://open.nuonuo.com/accessToken
POST,请求头中 Content-Type 需配置为 application/x-www-form-urlencoded;charset=UTF-8
| 参数 | 是否必须 | 说明 |
|---|---|---|
| client_id | yes | 填写应用的 appKey |
| client_secret | yes | 填写应用的 appSecret |
| grant_type | yes | 授权类型,此值固定为 "client_credentials" |
注:此接口不允许频繁调用,请妥善保存 access_token。
| 参数 | 类型 | 说明 |
|---|---|---|
| access_token | String | 接口请求唯一身份令牌 |
| expires_in | String | access_token 的过期时长,24 小时(单位秒) |
注:自用型应用无令牌刷新机制。令牌(access_token)有效期为 24 小时,即将到期时(比如 23 小时)开发者需重新调用授权接口获取一个新的 access_token,截止时间重新计算。若创建应用时设置 token 为永久有效则无需刷新。
{"access_token": "54871544ED15874564115","expires_in": "86400"}
{"error":"070307","error_description":"Incorrect appType"}
| 异常编码 | 异常 | 描述 |
|---|---|---|
| 070304 | Incorrect clientId[xxxx] | 请求参数 clientId 不正确 |
| 070305 | Incorrect clientSecret[xxxx] | 请求参数 clientSecret 不正确 |
| 070306 | The number of calls is limited | 超过调用次数上限(30 天内限制请求 50 次) |
| 070307 | Incorrect appType[xxxx] | 应用类型错误,请走对应的授权流程 |
| 070315 | Incorrect content-type | 请设置正确的 content-type,如 application/x-www-form-urlencoded;charset=UTF-8 |
第三方接入(帮助其他企业开发)建议使用第三方应用。系统服务商可创建第三方应用,开发应用服务于商户,可代商户发起调用。进行第三方调用前,需在应用中添加对应功能并获得商户授权。
企业成功登录并认证通过后,可转至应用管理页面创建第三方应用。
a. 应用标签可根据所需调用的 API 进行选择,一个应用标签可创建三个应用(自用+第三方合计);应用创建成功后,应用标签和应用类型不支持变更;
b. 商户添加模式选择:约定式(旗下商户需在"商户管理"页面手动添加成功后,方可被授权)、开放式(旗下商户除手动添加外,同时支持企业用户在应用授权页面自动添加为商户)。
应用资料(应用说明)填写完成并创建成功后,平台将在 1-2 个工作日内完成应用审核,审核通过后即可在"应用概况"页面获得一个 appKey 和一个 appSecret。
注:appKey 是每个应用的唯一身份,appSecret 是应用里面用于保障数据安全的"钥匙",每一个应用都有一个独立的访问密钥,为了保证数据的安全,appKey、appSecret 务必不能泄漏。
第三方应用还需添加该服务商所服务的企业用户(诺诺网用户),添加完成后企业才能获取对接资质。
a. "约定式"商户添加流程
进入"商户管理"页面——点击"添加商户"——填写商户信息——完成商户 API 配额(选填)——完成商户授权
b. "开放式"商户添加流程
进入"授权登录"页面——输入商户税号及密码(诺诺网账号)——点击"登录并授权"——进入"商户管理"页面完成商户 API 配额(选填)——完成商户授权
c. 批量导入商户流程
进入"商户管理"页面——点击"批量导入商户"——导入商户信息——单户完成商户 API 配额(选填)——单户完成商户授权
商户添加界面,服务商可对当前商户开启/关闭 API 配额,开启后服务商可配置该商户对相应 API 的调用权限、调用次数、调用时限。
点击操作栏"流控"后,相应 API 的日流量、使用期限可配置。
日流量配置说明:
1、当日流量为空时,该商户将与其他商户共享服务商此 API 每日最大调用次数;
2、当日流量非空时,平台将按服务商为此商户的配额控制其每日调用该 API 的次数,此配额次数不可高于服务商证书流量标签值。
使用期限配置说明:
服务商可设置此商户对该 API 的调用时间段,在相应时间段内可以调用该 API。
第三方开发者帮助商户处理业务时,需要将商户访问的界面定向到诺诺开放平台 Oauth2.0 授权页面。
授权页面拼接 url 示例:
https://open.nuonuo.com/authorize?appKey=xxxxxxxx&response_type=code&redirect_uri=https://xxx.com&state=xxxxxx
| 参数 | 是否必须 | 说明 |
|---|---|---|
| appKey | yes | 创建应用后,分配给应用的 appKey |
| response_type | yes | 授权类型,此值固定为 "code" |
| redirect_uri | yes | 授权回调地址,在用户授权后应用会跳转至 redirect_uri;授权链接中配置的 redirect_uri 内容需要与应用中配置的授权回调地址完全一样;请使用 urlEncode 对链接进行处理 |
| state | no | 自定义参数,可传任意值,认证服务器会原样返回,主要用于抵制 CSRF(跨站请求伪造)攻击 |
a. 商户使用开发者提供的应用授权链接在 PC 端进行应用授权
b. 商户使用开发者提供的应用授权链接在手机端进行应用授权
商户选择授权后,pc 或者手机端会跳转至开发者定义的回调页面(即 redirect_uri 参数对应的 url 地址)。正确授权之后浏览器端会接收到平台授权服务器通过 URL 方式传递的临时授权码(code)参数和授权商户税号(taxnum)。
类似:http://tgyhu.com.cn1/?code=33c4fd9b790bc00ac07eff3819c90684&taxnum=xxxxxxxxxxxx
注:
1)商户 A 授权登录成功后,浏览器接收到 code1,有效期为 10 分钟;
2)若 10 分钟内商户 A 再次授权登录,则浏览器仍接收到 code1;
3)若 10 分钟内已使用 code1 换取过 access_token1,再次使用 code1 请求获取 token,则 code1 和 access_token1 立即失效;此时需要商户 A 再次授权登录,在成功接收到 code2 后换取 access_token2。
开发者通过 code 可以换取 access_token、授权商户的 userId。(调用方法参见 SDK 中心)请求头中 Content-Type 需配置为 application/x-www-form-urlencoded;charset=UTF-8
https://open.nuonuo.com/accessToken
POST,请求头中 Content-Type 需配置为 application/x-www-form-urlencoded;charset=UTF-8
| 参数 | 是否必须 | 说明 |
|---|---|---|
| code | yes | 临时授权码,请求 authorize 时返回的 code |
| client_id | yes | 创建应用后,分配给应用的 appKey |
| client_secret | yes | 创建应用后,分配给应用的 appSecret |
| grant_type | yes | 授权类型,在本步骤中,此值为 "authorization_code" |
| redirect_uri | yes | 回调地址,此处配置的 redirect_uri 内容需要与应用中配置的授权回调地址完全一样 |
| taxNum | yes | 授权企业的税号,获取临时授权码返回的 taxnum |
开发者得到 code 之后,需要尽快调用 access_token 接口地址获取 access_token。access_token 是开发者调用开放平台接口的调用凭据,也叫做令牌(access_token)。令牌有效期默认 24h(也可在创建应用时设置 token 永不过期),且令牌的调用不是无限制的,请开发者做好令牌的管理,在令牌快过期时(比如 23 小时)刷新。具体参见诺诺开放平台 API。
| 参数 | 类型 | 说明 |
|---|---|---|
| access_token | String | 访问令牌 |
| expires_in | String | access_token 的过期时长,24 小时(单位秒) |
| refresh_token | String | 刷新令牌 |
| userId | String | 授权者的用户 ID(如果需要刷新令牌开发者应妥善保存) |
| oauthUser | String | 授权商户相应信息 |
{"access_token": "54871544ED15874564115","expires_in": "86400","refresh_token": "652544ED15874564115","userId": "2013111800001989"}
授权商户信息默认返回登录税号和注册类型:
{"oauthUser":"{\"userName\":\"taxnum17100010001\",\"registerType\":\"1\"}"}
{"error":"070309","error_description":"Missing appKey parameter"}
refresh_token 提供给开发者一种延长 access_token 有效期的机制,提升开发者提供给商户应用的使用流畅性。
开发者使用 code 获取 access_token 时会返回一个 refresh_token,可通过 refresh_token(同获取 access_token 一样的方式)调用 https://open.nuonuo.com/accessToken,刷新 access_token 有效时长。调用方法参见 SDK 中心。
需要注意,若您设置 token 的有效时间为永久有效,则不支持通过 refresh_token 获取 access_token。
https://open.nuonuo.com/accessToken
POST,请求头中 Content-Type 需配置为 application/x-www-form-urlencoded;charset=UTF-8
| 参数 | 是否必须 | 说明 |
|---|---|---|
| refresh_token | yes | 刷新令牌 |
| client_id | yes | 获取 access_token 时授权商户的 userId |
| client_secret | yes | 创建应用后,分配给应用的 appSecret |
| grant_type | yes | 授权类型,此值固定为 "refresh_token" |
| 参数 | 类型 | 说明 |
|---|---|---|
| access_token | String | 访问令牌 |
| refresh_token | String | 刷新令牌 |
| expires_in | String | access_token 的过期时长,24 小时(单位秒) |
{"access_token":"c8fd31c799a67cf67bd5931mpkbtcisi","refresh_token":"6b66e0c140ff92a32955457d822694a3","expires_in":86400}
{"error_description":"Incorrect parameter or RefreshToken out of date[6c79d5d470258b7797df8a840cfe4194]","error":"070308"}
说明:请核对参数是否正确以及 refresh_token 是否失效(当重新授权或者刷新 access_token 后,原 refresh_token 会失效)。
平台认证通过的商户可进入个人中心-授权管理页面完成解除授权操作,解除授权后相应 ISV/开发者将无法帮助商户处理相应业务,请商户谨慎操作。
| 异常编码 | 异常 | 描述 |
|---|---|---|
| 070304 | Incorrect clientId[xxxx] | 请求参数 clientId 不正确 |
| 070307 | Incorrect appType[xxxx] | 应用类型错误,请走对应的授权流程 |
| 070308 | Incorrect parameter or RefreshToken out of date | 参数不正确或 refreshToken 已过期 |
| 070309 | Missing appKey parameter | 请求参数 appKey 缺失 |
| 070310 | Incorrect appKey[xxxx] | 请求参数 appKey 不正确 |
| 070311 | Incorrect authorization code[xxxx] | 请求参数 code 不正确 |
| 070312 | Missing taxNum parameter | 请求参数 taxNum 缺失 |
| 070313 | Incorrect parameter or Authorization out of date | 参数不正确或 authorization 已过期 |
| 070314 | Incorrect refreshToken[xxxx] | 请求参数 refreshToken 不正确 |
| 070315 | Incorrect content-type | 请设置正确的 content-type,如 application/x-www-form-urlencoded;charset=UTF-8 |
| 070316 | Incorrect redirect_uri | 请求参数 redirect_uri 不正确 |
| 070317 | The code is used a second time, please authorization again | code 二次使用,请重新授权 |
| 070318 | Access token is not updatable | 固定 token 不支持刷新 |
请留下您的联系方式,我们将在一个工作日内与您联系