4000-700-102

小程序开发

作者:域名回收 日期:2020-06-22 20:38 | 阅读数:
  **小程序获取手机号代码?获取**用户绑定的手机号,需先调用wx.login接口。
  小程序获取code。
  后台得到session_key,openid。
  组件触发getPhoneNumber
  因为需要用户主动触发才能发起获取手机号接口,所以该功能不由API来调用,需用<button>组件的点击来触发。
  需要将<button>组件open-type的值设置为getPhoneNumber,当用户点击并同意之后,可以通过bindgetphonenumber事件回调获取到**服务器返回的加密数据,然后在第三方服务端结合session_key以及app_id进行解密获取手机号。
  tips:
  在回调中调用wx.login登录,可能会刷新登录态。此时服务器使用code换取的sessionKey不是加密时使用的sessionKey,导致解密失败。建议开发者提前进行login;或者在回调中先使用checkSession进行登录态检查,避免login刷新登录态。
  <buttonopen-type="getPhoneNumber"bindgetphonenumber="getPhoneNumber"></button>
  Page({
  getPhoneNumber(e){
  console.log(e.detail.errMsg)
  console.log(e.detail.iv)
  console.log(e.detail.encryptedData)
  }
  })
  encryptedData解密
  encryptedData解密后为以下JSON结构
  {
  "phoneNumber":"13580006666",
  "purePhoneNumber":"13580006666",
  "countryCode":"86",
  "watermark":{
  "appid":"APPID",
  "timestamp":TIMESTAMP
  }
  }
  成都小程序开发可以通过各种前端接口获取**提供的开放数据。考虑到开发者服务器也需要获取这些开放数据,**会对这些数据做签名和加密处理。开发者后台拿到开放数据后可以对数据进行校验签名和解密,来保证数据不被篡改。
  签名校验以及数据加解密涉及用户的会话密钥session_key。开发者应该事先通过wx.login登录流程获取会话密钥session_key并保存在服务器。为了数据不被篡改,开发者不应该把session_key传到小程序客户端等服务器外的环境。
  接口返回的加密数据(encryptedData)进行对称解密。解密算法如下:
  对称解密使用的算法为AES-128-CBC,数据采用PKCS#7填充。
  对称解密的目标密文为Base64_Decode(encryptedData)。
  对称解密秘钥aeskey=Base64_Decode(session_key),aeskey是16字节。
  对称解密算法初始向量为Base64_Decode(iv),其中iv由数据接口返回。
  会话密钥session_key有效***
  开发者如果遇到因为session_key不正确而校验签名失败或解密失败,请关注下面几个与session_key有关的注意事项。
  wx.login调用时,用户的session_key可能会被更新而致使旧session_key失效(刷新机制存在***短周期,如果同一个用户短时间内多次调用wx.login,并非每次调用都导致session_key刷新)。开发者应该在明确需要重新登录时才调用wx.login,及时通过code2Session接口更新服务器存储的session_key。
  **不会把session_key的有效期告知开发者。我们会根据用户使用小程序的行为对session_key进行续期。用户越频繁使用小程序,session_key有效期越长。
  开发者在session_key失效时,可以通过重新执行登录流程获取有效的session_key。使用接口wx.checkSession可以校验session_key是否有效,从而避免小程序反复执行登录流程。
  当开发者在实现自定义登录态时,可以考虑以session_key有效期作为自身登录态有效期,也可以实现自定义的时效***策略。
  <?php
  /**
  *对**小程序用户加密数据的解密示例代码.
  *
  *@copyrightCopyright(c)1998-2014TencentInc.
  */
  namespacewechat;
  classwxBizDataCrypt
  {
  private$appid;
  private$sessionKey;
  /**
  *构造函数
  *@param$sessionKeystring用户在小程序登录后获取的会话密钥
  *@param$appidstring小程序的appid
  */
  publicfunction__construct($appid,$sessionKey)
  {
  $this->sessionKey=$sessionKey;
  $this->appid=$appid;
  }
  /**
  *检验数据的真实***,并且获取解密后的明文.
  *@param$encryptedDatastring加密的用户数据
  *@param$ivstring与用户数据一同返回的初始向量
  *@param$datastring解密后的原文
  *
  *@returnint成功0,失败返回对应的错误码
  */
  publicfunctiondecryptData($encryptedData,$iv,&$data)
  {
  if(strlen($this->sessionKey)!=24){
  returnerrorCode::$IllegalAesKey;
  }
  $aesKey=base64_decode($this->sessionKey);
  if(strlen($iv)!=24){
  returnerrorCode::$IllegalIv;
  }
  $aesIV=base64_decode($iv);
  $aesCipher=base64_decode($encryptedData);
  $result=openssl_decrypt($aesCipher,"AES-128-CBC",$aesKey,1,$aesIV);
  $dataObj=json_decode($result);
  if($dataObj==NULL)
  {
  returnerrorCode::$IllegalBuffer;
  }
  if($dataObj->watermark->appid!=$this->appid)
  {
  returnerrorCode::$IllegalBuffer;
  }
  $data=$result;
  returnerrorCode::$OK;
  }
  }
  /**
  *errorcode说明.
  *<ul>
  *<li>-41001:encodingAesKey非法</li>
  *<li>-41003:aes解密失败</li>
  *<li>-41004:解密后得到的buffer非法</li>
  *<li>-41005:base64加密失败</li>
  *<li>-41016:base64解密失败</li>
  *</ul>
  */
  classerrorCode
  {
  publicstatic$OK=0;
  publicstatic$IllegalAesKey=-41001;
  publicstatic$IllegalIv=-41002;
  publicstatic$IllegalBuffer=-41003;
  publicstatic$DecodeBase64Error=-41004;
  }
  改造
  <?php
  /**
  *对**小程序用户加密数据的解密示例代码.
  *
  *@copyrightCopyright(c)1998-2014TencentInc.
  */
  namespacewechat;
  classwxBizDataCrypt
  {
  private$appid;
  private$sessionKey;
  /**
  *errorcode说明.
  *<ul>
  *<li>-41001:encodingAesKey非法</li>
  *<li>-41003:aes解密失败</li>
  *<li>-41004:解密后得到的buffer非法</li>
  *<li>-41005:base64加密失败</li>
  *<li>-41016:base64解密失败</li>
  *</ul>
  */
  publicstatic$OK=0;
  publicstatic$IllegalAesKey=-41001;
  publicstatic$IllegalIv=-41002;
  publicstatic$IllegalBuffer=-41003;
  publicstatic$DecodeBase64Error=-41004;
  /**
  *构造函数
  *@param$sessionKeystring用户在小程序登录后获取的会话密钥
  *@param$appidstring小程序的appid
  */
  publicfunction__construct($appid,$sessionKey)
  {
  $this->sessionKey=$sessionKey;
  $this->appid=$appid;
  }
  /**
  *检验数据的真实***,并且获取解密后的明文.
  *@param$encryptedDatastring加密的用户数据
  *@param$ivstring与用户数据一同返回的初始向量
  *@param$datastring解密后的原文
  *
  *@returnint成功0,失败返回对应的错误码
  */
  publicfunctiondecryptData($encryptedData,$iv,&$data)
  {
  if(strlen($this->sessionKey)!=24){
  returnself::$IllegalAesKey;
  }
  $aesKey=base64_decode($this->sessionKey);
  if(strlen($iv)!=24){
  returnself::$IllegalIv;
  }
  $aesIV=base64_decode($iv);
  $aesCipher=base64_decode($encryptedData);
  $result=openssl_decrypt($aesCipher,"AES-128-CBC",$aesKey,1,$aesIV);
  $dataObj=json_decode($result);
  if($dataObj==NULL)
  {
  returnself::$IllegalBuffer;
  }
  if($dataObj->watermark->appid!=$this->appid)
  {
  returnself::$IllegalBuffer;
  }
  $data=$result;
  returnself::$OK;
  }
  }

