微信小程序之手机归属地查询

news2025/1/8 0:20:36

微信小程序之手机归属地查询

需求描述

在这里插入图片描述

API申请和小程序设置

API申请

第一步:完整账号注册
我们需要来到如下网站,注册账号:万维易源

第二步:账号注册完成以后,点击右上角的控制台信息。
在这里插入图片描述
第三步:在控制台界面选择接口使用者-appKey管理
在这里插入图片描述
第四步:在appKey管理界面,点击添加按钮,在应用中输入自己想要的名字,白名单非必填,可调用接口搜索手机可以查询到对应的如下信息,选择以后点击“立即创建”。
在这里插入图片描述
第五步:设置以后,我们便可以看到我们常见的appKey了。
在这里插入图片描述

小程序设置

在小程序中,我们应用的API不是随便能够使用的,是需要在小程序中进行设置才能够使用。
第一步:登录小程序管理后台:微信公众平台
第二步:在小程序后台点击管理-开发管理中的开发设置
在这里插入图片描述
第三步:在开发设置中鼠标滚轮往下拉找到服务器域名设置,然后点击右侧修改按钮,在request合法域名中讲我们设置的需要的api加入进去,结果如下
在这里插入图片描述
至此,我们的API Key的申请以及小程序的设置已经完成,我们可以正式开发我们的业务。

业务实现

代码框架

我们的业务代码框架如下
在这里插入图片描述

代码实现
app.json实现

总体基调设置如下

{
    "pages": [
    "pages/index/index",
    "pages/logs/logs" 
    ],
    "window": {
    "backgroundTextStyle": "dark",
    "navigationBarBackgroundColor": "#FFFFFF",
    "navigationBarTitleText": "手机号码归属地查询",
    "navigationBarTextStyle": "black"
    },
    "sitemapLocation": "sitemap.json"
}
util.js实现
const formatTime = date => {
  const year = date.getFullYear()
  const month = date.getMonth() + 1
  const day = date.getDate()
  const hour = date.getHours()
  const minute = date.getMinutes()
  const second = date.getSeconds()

  return [year, month, day].map(formatNumber).join('') + '' + [hour, minute, second].map(formatNumber).join('')
}

const formatNumber = n => {
  n = n.toString()
  return n[1] ? n : '0' + n
}

module.exports = {
  formatTime: formatTime
}
index.wxml实现

界面布局实现

<!--pages/index/index.wxml-->
<view class='tel'>
    <view class='input'>
    <input type='number'
       placeholder='请输入查询的手机号'
       bindinput='bindInput'></input>
    </view>

    <view class='button'>
    <button bindtap='bindSearch'>查询</button>
    </view>

    <view class='info'>
    <text>温馨提示:查询结果仅供参考,以当地营业厅查询结果为</text>
    </view>

    <view class='result_caption'>
    <text>{{ret_code}}</text>
    </view>

    <view class='result' hidden='{{hidden}}'>
    <view class='row bg'>所查号码</view>
    <view class='row bg'>{{number}}</view>
    <view class='row'>归属省</view>
    <view class='row'>{{prov}}</view>
    <view class='row bg'>归属地区</view>
    <view class='row bg'>{{city}}</view>
    <view class='row'>运营商</view>
    <view class='row'>{{name}}</view>
        <view class='row bg'>城市编码</view>
    <view class='row bg'>{{cityCode}}</view>
    <view class='row'>邮政编码</view>
    <view class='row'>{{postCode}}</view>
    </view>
</view>
index.wxss实现

界面样式实现

/* pages/index/index.wxss */
.tel {
    width: 70%;
    margin: 0 auto;
    font-size: 30rpx;
}
.tel view {
    margin: 15rpx 0;
}
.input input {
    border: 1rpx solid #eee;
    background-color: #eee;
    padding: 18rpx;
    border-radius: 8rpx;
    color: #666;
}
.button button {
    background-color: #0080ff;
    color: white;
}
.info text {
    color: #999;
    font-size: 24rpx;
}
.result_caption text {
    color: #0080ff;
}
.result {
    display: flex;
    flex-wrap: wrap;
    color: #666;
    border: 1rpx solid #999;
}
.result .row {
    flex-basis: 50%;
    box-sizing: border-box;
    margin: 0;
    padding: 10rpx;
}
.result .bg {
    background-color: #eee;
}
index.js实现

业务实现如下

// pages/index/index.js
const util = require('../../utils/util.js');
Page({

    /**
     * 页面的初始数据
     */
    data: {
    //APPID
    appid: '上述API申请的ID',
    //密钥
    sign: '上述API申请的签名',
    //当前查询的时间
    timesTamp : util.formatTime(new Date()),
    //手机号码
    number : '',
    //默认隐藏
    hidden:true,
    //省份
    prov: '',
    //城市
    city: '',
    //卡类型
    name: '',
    //判断
    ret_code: '',
    },

    //输入手机号
    bindInput : function (e) {
    //查询得到手机号
    this.setData({
    number : e.detail.value
    });
    },

    //查询号码
    bindSearch : function (e) {
    var that = this;


    //请求
    wx.request({
    url: 'https://route.showapi.com/6-1?num=' + that.data.number + '&showapi_appid=' + that.data.appid + '&showapi_timestamp=' + that.data.timesTamp + '&showapi_sign=' + that.data.sign,
    success : function (e) {
    //获取归属地数据
    var result = e.data.showapi_res_body;

    //判断手机号码是否合法
    if (result.ret_code == -2) {
    that.setData({
    ret_code: '对不起,您查询的号码有误!',
    hidden : true
    });
    } else {
    that.setData({
    ret_code: '结果如下:',
    hidden: false,
    prov: result.prov,
    city: result.city,
    name: result.name,
                        postCode: result.postCode,
                        cityCode: result.cityCode
    });
    }
    }
    })

    },


    /**
     * 生命周期函数--监听页面加载
     */
    onLoad: function (options) {

    
    },

    /**
     * 生命周期函数--监听页面初次渲染完成
     */
    onReady: function () {

    },

    /**
     * 生命周期函数--监听页面显示
     */
    onShow: function () {

    },

    /**
     * 生命周期函数--监听页面隐藏
     */
    onHide: function () {

    },

    /**
     * 生命周期函数--监听页面卸载
     */
    onUnload: function () {

    },

    /**
     * 页面相关事件处理函数--监听用户下拉动作
     */
    onPullDownRefresh: function () {

    },

    /**
     * 页面上拉触底事件的处理函数
     */
    onReachBottom: function () {

    },

    /**
     * 用户点击右上角分享
     */
    onShareAppMessage: function () {

    }
})

我们可以看到通过API调用返回的结果如下
在这里插入图片描述
至此我们完成手机归属地的开发内容。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2255197.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【机器学习】机器学习的基本分类-监督学习-Lasso 回归(Least Absolute Shrinkage and Selection Operator)

Lasso 回归是一种线性回归方法&#xff0c;通过引入 ​ 正则化&#xff08;绝对值惩罚项&#xff09;约束回归系数&#xff0c;既能解决多重共线性问题&#xff0c;又具有特征选择能力。 1. Lasso 回归的目标函数 Lasso 的目标是最小化以下损失函数&#xff1a; 其中&#xff…

优化LabVIEW数据运算效率的方法

在LabVIEW中进行大量数据运算时&#xff0c;提升计算效率并减少时间占用是开发过程中常遇到的挑战。为此&#xff0c;可以从多个角度着手优化&#xff0c;包括合理选择数据结构与算法、并行处理、多线程技术、硬件加速、内存管理和界面优化等。通过采用这些策略&#xff0c;可以…

python学opencv|读取图像(四)imshow()函数尝试

【1】引言 前述已经学习了opencv读取图像的基本操作&#xff0c;包括下述链接&#xff1a; python学opencv|读取图像-CSDN博客 python学opencv|读取图像&#xff08;二&#xff09;保存彩色图像-CSDN博客 python学opencv|读取图像&#xff08;三&#xff09;放大和缩小图像…

MongoDB分片集群搭建及扩容

分片集群搭建及扩容 整体架构 环境准备 3台Linux虚拟机&#xff0c;准备MongoDB环境&#xff0c;配置环境变量。一定要版本一致&#xff08;重点&#xff09;&#xff0c;当前使用 version4.4.9 配置域名解析 在3台虚拟机上执行以下命令&#xff0c;注意替换实际 IP 地址 e…

MATLAB 最小二乘平面拟合(90)

MATLAB 最小二乘平面拟合(90) 一、算法介绍二、算法实现1.代码2.结果:一、算法介绍 平面方程: ax+by+cz+d = 0 执行任务:读取一组点云(这里用自定义生成的平面模拟点云代替,在其中添加了噪声来模拟真实的数据),使用最小二乘拟合平面,来输出平面参数,并可视化显示拟…

AI+电影特效产品化:开启电影人物年轻化新时代

随着人工智能技术的不断进步,它正在改变着我们生活的方方面面,包括娱乐产业。在电影制作领域,AI技术的应用尤其引人注目,尤其是在实现演员年轻化或老化效果方面。本文将介绍一款名为MyTimeMach

Appium 安装问题汇总

好生气好生气&#xff0c;装了几天了&#xff0c; opencv4nodejs 和 mjpeg-consumer 就是装不了&#xff0c;气死我了不管了&#xff0c;等后面会装的时候再来完善&#xff0c;气死了气死了。 目录 前言 1、apkanalyzer.bat 2、opencv4nodejs 3、ffmpeg 4、mjpeg-consume…

Cannot resolve symbol ‘ActivityThread‘ | Android 语法

背景 ActivityThread 是 Android 系统内部使用的一个类,它位于 android.app 包中,但在 Android SDK 的公共 API 中并没有公开。 由于 ActivityThread 是隐藏的内部类,因此在编写单元测试或功能开发时,无法直接引用它。可以使用反射来访问内部 API,或者使用依赖注入的方式…

探索自然语言处理奥秘(NLP)

摘要 自然语言处理&#xff08;NLP&#xff09;是人工智能领域的一个重要分支&#xff0c;它致力于使计算机能够理解、解释和生成人类语言。这项技术让机器能够阅读文本、听懂语音&#xff0c;并与人类进行基本的对话交流。 通俗理解 自然语言处理&#xff08;NLP&#xff09…

JAVAWeb中的Servlet学习

一 Servlet简介 1.1动态资源和静态资源 静态资源 无需在程序运行时通过代码运行生成的资源,在程序运行之前就写好的资源.例如:html css js img ,音频文件和视频文件 动态资源 需要在程序运行时通过代码运行生成的资源,在程序运行之前无法确定的数据,运行时动态生成,例如Servle…

「Mac畅玩鸿蒙与硬件40」UI互动应用篇17 - 照片墙布局

本篇将带你实现一个简单的照片墙布局应用&#xff0c;通过展示多张图片组成照片墙效果&#xff0c;用户可以点击图片查看其状态变化。 关键词 UI互动应用照片墙布局Grid 布局动态图片加载用户交互 一、功能说明 照片墙布局应用的特点&#xff1a; 动态加载多张图片组成网格布…

dhcpd服务器的配置与管理(超详细!!!)

前提条件&#xff1a; &#xff08;1&#xff09;虚拟机能够联网&#xff08;如果nat模式不能联网的看另一期&#xff09; CentOS7 NAT模式不能联网-CSDN博客 &#xff08;2&#xff09;系统是Centos8&#xff0c;因为下载的dhcp-server软件包版本和Centos7不匹配,如果你能成…

java基础概念47-ArrayList、LinkList和迭代器

一、ArrayList集合 1-1、ArrayList的两种添加信息的方式 1-2、ArrayList集合底层逻辑 1、利用空参创建的集合&#xff0c;在底层创建一个默认长度为0的数组 2、添加第一个元素时&#xff0c;底层会创建一个新的长度为10的数组 3、存满时&#xff0c;会扩容1.5倍。 4、如果…

oracle之用户的相关操作

&#xff08;1&#xff09;创建用户(sys用户下操作) 简单创建用户如下&#xff1a; CREATE USER username IDENTIFIED BY password; 如果需要自定义更多的信息&#xff0c;如用户使用的表空间等&#xff0c;可以使用如下&#xff1a; CREATE USER mall IDENTIFIED BY 12345…

ffmpeg转码与加水印

文章目录 转码 与加水印引入jar包代码ffmpeg安装错误解决方法 转码 与加水印 引入jar包 <dependency><groupId>net.bramp.ffmpeg</groupId><artifactId>ffmpeg</artifactId><version>0.6.2</version></dependency>代码 impo…

tomcat 运行加载机制解析

tomcat 运行加载机制 从tomcat jar包的加载顺序&#xff1a; tomcat的具体运行加载 可以从 start、setclasspath、catalina文件中看出来&#xff1a; start.bat执行 去找bin目录下的catalina.bat,catalina 或去找 bin\setenv.bat以获取标准环境变量&#xff0c;然后去找bin\…

策略模式实战 - 鸭展

该示例出自著名的《HeadFirst》系列的《HeadFirst设计模式》图书的第一个设计模式。用一个鸭子展览的小应用&#xff0c;一步步揭示了如何引入和使用策略模式将示例改造的完美一些。 文章目录 红头鸭与绿头鸭橡皮鸭和诱饵鸭用接口代替继承组合关系与策略模式 红头鸭与绿头鸭 当…

B4X编程语言:设置B4J控件的上下文菜单(ContextMenu)

B4J控件的ContextMenu属性&#xff0c;也叫上下文菜单属性&#xff0c;用于在用户右键点击控件时显示一个自定义菜单(右键菜单)。在B4J中&#xff0c;设置右键菜单有两种方法&#xff1a;一种是直接用代码设置&#xff0c;一种是在设计器设置。 假设在B4XMainPage页面有…

计算机网络·考点知识点整理

根据华科历年计网题&#xff0c;整理了一些常考的知识点难点。 因特网五层协议的功能 层次名称协议功能描述典型协议举例&#xff08;至少两种&#xff09;协议分组名称应用层制定两个应用进程之间的通信规范HTTP、SMTP、FTP、Telnet、POP3、IMAP报文运输层实现进程与进程之间…

创建 React Native 项目

创建 React Native 项目 npx react-nativelatest init YourProject切换依赖源 切换好源之后&#xff0c;你需要进入 android 目录&#xff0c;然后运行 gradlew build 命令。 Android 依赖安装是使用 gradlew 进行管理的。 $ cd android $ ./gradlew build --refresh-depend…