农行快e通是对合作方应用输出农行用户体系,并提供标准的OAuth2.0授权模式的接口。快e通支持移动渠道,包括手机APP、微信浏览器、手机浏览器和PC浏览器(chrome只支持扫码登录)。
1.登录开放银行门户网站,获取合作方资质,创建应用。
2.应用申请用户认证产品接口,配置测试/生产信息,获取应用开发相关信息。
3.应用对接快e通本地开发:
1)获取应用appid、secret、证书;
2)放置农行登录按钮,发起授权登录请求;
3)用户登录验证和授权,获取AccessToken;
4)调用开放银行网关,通过AccessToken获取用户的个人信息;
4.使用配置的测试信息,进行上线前测试,并编写测试报告文档。
5.提交上线申请,审批通过后,应用成功上线。
1.在开放银行门户网站申请用户认证产品接口,包含用户信息接口、用户卡列表接口,请根据实际需求申请。
2.农行会给应用分配权限scope,应用只可以获取已申请的scope对应的用户资料。scope目前有openid,phone,name,certnum,custinfo,cardlist,mreginfo,reglvl,nickname,gender,address,deliveryAddr,email,profession,nationality,head等权限。申请用户信息接口(userinfo)接口时默认分配openid权限,申请用户卡列表接口(cardlist)接口默认分配cardlist权限,其他权限需要和农行业务人员沟通获取;
3.提交应用上线申请时,需要提供生产环境的快e通回调地址,如下图;
4.应用名称:应用名称将会在后续登录、授权页面反显,请务必在申请时确认应用名称。
1.对接方页面放置农行登录按钮,链接到农行登录地址;
2.用户输入用户名、密码和手机验证码登录;
注:登录方式是发送获取AccessToken第一步的地址,需要将获取授权码的参数填全,这样服务器会根据appid的类型决定是否生成授权页面,以及授权页面的内容。
3.返回授权页面给用户,用户勾选授权内容。
获取AccessToken为server-side模式,又称Web Server Flow;适用于如Web网站这种需要从web server访问的应用
授权验证的流程示意图如下
对于合作方网站/应用而言,需要进行两步:
1.获取Authorization Code
2.通过Authorization Code获取Access Token
1.接口描述:请求方法:GET。返回说明:如果用户成功登录并授权,则会跳转到指定回调地址,并在redirect_uri地址后带上AuthorizationCode和state值。示例:http://redirect_url?code=9A5F********************06AF&state=test
注意:AuthorizationCode会在3分钟内过期。
注意:每次请求发送的state请用随机唯一值。检查收到的state同请求的state是否一致,如不一致,有CSRF攻击风险。
如果用户不同意授权,则会跳回指定回调地址,并在redirect_uri地址后带上error值和state值。示例:http://redirect_url?error=User Reject Authorize&state=8q4nh4TBBw_aiez50Ix_Zw
错误码说明:接口调用有错误时,会返回错误页面。
2.请求入口:https://openbank.abchina.com/OAuthServer/OAuth/Authorize
3.请求参数:
参数 | 是否必输项 | 备注 |
---|---|---|
client_id | 是 | 分配给应用的appid |
redirect_uri | 是 | 成功授权后的回调地址,必须是注册appid时填写的主域名下的地址,建议设置为网站首页或者用户中心。 |
state | 是 | Client端的状态值一般用一个随机字符串。用于第三方应用防止CSRF攻击,成功授权后回调时会原样带回。请务必严格按照流程检查用户与state参数状态的绑定。 |
scope | 是 | 请求用户授权时向用户显示的可进行授权的列表。可填写的值是用户可以授权的最小单位,一个scope对应一个接口的访问权限,多个scope用逗号隔开。 |
response_type | 是 | 授权类型,此值固定为“code”。 |
1.接口描述:请求方法:POST。返回说明:
如果成功返回,即可在返回包中获取到AccessToken
返回的例子:
access_token: AA******Pd5_u0ENeSjk5NBe7f87HcVb0SN_W9Z7GQ
token_type: bearer
expires_in: 120
refresh_token: 3NEo!IAAAA******HZO6d3o
scope: high_mobile_name_certtype_certnum
expires_in是Access_token过期的时间,单位分钟。Scope是用户同意授权的信息。
注意:一个code只能换取一次AccessToken;code需要在获取3分钟内换 取AccessToken,否则就会失效。
2.请求入口:https://openbank.abchina.com/OAuthServer/OAuth/Token
3.请求参数:
参数 | 是否必输项 | 备注 |
---|---|---|
grant_type | 是 | 授权类型,此值固定为“authorization_code” |
client_id | 是 | 分配给应用的appid |
client_secret | 是 | 分配给网站的appkey |
code | 是 | 上一步返回的authorizationcode |
redirect_uri | 是 | 与上一步中传入的redirect_uri保持一致 |
1.接口描述:请求方法:POST。AccessToken的有效默认期是120分钟,过期后需要用户重新授权才能获得新的AccessToken,本步骤可以实现自动续期,避免要求用户再次授权的操作,提升用户体验。如果成功返回,即可在返回包中获取到AccessToken
返回示例:
access_token: AA******Pd5_u0ENeSjk5NBe7f87HcVb0SN_W9ZMO
token_type: bearer
expires_in: 120
refresh_token: 3NEo!IAAAA******HZO6d3o
scope: openid
expires_in是Access_token过期的时间,单位分钟。Scope是用户同意授权的信息。
2.请求入口:https://openbank.abchina.com/OAuthServer/OAuth/Token
3.请求参数:
参数 | 是否必输项 | 备注 |
---|---|---|
grant_type | 是 | 授权类型,此值固定为“refresh_token” |
client_id | 是 | 分配给应用的appid |
client_secret | 是 | 分配给网站的appkey |
refresh_token | 是 | 上一步返回的refresh_token. |
第三方应用通过授权服务器授权后,得到AccessToken后通过开放银行网关进行访问相关接口获取信息,在AccessToken有效的时间内,可以访问AccessToken中Scope范围内的接口。
第三方在获得新的AccessToken时,需要记录AccessToken过期时间为多少秒,在AccessToken过期后,如果需要访问资源,就要用RefreshToken去授权服务器更新AccessToken。
访问资源服务器的接口使用方法,在访问特定的接口时需要在Header头部加入Authorization,值为”Bearer accessToken” 。
获得用户的授权后,根据用户的授权scopes可以访问对应的用户信息,Scope和接口的对应表如下:访问userinfo时,只需访问一次,资源服务器会根据用户的授权返回对应的用户信息。
scope | 接口 | 含义 |
---|---|---|
openid | userinfo | 用户的openid信息 |
phone | userinfo | 用户的手机号数据 |
name | userinfo | 用户的姓名数据 |
certnum | userinfo | 用户的证件数据 |
custinfo | userinfo | 用户客户号和用户类型数据 |
mreginfo | userinfo | 用户的掌银注册信息 |
reglvl | userinfo | 用户的类型 |
nickname | userinfo | 用户的昵称 |
gender | userinfo | 用户的性别 |
address | userinfo | 用户的联系地址 |
deliveryAddr | userinfo | 用户的收货地址 |
userinfo | 用户的邮箱 | |
profession | userinfo | 用户的职业 |
nationality | userinfo | 用户的国籍 |
head | userinfo | 用户的头像 |
userlvl | userinfo | 用户层级数据 |
cardlist | cardlist | 用户的银行卡列表数据 |
API名称 | 请求入口 |
---|---|
用户信息接口 | https://openbank.abchina.com/GateWay/openabc/api/ket/userinfo/v1 |
用户卡列表接口 | https://openbank.abchina.com/GateWay/openabc/api/ket/cardlist/v1 |
1.请求报文:
访问示例 post: https://openbank.abchina.com/GateWay/openabc/api/ket/userinfo/v1
请求报文头:Authorization:Bearer AA******Pd5_u0ENeSjk5NBe7f87HcVb0SN_W9ZMO
请求报文体:
注:sign字段如何生成,请查阅开放银行网关相关文档。
2.响应报文:
参数 | 说明 | 所需scope |
---|---|---|
RetCode | 返回编码,0000为正确返回 | |
RetMsg | 返回信息 | |
OpenID | 用户编号 | openid |
Nickname | 昵称 | nickname |
Gender | 性别 | gender |
WorkAddr | 工作地址 | address |
FamilyAddr | 家庭地址 | address |
DeliveryAddr | 收货地址 | deliveryAddr |
电子邮箱 | ||
Profession | 职业 | profession |
Nationality | 国籍 | nationality |
Rrzphone | 手机号 | phone |
CifTelephone | CIF手机号(现默认返回空) | phone |
Mbphone1 | 渠道1手机号 | phone |
Mbphone2 | 渠道2手机号 | phone |
Mbphone3 | 渠道3手机号 | phone |
CustName | 姓名 | name |
IDType | 证件类型 | certnum |
IDNo | 证件号 | certnum |
CustID | 用户客户号 | custinfo |
CustType | 用户类型 | custinfo |
RegDate | 掌银注册时间 | mreginfo |
RegBranch | 掌银注册网点号 | mreginfo |
RegLvl | 用户类型 | regLvl |
UserLvl | 用户层级 | userlvl |
Head | 用户头像 | head |
返回数据为Json格式,其中RetCode返回0000并且code为0000为成功,其他为失败,失败时只有RetCode和RetMsg返回信息。
示例:
biz_encrypt的解密结构示例:
1.请求报文:
访问示例 post: https://openbank.abchina.com/GateWay/openabc/api/ket/cardlist/v1
请求报文头:Authorization:Bearer AA******Pd5_u0ENeSjk5NBe7f87HcVb0SN_W9ZMO
请求报文体:
注:sign字段如何生成,请查阅开放银行网关相关文档。
2.响应报文:
参数 | 说明 | 所需scope |
---|---|---|
RetCode | 返回编码,0000为正确返回 | |
RetMsg | 返回信息 | |
OpenID | 用户编号 | cardlist |
CustType | 用户类型 2是中实名,3是强实名 | cardlist |
Cards | 卡列表 | cardlist |
返回数据为Json格式,其中RetCode返回 0000并且code为0000为成功,其他为失败,失败时只有RetCode和RetMsg返回信息。
示例:
biz_encrypt的解密结构示例:
简介:与通用版快e通对接相比,对接方通过调起农行掌上银行APP登录实现用户授权。用户无须再进入登陆页面,输入手机号、密码等信息。
1)合作方页面调起掌银OAuthLogin登录授权交易,根据掌银交易报文规范传入appid、scope、回调地址等参数信息,引导用户进行掌银App登录;
2)掌银将合作方应用信息转发至快e通进行合作方身份校验,如果用户首次登录,则会弹出授权页面提示用户授权给应用的信息,用户点击确认则继续进行授权流程,若用户拒绝,则授权流程中断;
3)快e通对合作方信息校验通过后则会返回临时令牌code,临时令牌有效期为3分钟;
4)掌银将临时令牌追加至合作方回调地址后进行重定向回合作方应用页面;
5)合作方应用接收回调地址中的code参数,并通过后台调用快e通认证授权服务器Token访问令牌交易,换取访问令牌access_token,访问令牌有效期为2小时;
6)合作方接收访问令牌后,后台通过访问令牌调用快e通资源服务器,获取用户信息。
请求地址: https://www.abchina.com/luascript/oauthLogin/
请求示例:window.top.location.href = urlStr,第三方在页面进行重定向到掌银。
掌银会通过 Get 方法调用回调地址,并返回 code 及 state,state用于合作方进行一致性验证。临时令牌 code 会在 3 分钟内过期,接口调用有错误时,会返回错误页面。
为便于合作方对接联调,在合作方正式上线前,快e通支持白名单内用户进入测试地址进行测试联调。
1)在开放银行门户申请用户卡列表接口/用户信息接口时,配置测试配置信息。
入口地址:合作方入口页面。
回调地址:合作方回调地址(回调地址是测试的回调地址,生产上线时可以更换)。
测试手机号: 测试人员手机号(可以登录农行掌银)。
2)H5对接快e通:提交审核之后,合作方在上线之前,通过配置的入口地址访问,使用白名单内的用户进行登录授权测试。
3)掌银渠道对接快e通:将链接https://openbank.abchina.com/OAuthServer/Pages/WhiteTest/index.html?client_id=分配的appid,生成二维码(建议搜索二维码工具生成),通过配置的白名单手机号登录掌银后扫描,扫码并验证成功后,则可以在掌银端打开入口地址。
4)应用在未上线前,配置测试信息的合作方,可以使用白名单的手机号获取用户信息/卡列表接口,限制100次/天。
1)未使用白名单用户测试、白名单用户未绑卡、扫码进入时未登录。
2)请求授权码时,redirect_uri和准入时提供的地址不匹配。
3)redirect_uri在请求授权码和请求访问令牌传进来的要严格一致。
4)redirect_uri中不允许加入#这类的特殊字符。
5)获取AccessToken时,未使用form表单提交。
6)SCOPE范围超出权限范围。