由于芝麻信用越来越受大家的关注和喜欢,有些项目中也会集成进去,作为一个征信的手段,或者作为一个免押金服务的参照。为此我出这一份文章,希望能帮助到大家。不过话说回来,集成芝麻信息的APP确实不多。
简单说下接入芝麻信用的基本流程:
- 第一步:商户通过芝麻信用商户平台进行配置申请
- 第二步:商户服务端对接芝麻信用开发平台,集成加密加签等功能
- 第三步:商户app对接芝麻信用移动端sdk接口
- 第四步: 商户拿到返回的params参数,通过RSA解密,可以获取授权结果以及用户的openId
上面我们可以看出,对于iOS这边来说,做的只有第三步,其实还是很简单滴。
详细步骤:
- 导入 SDK的Framework文件 ,目前还不能使用CocoaPod,所以只能手动。
- 创建实例并实现回调
a.注册应用:
请在AppDelegate里面来注册应用:
[[ALCCreditService sharedService] resgisterApp];
b. 芝麻信用分数的查询这里有两种方式,第一种是通过电话号码,第二种是通过姓名和身份证号。我这里比较推荐第二种。获取到用户姓名和身份证号后,传给服务端提前写好的接口(这里不需要前端操心了,服务端自己去看自己的文档)进行加密签名,成功后服务端会生产前端需要的两个参数sign
和params
.这两个参数也就是下面c中的sign
和params
。
c. 调用接口进行授权逻辑:
使用queryUserAuthReq方法进行授权验证。
* 用户授权接口
* @param appId 芝麻分配的应用ID
* @param sign 商户私钥对params进行加签,b中提到服务端返回
* @param params 授权的请求参数,商户需用芝麻信用的公钥对这一串数据进行RSA加密。
* 数据格式如下(具体参数意义请看开发文档)b中提到服务端返回
* @param extParams 新增扩展参数,可以为空
* @param selector 返回结果selector
* @param targetVC 目标controller,商户Controller必须是基于Navigation Controller
*/
- (void)queryUserAuthReq:(NSString*)appId
sign:(NSString*)sign
params:(NSString *)params
extParams:(NSMutableDictionary *)extParams
selector:(SEL)selector
target:(id)targetVC;
d.实现回调
回调方法请传入selector进行注册,结果会在参数中,作为一个NSMutableDictionary 传递给商户解析。
在回调
- (void)result:(NSMutableDictionary*)dic;中返回的dic的参数是sign,authResult,params
sign : JXxfkpXYwimJJjwrUCw7UsorglpFG7H2EFuVjz92a4tGOanK2m/3dMbDaB7Cf74nUoUecvFx90ag3yBecMxFJJ1dnzZl/XVGGIRQEbHcQdkr8PSWQq+92RwyyE6HJgeUSeKzjCwlN7+E62WVphL9Ky2souxW60q2A65uCI6URh4=,
authResult : success,
params : TfbXXQgOh9jvRMPD4pIhY2fm97gME6+maURdIjph5QgxFeMQfaMk3/pjy3ZpyqaUnvIUx6xBazXvVP0G2BYD28/s9GMfFYvSGeLMosF0edn+D5MDXQttpvBW46h6gsWbpU7FSlC+Ga/zM13USCHLHqFmS7Bc/HiRpqlBOyDpM2gQgtH9yb7xe4OXo0MetICxbuzsTyPxxRHVANgacH4lj6YUs3vx/nmbQx2+D/nbtSefsiw==
e.前端需要继续用服务端写好的接口(服务端自己看文档),把sign
和params
传给服务端。这是服务端解析成功返回给前端的就会有对应的参数比如score
,这里服务端也会得到这个分数,因此我建议这里可以把UID
一并也传过去,这样服务端再得到分数后可以直接保存再数据库,下次查询只需要查找数据库,不用重新授权查询.不过分数会每月更新,所以需要判断下当前时间是授权还是直接去数据库中查找了,这里你们自己商量。