客户端缓存接口(AppStorage)

1.接口描述

该接口可用于在客户端本地缓存数据,以减少跟服务端的交互。例如,通过该接口缓存客户信息,可无需每次都调用“用于登录与授权接口”来获取客户信息,从而使用户流程更加流畅。在写入缓存信息时,可以标记信息是否为和用户相关。当前设备切换了登录用户后,会清除掉和用户相关的缓存信息。

调用数据存储接口实现应用内的数据持久化,包括保存、读取、修改和删除功能,商户之间采用ownerid进行隔离,最低支持手机银行客户端版本为7.3。


2.调用命令

2.1 命令格式


a)更新或插入数据

http://cmbls/AppStorage?id=XXX&action=set&key=XXXXX&ownerid=XXXXX&tag=XXXXX&value=XXXXX


b)获取数据

key精确查询,单个

http://cmbls/AppStorage?id=XXX&action=get&key=XXXX&ownerid=XXXX

tag精确查询,多个

http://cmbls/AppStorage?id=XXX&action=get&tag=XXXX&ownerid=XXXX

key或者tag模糊查询,多个

http://cmbls/AppStorage?id=XXX&action=fuzzyget&key=XXX&ownerid=XXX

http://cmbls/AppStorage?id=XXX&action=fuzzyget&tag=XXX&ownerid=XXX


c)删除数据

key删除,单个

http://cmbls/AppStorage?id=XXX&action=delete&key=XXX&ownerid=XXX

tag删除,多个

http://cmbls/AppStorage?id=XXX&action=delete&tag=XXX&ownerid=XXX



2.2字段定义


参数名
必选
类型
说明
idstring功能标识
actionstring操作类型。可能的取值: set存或替换持久化数据; get取持久化数据; fuzzyget模糊查询取持久化数据; delete删除持久化数据。
tag否,见备注string标签,最长64个字符,如果某取数据场景需要一次性同时取多个key-value内容的场景下,则应该在存数据时候预先设置好相同的Tag值。请注意调用方保持自己key或Tag的唯一性。
key否,见备注string存储的键,最长支持64个字符。同一商户需要保证唯一性。
value否,见备注string存储的值,最长2K字符,APP存储时会做一定加密处理,高敏感信息传value内容请调用方自行额外加密。
owneridstring商户id(唯一标识),最长2K字符。
isUserRelatedstring1为用户相关,0为不相关,缺省值为1。如为用户相关数据,切换用户登录时,会自动清除



3.回调函数

CMBLS.AppStorage.successCallback(id,message)

CMBLS.AppStorage.failCallback(id,message

成功返回


<Result>
<StateCode>0</StateCode>
<Description>Success</Description>
<Action>XXX</Action>
<Data>
<DataCnt>结果个数</DataCnt>
<DataEnc>Base64Encode内容</DataEnc>
</Data>
</Result>


Encode内容:


<item><key>XXX</key><Val>XXX</Val><Time>2015-09-1615:12:02</Time>
</item><item><key>XXX</key><Val>XXX</Val><Time>2015-09-1615:12:02</Time>
</item>……


失败返回


<Result>
<StateCode>非0的错误码(1为参数错误,100表示商户数据量已达100条)</StateCode>
<Action>XXX</Action>
<Description>错误信息</Description>
</Result>



4.调用示例

参见调用格式

5.备注


注意模糊查询时,不需要调用方在参数前后拼接“%”,接口会自动处理为前后模糊。



单个商户(即ownerid)下,最多存储100条数据,超过则直接返回错误,需要由调用方自行删除历史数据。



查询、模糊查询、删除操作中,key和tag参数优先处理key,如果key不存在则处理tag,因此参数传递时两者选其一。



参数说明中,tag、key、value都非必填。需要注意的是,在插入数据时,key、value必填;查询和删除数据时,key和tag必须选传一个值。


6.通过缓存接口实现免登陆

对于非金融类场景,其安全性要求不是特别高,商户可以将客户的ID信息记录、业务信息等在客户端缓存里,从而可以无需每次都调用登录接口,使流程更加流畅。


网约车、快递物流、营销活动等对安全性要求不高的非金融场景,可以通过上述特性来实现免登录和减少跟服务端的交互。

具体方法供参考:
1、用户首次进入小程序时,调用登录接口,同时通过数据持久化接口将客户的UniqueUserID、ExpandUserID等身份标识信息加密保存在客户端本地,同时将这些信息标记为“用户相关”信息。当这台设备上切换了登录账户时,客户端会自动将被标记为“用户相关”的缓存信息清除掉,避免多个用户之间的信息混淆;
2、客户下次访问小程序时,可通过缓存的身份标识信息来识别客户;
3、如果调用接口失败或读取不到缓存信息,可调用登录接口来识别客户。(必须增加这个逻辑,以兼容7.3及以下版本,和缓存被客户手动清除等情况)
4、商户可以根据自己的安全性要求或风控机制,自行制定是否信赖缓存信息的规则,例如:客户超过30天未在这台设备上使用过小程序,便不再信赖该设备上的缓存信息,客户下次访问时必须调用登录接口核实身份。