微信公众平台开发-access_token获取及应用(含源码)
作者: 孟祥磊-《微信公众平台开发实例教程》
将一条长链接转成短链接。开发者用于生成二维码的原链接(商品、支付二维码等)太长导致扫码速度和成功率下降,将原长链接通过此接口转成短链接再生成二维码将大大提升扫码速度和成功率。
一.实例调用
接口说明
http请求方式:GET
接口调用地址:
https://api.weixin.qq.com/cgi-bin/shorturl?access_token=ACCESS_TOKEN
请求参数说明,如表所示:
参数 | 是否必须 | 说明 |
access_token | 是 | 调用接口凭证 |
action | 是 | 此处填long2short,代表长链接转短链接 |
long_url | 是 | 需要转换的长链接,支持http://、https://、weixin://wxpay 格式的url |
返回说明:
正常情况下,微信会返回JSON数据包给公众号,如下所示:
{"errcode":0,"errmsg":"ok","short_url":"http:\/\/w.url.cn\/s\/AvCo6Ih"}
返回信息参数说明,如表所示:
参数 | 说明 |
errcode | 错误码。 |
errmsg | 错误信息。 |
short_url | 短链接。 |
使用程序调用接口获取:
<?php /* *微信长链接转短链接 */ require('wei_function.php'); $appid="wx78478e595939c538"; $secret="5540e8ccab4f71dfad752f73cfb85780"; $url="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$appid."&secret=".$secret.""; $output=getdata($url); $tokenarr=(array)json_decode($output); $token=$tokenarr['access_token']; $date='{"action":"long2short","long_url":"https://item.jd.com/12041625.html"}'; $shorturl="https://api.weixin.qq.com/cgi-bin/shorturl?access_token=".$token.""; $shortarr=(array)json_decode(getshort($date,$shorturl)); echo $shortarr['short_url']; function sendcontent($date, $url) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_POSTFIELDS, $date); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); $data = curl_exec($ch); curl_close($ch); return $data; } ?>
²代码解析
require('wei_function.php');包含wei_function.php,使用getdata()函数,获取到access_token后,我们需要将指定数据发送到对应网址服务器,然后获取服务器返回的数据。
$date='{"action":"long2short","long_url":"http://www.jikexueyuan.com/course/1578.html"}';
为需要发送的数据,格式为JSON,这里转换的一个长链接为:
https://item.jd.com/12041625.html
将数据发送到:$shorturl="https://api.weixin.qq.com/cgi-bin/shorturl?access_token=".$token."";
这里除了getdata()函数外,增加了一个sendcontent()的函数,该函数与getdata()不同的是,它除向服务器发送链接请求外,还可以发送单独的数据到对方服务器,对方服务器再根据所发送的数据,返回对应的结果。
同样将sendcontent()函数写到wei_function.php文件中,此时wei_function.php文件内的函数分别有object_array()、get_weather()、getdata()、以及sendcontent(),该文件见《微信公众平台开发实例一书》第95页,优化后的代码:
<?php /* *微信长链接转短链接 */ require('wei_function.php'); $appid="wx78478e595939c538"; $secret="5540e8ccab4f71dfad752f73cfb85780"; $url="https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=".$appid."&secret=".$secret.""; $output=getdata($url); $tokenarr=(array)json_decode($output); $token=$tokenarr['access_token']; //发送xml数据 $date='{"action":"long2short","long_url":"https://item.jd.com/12041625.html"}'; //长链接转短链接接口地址 $shorturl="https://api.weixin.qq.com/cgi-bin/shorturl?access_token=".$token.""; $shortarr=(array)json_decode(sendcontent($date,$shorturl)); echo $shortarr['short_url']; ?>
运行该文件,得到如图所示的信息,长链接成功被转换为短链接。