基于通信网关获取手机号码的核心设计与实现
通常H5手机取号有两种方式,一种是通过与内嵌APP的单点登录获取,另外一种是通过移动/联通/电信网关获取。去年很多项目用到了第二种手机取号服务,现在此功能已经沉淀到共享微服务中,现总结一下通过通信网关进行手机取号服务端的核心设计流程,并跟大家介绍一下如何实现。一、手机取号服务端的设计核心流程如上图所示,基于通信网关获取手机号码,需要前端与后端的配合,手机终端通过通信网关访问网络,手机终端的...
·
通常H5手机取号有两种方式,一种是通过与内嵌APP的单点登录获取,另外一种是通过移动/联通/电信网关获取。
去年很多项目用到了第二种手机取号服务,现在此功能已经沉淀到共享微服务中,现总结一下通过通信网关进行手机取号服务端的核心设计流程,并跟大家介绍一下如何实现。
一、手机取号服务端的设计核心流程
如上图所示,基于通信网关获取手机号码,需要前端与后端的配合,手机终端通过通信网关访问网络,手机终端的信息会随User-Agent发给通信网关,只要终端用的是通信服务,通信网关肯定知道受访者的手机号。如果服务于用户的指定网站和各省通信网关形成映射关系,那么用户在访问指定网站的时候,这个网站就会从通信网关获取手机号,核心流程就是这么简单。
二、关键实现代码片段如下
SurveySession session;
if (token.startsWith(RwkConstant.SURVEY_ACCESSTOKEN_PREFIX)){
log.info("网关回调取号入口");
session = (SurveySession)redisService.get(token, SurveySession.class);
if(session != null){
session.setMobile(inputMobile);
session.setNetwayMobile(inputMobile);
/**获取网关手机号码对应号段省份,加载入session**/
RwkPrefix prefix = rwkCommonService.findPrefix(inputMobile,logUniqueFlag);
if(prefix != null){
String provinceId = prefix.getProvinceid().toString();
session.setUserProvinceId(provinceId);
}
log.info("网关回调取得Session对象号码={}、省份代码={}",session.getNetwayMobile(),session.getUserProvinceId());
}
redisService.set(token, session,10,TimeUnit.MINUTES);
session = (SurveySession)redisService.get(token, SurveySession.class);
if (session != null){
log.info("网关回调redis中取出对象号码={}",session.getNetwayMobile());
}else {
log.info("网关回调redis未set数值成功");
}
log.info("网关回调取号出口");
}
更多推荐
已为社区贡献2条内容
所有评论(0)