小程序生成带推荐码(场景id)的二维码
生活随笔
收集整理的這篇文章主要介紹了
小程序生成带推荐码(场景id)的二维码
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
<?php
namespace BusinessController;
use ThinkHook;
/**
* 小程序碼[帶推薦碼/場景id]
* @author 戈丫汝<534208139@qq.com>
*/
class XcxqrcodeController{
protected $appid = '';
protected $secret = '';
protected $url = "";
protected $access_tokens = "";
public function __construct(){
$mpid = $_GET['mpid'];
$appid = M('test')->where(['mpid'=>$mpid,'name'=>'xcx_appid'])->getField('value');
$appsecret = M('test')->where(['mpid'=>$mpid,'name'=>'xcx_appsecret'])->getField('value');
$this->appid = $appid;
$this->secret = $appsecret;
$url = "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=" . $this->appid . "&secret=" . $this->secret . "";
$result = $this->httpRequest($url);
$access_tokens = json_decode($result, true);
$this->access_tokens = $access_tokens['access_token'];
}
//打印二維碼顯示 [[入口地址]]
public function Follow(){
$scene_str = $_GET['id'];//場景id/推薦碼
$mpid = $_GET['mpid'];
$rs = $this->getTemporaryQrcode($mpid,$this->access_tokens, $scene_str);
echo $rs;
}
//生成二維碼
public function getTemporaryQrcode($mpid,$access_tokens,$scene_str=''){
//首頁小程序碼。無path
$qcode ="https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=".$access_tokens. "";
$param = json_encode(array("scene"=>$scene_str));
$result = $this->httpRequest( $qcode, $param,"POST");
$filename = './Images/'.'xcx_'.$mpid.'-'.uniqid() . '.jpg'; //定義圖片名字及格式
file_put_contents($filename,$result);
return $filename;
}
//把請求發送到微信服務器換取二維碼
function httpRequest($url, $data='', $method='GET'){
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($curl, CURLOPT_AUTOREFERER, 1);
if($method=='POST')
{
curl_setopt($curl, CURLOPT_POST, 1);
if ($data != '')
{
curl_setopt($curl, CURLOPT_POSTFIELDS, $data);
}
}
curl_setopt($curl, CURLOPT_TIMEOUT, 30);
curl_setopt($curl, CURLOPT_HEADER, 0);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($curl);
curl_close($curl);
return $result;
}
}
小程序端場景id接收,走接口綁定
注意參數獲取方式
業務場景較多的小程序碼,使用getwxacodeunlimit獲取,其參數需要注意,可不是?id=2,
掃碼訪問內容頁面,在頁面的onload方法中,解析小程序碼的參數
比如要傳入一個用戶id=12,scene參數就可以寫成"12",多個參數按一定規則分開,如&符號,第二個參數是shop_id=3,
則scene可以這樣寫"12&3"
用戶掃碼進入后的邏輯
我們可以在該頁面的onload生命周期中處理參數
onLoad:function(options){
if(options.scene){
let scene=decodeURIComponent(options.scene);
//&是我們定義的參數鏈接方式
let id=scene.split("&")[0];
let shop_id=scene.split('&')[1];
//其他邏輯處理。。。。。
}
}
場景id官方文檔要求格式為:
請求帶場景id圖片地址入口: /index.php?s=/Xcxqrcode/mpid/22222/id/112
生成圖片示例:[生成的二維碼默認logo就是小程序的logo,賊方便]
總結
以上是生活随笔為你收集整理的小程序生成带推荐码(场景id)的二维码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python中的类与继承
- 下一篇: legend3---阿里云添加 CNAM