小步伐获取手机号:快速验证和实时验证

打印 上一主题 下一主题

主题 809|帖子 809|积分 2427

概述

小步伐手机号快速验证和实时验证都已经开始收费了。


  • 手机号实时验证组件,在每次哀求时,平台均会对用户选择的手机号进行实时验证;每次组件调用成功,收费0.04元
  • 手机号快速验证组件,平台会对号码进行验证,但不保证是实时验证。每次组件调用成功,收费0.03元
  • 两者的区别简朴理解就是实时验证能确保手机号是可用的(比如微信会要求利用者输入验证码确保手机号可用性),而快速验证就是把微信绑定的手机号返归去,不管有没有注销或者欠费
底子库选择

快速验证组件其实就是最开始的获取手机号码组件,调用流程比较复杂,必要wx.login,然后再利用encryptedData和iv得到手机号。新版本的也还能继承利用这种,但同时也增加了一个code(底子库从2.21.2开始),可以直接用code而忽略encryptedData和iv。
所以,发起底子库直接选择2.21.2或者以上的,这样实时和快速的两种能统一处理掉。
底子库版本修改位置: 开发者工具右上角的详情->本地设置->修改调试底子库

后端代码

后端代码非常简朴,根据code来得到手机号,进行本身业务的逻辑,为了方便查看,我把相应值直接返回给小步伐了,真实业务自行调整成生存数据库或者其他逻辑。
获取access_token,这个是小步伐的,appid和secert可通过小步伐背景获取到。access_token的有效期是2小时,可以做成个定时使命。
  1.     public void runmicro(){
  2.         log.info("进入获取micro accessToken 定时任务");
  3.         try {
  4.             String url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" + Cons.APPID_MICRO + "&secret=" + Cons.SECRET_MICRO;
  5.             String result = Jsoup.connect(url).ignoreContentType(true).method(Connection.Method.GET).execute().body();
  6.             log.info(result);
  7.             Cons.accessTokenMicro = JSON.parseObject(result).getString("access_token");
  8.         } catch(Exception e) {
  9.             e.printStackTrace();
  10.         }
  11.     }
复制代码
有了access_token,就可以正常获取手机号码了。
此中,requestBody中参数格式必须是code:codeValue,我直接限定小步伐按照这个格式通报了,没有做正当校验。
  1.     @PostMapping("/mobile")
  2.     @Log("查询手机号码")
  3.     @ApiOperation("查询手机号码")
  4.     @AnonymousAccess
  5.     public ResponseEntity<JSONObject> mobile(@RequestBody JSONObject param){
  6.         try {
  7.             System.out.println(param.toString());
  8.             String url = "https://api.weixin.qq.com/wxa/business/getuserphonenumber?access_token=" + Cons.accessTokenMicro;
  9.             String result = Jsoup.connect(url).method(Connection.Method.POST).ignoreContentType(true).ignoreHttpErrors(true).requestBody(param.toString()).execute().body();
  10.             return new ResponseEntity<>(JSON.parseObject(result),HttpStatus.OK);
  11.         } catch(Exception e) {
  12.             e.printStackTrace();
  13.         }
  14.         return new ResponseEntity<>(HttpStatus.OK);
  15.     }
复制代码
小步伐布局

利用了weui样式。这个无所谓,根据个人喜好了。
在wxss中进行引入
  1. @import "/pages/style/weui.wxss";
复制代码
在wxml中写两个按钮,测试两个获取手机号。此中实时组件的open-type是getRealtimePhoneNumber,同时通过bindgetrealtimephonenumber来指定获取到以后调用的方法;快速组件的open-type是getPhoneNumber,同时通过bindgetphonenumber来指定获取到以后调用的方法。
  1. <page-meta root-font-size="system"/>
  2. <view class="page" data-weui-theme="{{theme}}" data-weui-mode="{{mode}}">
  3.     <view class="page__bd">
  4.         <view class="weui-cells__title">手机号实时验证组件</view>
  5.         <view class="weui-cells weui-cells_after-title">
  6.             <view aria-labelledby="js_cell_l1_bd" class="weui-cell weui-cell_access" hover-class="weui-cell_active">
  7.                   <button type="primary" style="width: 100%;" open-type="getRealtimePhoneNumber" bindgetrealtimephonenumber="getrealtimephonenumber" >获取手机号(实时)</button>
  8.                 </view>
  9.         </view>
  10.         <view class="weui-cells__title">手机号快速验证组件</view>
  11.         <view class="weui-cells weui-cells_after-title">
  12.             <view aria-labelledby="js_cell_l1_bd" class="weui-cell weui-cell_access" hover-class="weui-cell_active">
  13.                   <button type="primary" style="width: 100%;" open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber" >获取手机号(快速)</button>
  14.                 </view>
  15.         </view>
  16.         
  17.         <view class="weui-cells__title" style="padding-top: 30px;">手机号实时验证组件,在每次请求时,平台均会对用户选择的手机号进行实时验证。每次组件调用成功,收费0.03元。
  18.         </view>
  19.         <view class="weui-cells__title" >手机号快速验证组件,平台会对号码进行验证,但不保证是实时验证。每次组件调用成功,收费0.04元。</view>
  20.     </view>
  21. </view>
复制代码

小步伐公共调用方法

因为两种获取手机号的方式都是统一的通过code,所以在js中写个公共的方法,都可以直接调用。url是上面背景部署好的地点。
  1. mobileRequest: function(code) {
  2.       wx.request({
  3.         url: 'https://eladmin.luotayixing.com/api/wechat/mobile',
  4.         method: 'POST',
  5.         data: {
  6.           code: code
  7.         },
  8.         header: {
  9.           'content-type': 'application/json'
  10.         },
  11.         success (res) {
  12.           wx.showModal({
  13.             title: '返回结果',
  14.             content: JSON.stringify(res.data),
  15.             showCancel: false,
  16.             success (res) {
  17.               
  18.             }
  19.           })
  20.         }
  21.       })
  22.     },
复制代码
组件事故回调

上面两个组件的事故回调方法比较简朴,都是直接把code拿到。
这里必要增加下判定,比如用户点击了取消不要调用,其他堕落环境不要调用等。我为了方便偷懒了。
  1.     getrealtimephonenumber (e) {
  2.       this.mobileRequest(e.detail.code)
  3.     },
  4.     getPhoneNumber (e) {
  5.       this.mobileRequest(e.detail.code)
  6.     },
复制代码
官方给出的几个参数可以用,比如errno来判定是否失败了。
  1.     console.log(e.detail.code)  // 动态令牌
  2.     console.log(e.detail.errMsg) // 回调信息(成功失败都会返回)
  3.     console.log(e.detail.errno)  // 错误码(失败时返回)
复制代码
完整代码获取

可以通过公众号“洛塔志达服务”进行接洽,发送“微信”,可添加好友沟通。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

一给

金牌会员
这个人很懒什么都没写!

标签云

快速回复 返回顶部 返回列表