本文主要和大家分享扫码关注和一键关注微信公众号的实现代码,希望能帮助大家更好的开发微信公众号功能。
* 获取一键关注授权标识
* */
public function getIdentification()
{
$burl = "https://api.weixin.qq.com/cgi-bin/get_current_selfmenu_info?access_token=" . $this->access_tokens . "";
$result = curl_get($burl);
preg_match('/__biz.*&mid/', $result, $matches);//正则截取字符串
$sVid = $this->get_between($matches[0], "__biz=", "==&mid");//截取出微信公众号唯一标识
$okurl="https://mp.weixin.qq.com/mp/profile_ext?action=home&__biz=".$sVid."==&scene=124124#wechat_redirect";
jumpUrl($okurl);
}php自定义截取中间部分字符串方法,上面用到了,贴出来吧!
/* * php截取指定两个字符之间字符串 * */function get_between($input, $start, $end)
{ $substr = substr($input, strlen($start) + strpos($input, $start),
(strlen($input) - strpos($input, $end)) * (-1)); return $substr;}微信公众号扫码关注代码
先上前后微信公众号扫码关注端不分离的代码
<?php
header("Content-type: text/html; charset=utf-8");
//http://pay.sucaihuo.com/project/access_token
//php获取微信access_token,appid和app_secret得到微信access_token
//php根据appid和secret获取微信access_token,php通过curl远程获取微信access_token信息
$appid = '自己公众号的appid';
$secret = '自己公众号的secret ';
$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" . $appid . "&secret=" . $secret . "";
$ch = curl_init();
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($ch);
if($result == false)
{
echo 'Curl error: ' . curl_error($ch);
}
curl_close($ch);
$access_tokens = json_decode($result, true);
//print_r($access_tokens);
$access_token = $access_tokens['access_token'];
function getTemporaryQrcode($access_token, $orderId) {
$url = "https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=" . $access_token . "";
$qrcode = '{"expire_seconds": 1800, "action_name": "QR_SCENE", "action_info": {"scene": {"scene_id": ' . $orderId . '}}}';
$result = api_notice_increment($url, $qrcode);
$rs = json_decode($result, true);
return $rs;
// return urldecode($rs['url']);
}
$rs = getTemporaryQrcode($access_token, 1123);
//print_r($rs);
$ticket = $rs['ticket'];
$qrcode = "https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=" . $ticket . "";
//print_r($qrcode);
function api_notice_increment($url, $data) {
$ch = curl_init();
// $header = "Content-type: text/xml";
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
// curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (compatible; MSIE 5.01; Windows NT 5.0)');
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_AUTOREFERER, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$tmpInfo = curl_exec($ch);
if (curl_errno($ch)) {
curl_close($ch);
return $ch;
} else {
curl_close($ch);
return $tmpInfo;
}
}
?>
<p style="text-align: center;">
<p>关注素材火公众号</p><div class="aritcle_card flexRow">
<div class="artcardd flexRow">
<a class="aritcle_card_img" href="/xiazai/code/9441" title="微信小程序公众号SaaS管理系统"><img
src="https://img.php.cn/upload/webcode/000/000/016/175897620547705.jpg" alt="微信小程序公众号SaaS管理系统" onerror="this.onerror='';this.src='/static/lhimages/moren/morentu.png'" ></a>
<div class="aritcle_card_info flexColumn">
<a href="/xiazai/code/9441" title="微信小程序公众号SaaS管理系统">微信小程序公众号SaaS管理系统</a>
<p>微信小程序公众号SaaS管理系统是一款完全开源的微信第三方管理系统,为中小企业提供最佳的小程序集中管理解决方案。可实现小程序的快速免审核注册(免300元审核费),可批量发布小程序模板,同步升级版本等功能。基础版本提供商城和扫码点餐两种小程序模板。商户端可以实现小程序页面模块化设计和自动生成小程序源代码并直接发布。</p>
</div>
<a href="/xiazai/code/9441" title="微信小程序公众号SaaS管理系统" class="aritcle_card_btn flexRow flexcenter"><b></b><span>下载</span> </a>
</div>
</div>
<img src="<?php echo $qrcode; ? alt="扫码关注和一键关注微信公众号的实现代码" >" alt="关注公众号二维码" style="max-width:90%"/>
</p>再放改成接口的代码
post方式
class Wxfollow
{
protected $appid = 'wxf1d959b99f33b156';
protected $secret = '248f3a560604555ec96215c085cb2723';
protected $url = "";
protected $access_tokens = "";
public function __construct()
{
//获取$access_token
$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" . $this->appid . "&secret=" . $this->secret . "";
$result = curl_post($url);
$access_tokens = json_decode($result, true);
$this->access_tokens = $access_tokens['access_token'];
}
public function Follow(){
//非必传项
$rs = $this->getTemporaryQrcode($this->access_tokens, 123);
$ticket = $rs['ticket'];
$qrcode = "https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=" . $ticket . "";
///打印二维码显示
jumpUrl($qrcode);
}
//生成二维码
public function getTemporaryQrcode($access_tokens,$orderId)
{
$url = "https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=" .$access_tokens . "";
//生成二维码需要的参数
$qrcode = '{"expire_seconds": 1800, "action_name": "QR_SCENE", "action_info": {"scene": {"scene_id": ' . $orderId . '}}}';
$momo = json_decode($qrcode, true);
$result = curl_post($url, $momo);
$rs = json_decode($result, true);
return $rs;
}curl封装类
function curl_post($url, array $params = array())
{
$data_string = json_encode($params);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 10);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data_string);
curl_setopt($ch, CURLOPT_HTTPHEADER,
array(
'Content-Type: application/json'
)
);
$data = curl_exec($ch);
curl_close($ch);
return ($data);
}相关推荐:










