wxml
<button open-type="getPhoneNumber" bindgetphonenumber="getPhoneNumber">绑定手机号</button>
js
getPhoneNumber(e) {
//将保存在前端的用户ID或openid取出来传到后端(后端获取到手机号后根据这个信息添加到数据库)
//将code 取出来
let code = e.detail.code
wx.request({
url: 'http://www.exam.com/api/tel',
data: {
code: code,
},
success() {
}
})
},
后端:
封装post执行方法代码:
function posturl($url,$data){
$data = json_encode($data);
$headerArray =array("Content-type:application/json;charset='utf-8'","Accept:application/json");
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST,FALSE);
curl_setopt($curl, CURLOPT_POST, 1);
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
curl_setopt($curl,CURLOPT_HTTPHEADER,$headerArray);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$output = curl_exec($curl);
curl_close($curl);
return json_decode($output,true);
}
![](https://i-blog.csdnimg.cn/blog_migrate/fb037ae42caa5768e9312cd0b74e1e19.png)
路由:
Route::get('tel',[\App\Http\Controllers\job14Controller::class,'tel']);
控制器:
public function tel(Request $request)
{
$code=$request->get('code');
//小程序AppID
$AppID="";
//小程序AppSecret
$AppSecret="";
$url="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$AppID&secret=$AppSecret";
//这个接口执行后会获取带access_token的数据
$res=json_decode(file_get_contents($url),true);
//返回的数据取出access_token
$access_token=$res['access_token'];
//将取出来的access_token拼接到这个接口上(通过这个接口会获取微信绑定的手机号)
$getTel="https://api.weixin.qq.com/wxa/business/getuserphonenumber?access_token=$access_token";
$method=new posturl();
//通过post执行获取手机号的接口
$data= $method->posturl($getTel,['code'=>$code]);
//执行后取出返回值里面的电话号
$tel=$data['phone_info']['phoneNumber'];
// 将电话号码添加到用户信息表就好了(根据前端登陆过后保存在前端用户ID或openid添加)
}
将前端之前登录后保存的openid或用户ID取出来跟code一起传到后端(根据openid或用户ID来绑定手机号)
绑定成功后返回数据给前端,前端判断提示一下就好了