网址:http://www.tengfan.cc/tf/xcxkf/4455.html
本文由域名回收公司 闲置域名出售公司 域名回购 西安域名出售 西安网络公司 网络中心收集整理!以上整理自互联网,如有侵权,请及时联系我们进行删除,谢谢!
免责声明:本网站部分图片和文字来源于网络,版权归原作者或者原公司所有,如果您觉得侵犯了您的权利,请告知我们立即删除,谢谢!Email: 917896677@qq.com
域名回收,闲置域名出售,西安域名出售,域名回购,西安网站开发,西安网页设计,西安小程序开发,西安微信开发,西安域名出售,西安网络公司,西安网站维护,西安网络推广关于我们
公司简介 荣誉资质 团队介绍 联系我们
域名回收,闲置域名出售,西安域名出售,域名回购,西安网站开发,西安网页设计,西安小程序开发,西安微信开发,西安域名出售,西安网络公司,西安网站维护,西安网络推广电子商务
B2C电商 O2O电商 BBC电商
域名回收,闲置域名出售,西安域名出售,域名回购,西安网站开发,西安网页设计,西安小程序开发,西安微信开发,西安域名出售,西安网络公司,西安网站维护,西安网络推广闲置域名回收
企业闲置域名回收 品牌闲置域名回收 响应式闲置域名回收 营销闲置域名回收

与我们合作

与建站科技合作,您将会得到更成熟的品建设服务。力求呈现优质的品建设成果 主营业务:企业闲置域名回收、品网站开发、商城闲置域名回收、微信公众号开发、小程序开发
域名回收,闲置域名出售,西安域名出售,域名回购,西安网站开发,西安网页设计,西安小程序开发,西安微信开发,西安域名出售,西安网络公司,西安网站维护,西安网络推广
品咨询热线4000-700-102
2018 西安网络科技有限公司 All Rights Reserved   陕ICP备15000721号
域名回收_西安域名出售_域名回购_闲置域名出售      网站地图 XML      免责申明
地址:西安市高新区科技五路8号数字生活1幢2单元25层22501号     
    

0

在线
客服

在线客服服务时间:9:00-24:00

客服
热线

4000-700-102
7*24小时客服服务热线

关注
微信

关注官方微信
顶部