基于通信网关获取手机号码的核心设计与实现

通常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
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值