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

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

需求描述

API申请和小程序设置

API申请

第一步:完整账号注册

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

第二步:账号注册完成以后,点击右上角的控制台信息。

第三步:在控制台界面选择接口使用者-appKey管理

第四步:在appKey管理界面,点击添加按钮,在应用中输入自己想要的名字,白名单非必填,可调用接口搜索手机可以查询到对应的如下信息,选择以后点击"立即创建"。

第五步:设置以后,我们便可以看到我们常见的appKey了。

小程序设置

在小程序中,我们应用的API不是随便能够使用的,是需要在小程序中进行设置才能够使用。

第一步:登录小程序管理后台:微信公众平台

第二步:在小程序后台点击管理-开发管理中的开发设置

第三步:在开发设置中鼠标滚轮往下拉找到服务器域名设置,然后点击右侧修改按钮,在request合法域名中讲我们设置的需要的api加入进去,结果如下

至此,我们的API Key的申请以及小程序的设置已经完成,我们可以正式开发我们的业务。

业务实现

代码框架

我们的业务代码框架如下

代码实现
app.json实现

总体基调设置如下

json 复制代码
{
    "pages": [
    "pages/index/index",
    "pages/logs/logs" 
    ],
    "window": {
    "backgroundTextStyle": "dark",
    "navigationBarBackgroundColor": "#FFFFFF",
    "navigationBarTitleText": "手机号码归属地查询",
    "navigationBarTextStyle": "black"
    },
    "sitemapLocation": "sitemap.json"
}
util.js实现
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实现

界面布局实现

html 复制代码
<!--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实现

界面样式实现

css 复制代码
/* 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实现

业务实现如下

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调用返回的结果如下

至此我们完成手机归属地的开发内容。

相关推荐
计算机-秋大田4 小时前
基于微信小程序的电子竞技信息交流平台设计与实现(LW+源码+讲解)
spring boot·后端·微信小程序·小程序·课程设计
计算机徐师兄9 小时前
Java基于SSM框架的互助学习平台小程序【附源码、文档】
小程序·互助学习·互助学习平台小程序·java互助学习微信小程序·互助学习微信小程序·互助学习平台微信小程序
西农小陈10 小时前
Python-基于PyQt5,wordcloud,pillow,numpy,os,sys的智能词云生成器
开发语言·python·小程序·pycharm·numpy·pyqt·pillow
Stanford_110611 小时前
C++中常用的十大排序方法之4——希尔排序
c++·算法·微信小程序·排序算法·微信公众平台·twitter·微信开放平台
说私域12 小时前
开源AI智能名片2+1链动模式S2B2C商城小程序:重塑私域流量运营格局
人工智能·小程序·流量运营
Colinnian15 小时前
微信小程序中在一个大边框里给每个小边框均匀分配空间
微信小程序·小程序·notepad++
一 乐16 小时前
基于微信小程序的酒店管理系统设计与实现(源码+数据库+文档)
java·数据库·vue.js·spring boot·微信小程序·酒店管理系统
说私域1 天前
今日头条公域流量引流新径:开源 AI 智能名片 2 + 1 链动模式 S2B2C 商城小程序融合之道
人工智能·小程序
曾经的三心草1 天前
小程序-基础加强
小程序·基础加强
说私域1 天前
智能调度体系与自动驾驶技术优化运输配送效率的研究——兼论开源AI智能名片2+1链动模式S2B2C商城小程序的应用潜力
人工智能·小程序·自动驾驶