域名交易,域名出售,域名拍卖,域名转让-域名回收网域名交易,域名出售,域名拍卖,域名转让-域名回收网

域名回收
闲置域名交易

西安微信小程序获取手机号代码

  **小程序获取手机号代码?获取**用户绑定的手机号,需先调用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
  /**
  *对**小程序用户加密数据的解密示例代码.
  *
[email protected](c)1998-2014TencentInc.
  */
  namespacewechat;
  classwxBizDataCrypt
  {
  private$appid;
  private$sessionKey;
  /**
  *构造函数
[email protected][email protected]
[email protected]$appidstring小程序的appid
  */
  publicfunction__construct($appid,$sessionKey)
  {
  $this->sessionKey=$sessionKey;
  $this->appid=$appid;
  }
  /**
  *检验数据的真实***,并且获取解密后的明文.
[email protected]$encryptedDatastring加密的用户数据
[email protected]$ivstring与用户数据一同返回的初始向量
[email protected]$datastring解密后的原文
  *
[email protected],失败返回对应的错误码
  */
  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
  /**
  *对**小程序用户加密数据的解密示例代码.
  *
[email protected](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;
  /**
  *构造函数
[email protected][email protected]
[email protected]$appidstring小程序的appid
  */
  publicfunction__construct($appid,$sessionKey)
  {
  $this->sessionKey=$sessionKey;
  $this->appid=$appid;
  }
  /**
  *检验数据的真实***,并且获取解密后的明文.
[email protected]$encryptedDatastring加密的用户数据
[email protected]$ivstring与用户数据一同返回的初始向量
[email protected]$datastring解密后的原文
  *
[email protected],失败返回对应的错误码
  */
  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;
  }
  }

未经允许不得转载:域名交易,域名出售,域名拍卖,域名转让-域名回收网 » 西安微信小程序获取手机号代码
分享到: 更多 (0)


回收域名交易网 安全 正规 平台

联系我们
备案常见
疑难问题解答

1、网站备案费用是多少,包含哪些?

2、网站备案认证需要多少个工作日?

3、网站备案需要哪些认证资料呢?

4、代理网站备案的付款方式是怎样?

5、备案不通过还需要额外付费吗?

微信扫码加好友
微信二维码