携号转网给用户带来了方便,使得运营商之间进入良性竞争。
但是由此带来了一些小问题,原来我们可以清楚的知道139号码是移动运营商 131是联通 133是电信。
可是现在这一切都不能再准确的判断用户的运营商了。这样对于一些依靠运营商对号码进行区分的业务变得困难,比如短信接口,充值接口,有客户找我想办法解决这一问题,但是如何判断所属真实的运营商呢?
解决方案:直接找运营商问是不现实的。我们只能通过公开的渠道来判断。原理很简单 那就是 三大运营商的官网
比如139XXXX8888 目测此号码一定是移动。我们先在移动官网对此号码进行充值,如果号码此号码是移动号码 那么可以继续充值步骤 如果不是移动号码 会有相应的提示,然后再到联通官网做充值测试,最后到电信官网做同样的测试。那么解决问题就非常简单了 每个号码 在三大运营官网 进行充值判断即可。在对此流程做一个自动化处理软件 问题 解决。
凡是总有解决办法。下面附上 软件截图和部分代码。

部分实现逻辑:
switch (qzOrder.myPropDic["原始运营商"])
{
case "中国移动":
GetBaseInfo_YD(qzOrder, ChannelArgs);
if (qzOrder.myPropDic["中国移动"] == "否")
{
GetBaseInfo_LT(qzOrder, ChannelArgs);
if (qzOrder.myPropDic["中国联通"] == "否")
{
GetBaseInfo_DX(qzOrder, ChannelArgs);
if (qzOrder.myPropDic["中国电信"] == "是")
{
qzOrder.myPropDic["新运营商"] = "中国电信";
}
}
else
{
qzOrder.myPropDic["新运营商"] = "中国联通";
}
}
break;
case "中国联通":
GetBaseInfo_LT(qzOrder, ChannelArgs);
if (qzOrder.myPropDic["中国联通"] == "否")
{
GetBaseInfo_YD(qzOrder, ChannelArgs);
if (qzOrder.myPropDic["中国移动"] == "否")
{
GetBaseInfo_DX(qzOrder, ChannelArgs);
if (qzOrder.myPropDic["中国电信"] == "是")
{
qzOrder.myPropDic["新运营商"] = "中国电信";
}
}
else
{
qzOrder.myPropDic["新运营商"] = "中国移动";
}
}
break;
case "中国电信":
GetBaseInfo_DX(qzOrder, ChannelArgs);
if (qzOrder.myPropDic["中国电信"] == "否")
{
GetBaseInfo_YD(qzOrder, ChannelArgs);
if (qzOrder.myPropDic["中国移动"] == "否")
{
GetBaseInfo_LT(qzOrder, ChannelArgs);
if (qzOrder.myPropDic["中国联通"] == "是")
{
qzOrder.myPropDic["新运营商"] = "中国联通";
}
}
else
{
qzOrder.myPropDic["新运营商"] = "中国移动";
}
}
break;
default:
qzOrder.myPropDic["原始运营商"] = "未知";
break;
}
其实关于此类服务 无外乎几种方式实现:
1 自己调用运营商官方充值接口 做充值前预判
2 通过第三方接口实现 本想推荐给大家奈何审核不过
随着携号转网政策的实施,原有的号码归属运营商识别方法不再适用。本文介绍了一种通过运营商官方网站进行充值测试的方法来判断真实运营商,并提供了解决方案的部分代码。
1058

被折叠的 条评论
为什么被折叠?



