微信小程序获取手机号接口实现

微信小程序授权获取手机号:

开发微信小程序的时候获取手机号完整案例,可直接使用。要求:企业号认证

wxml:

<button class="btn" open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber" >获取手机号</button>

js:

getPhoneNumber: function(e) {
    console.log("手机号iv");
    console.log(e.detail.iv)
    console.log("手机号encryptedData");
    console.log(e.detail.encryptedData)
    var that=this;
    wx.login({
      success: res => {
        console.log(res.code);
          wx.request({
            url: "后台解密接口",
            data:{
              data:e.detail.encryptedData,
              iv: e.detail.iv,
              code:res.code,
              Appid:config.Appid,
              SecretKey:config.SecretKey
            },
            success:function(data){
                console.log("返回手机号");
                console.log(data.userPhone);
            }
          })
      }
    })
}

后台接口实现(C#):

/// <summary>
 /// 获取手机号
 /// </summary>
 /// <returns></returns>
 [AcceptVerbs(HttpVerbs.Get | HttpVerbs.Post)]
public JObject getUserPhone()
{
	string Code = Request["Code"];
	string EncryptedData = Request["EncryptedData"];
	string IV = Request["IV"];
	string Appid = Request["Appid"];
	string SecretKey = Request["SecretKey"];
	string userPhone = "";
	            
	 // 获取session_key,openid 
	string value =getOperId(Appid, SecretKey, Code); //调用方法得到返回值
	JObject obj = (JObject)JsonConvert.DeserializeObject(value);
	
	string OpenId = obj["openid"].ToString();//用户唯一标识
	string Session_key = obj["session_key"].ToString();//会话密钥
	
	try
	{
	    byte[] encryData = Convert.FromBase64String(EncryptedData);
	    RijndaelManaged rijndaelCipher = new RijndaelManaged();
	    rijndaelCipher.Key = Convert.FromBase64String(Session_key);
	    rijndaelCipher.IV = Convert.FromBase64String(IV);
	    rijndaelCipher.Mode = CipherMode.CBC;
	    rijndaelCipher.Padding = PaddingMode.PKCS7;
	    ICryptoTransform transform = rijndaelCipher.CreateDecryptor();
	    byte[] plainText = transform.TransformFinalBlock(encryData, 0, encryData.Length);
	    string result = Encoding.Default.GetString(plainText);
	    dynamic model = Newtonsoft.Json.Linq.JToken.Parse(result) as dynamic;
	    userPhone = model.phoneNumber;
	}
	catch (Exception ex)
	 {
	     throw;
	}
	return (JObject)JsonConvert.DeserializeObject("{'errcode':'0','userPhone':'" + userPhone + "','OpenId':'" + OpenId + "'}");
}

#region 获取用户OpenId
public static string getOperId(string AppId,string AppSecret,string Code)
{
     string sRet = "{\"errcode\":\"-3\",\"errmsg\":\"未执行\"}";
     try
         {
             string url = "https://api.weixin.qq.com/sns/jscode2session?appid=" + AppId + 
              "&secret=" + AppSecret + 
              "&js_code=" + Code + 
              "&grant_type=authorization_code";
              sRet = OpenReadWithHttps(url, "", "utf-8", "application/json", "get");
        }
    catch (Exception ex)
        {
            sRet = "{\"errcode\":\"-2\",\"errmsg\":\"" + ex.Message + "\"}";
        }
     return sRet;
}
#endregion

这就是一个完整的微信小程序获取手机号功能了,希望能够帮助到你!喜欢的朋友可以添加关注哦!也可以关注微信公众号“码小鉴”同步更新

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值