Heim >Backend-Entwicklung >PHP-Tutorial >Beispiel für die Generierung eines WeChat-QR-Codes mit PHP

Beispiel für die Generierung eines WeChat-QR-Codes mit PHP

小云云
小云云Original
2018-03-20 14:15:2010004Durchsuche

Sie können den QR-Code jeder Seite des Miniprogramms über die Backend-Schnittstelle abrufen. Scannen Sie den QR-Code, um direkt auf die entsprechende Seite des Miniprogramms zuzugreifen. Es wird offiziell empfohlen, kleinen Programmcode zu generieren und zu verwenden, der eine bessere Erkennung bietet. Derzeit gibt es drei Schnittstellen, mit denen kleine Programmcodes generiert werden können. Entwickler können die entsprechende Schnittstelle entsprechend ihren eigenen Anforderungen auswählen.

Schnittstelle A: Geeignet für Geschäftsszenarien, die eine kleine Anzahl von Codes erfordern:

https://api.weixin.qq.com/wxa/getwxacode?access_token=ACCESS_TOKEN

Die Parameter lauten wie folgt:

Hinweis: Der über diese Schnittstelle generierte kleine Programmcode ist dauerhaft gültig. Die Mengenbegrenzung wird am Ende des Artikels erläutert. Bitte verwenden Sie ihn mit Vorsicht. Nachdem der Benutzer den Code gescannt und das Miniprogramm aufgerufen hat, gelangt er direkt auf die dem Pfad entsprechende Seite.

Schnittstelle B: Geeignet für Geschäftsszenarien, die extrem viel Code erfordern oder nur vorübergehend verwendet werden:

https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=ACCESS_TOKEN

Die Parameter lauten wie folgt:

Hinweis: Der über diese Schnittstelle generierte kleine Programmcode ist dauerhaft gültig und die Menge ist derzeit nicht begrenzt. Nachdem der Benutzer den Code gescannt und das Miniprogramm eingegeben hat, muss der Entwickler den Wert des Szenenfelds im Code auf der entsprechenden Seite abrufen und dann die Verarbeitungslogik ausführen. Verwenden Sie den folgenden Code, um den Wert des Szenenfelds im QR-Code abzurufen. Während der Debugging-Phase können Sie die bedingte Kompilierung des benutzerdefinierten Parameters scene=xxxx des Entwicklungstools für die Simulation verwenden. Der Parameterwert der Szene während der Simulation des Entwicklungstools muss urlencode

// 这是首页的 js
Page({
  onLoad: function(options) {
    // options 中的 scene 需要使用 decodeURIComponent 才能获取到生成二维码时传入的 scene
    var scene = decodeURIComponent(options.scene)
  }
})

Schnittstelle C: Geeignet für Geschäftsszenarien, die eine kleine Anzahl von Codes erfordern:

https://api.weixin.qq.com/cgi-bin/wxaapp/createwxaqrcode?access_token=ACCESS_TOKEN
Die Parameter lauten wie folgt:



Hinweis: Über diese Schnittstelle generiertes Miniprogramm 2. Der QR-Code ist dauerhaft gültig. Die Mengenbegrenzung ist am Ende des Artikels angegeben. Bitte verwenden Sie ihn mit Vorsicht. Nachdem der Benutzer den Code gescannt und das Miniprogramm aufgerufen hat, gelangt er direkt auf die dem Pfad entsprechende Seite.
Die POST-Parameter dieser Schnittstellen müssen in JSON-Strings konvertiert werden und die Formularübermittlung wird nicht unterstützt. Die Gesamtzahl der von Schnittstelle A plus Schnittstelle C generierten Codes ist auf 100.000 begrenzt, bitte rufen Sie mit Vorsicht an.
Hier nehmen wir Schnittstelle B als Beispiel, um über die Generierung eines QR-Code-Bildes und dessen Speicherung auf dem lokalen Server zu sprechen:

1. Access_token erhalten
access_token ist das globale Eindeutige Anmeldeinformationen für den Schnittstellenaufruf. Entwicklungsbenutzer müssen beim Aufrufen jeder Schnittstelle access_token verwenden und diese ordnungsgemäß aufbewahren. Ich habe die WeChat-Entwicklung und die Entwicklung öffentlicher Konten durchgeführt. Die Methode zum Erhalten von access_token ist hier genau die gleiche wie zum Erhalten von access_token für öffentliche Konten. Die Methode finden Sie unter: Zugangsdaten für die WeChat-Basisschnittstelle erhalten

2. QR-Code generieren

/**
 * 生成小程序二维码
 * @param  string $qr_path 		存储路径,相对于程序根目录(例如:/Public/Qrcode/)
 * @param  string $filename 	存储的图片名称(例如:aaa.png)
 * @param  string $scene 		二维码场景值
 * @param  string $page 		二维码跳转页面
 * @param  string $expires_in 	二维码有效时间
 * @return [type]         [description]
 */
function create_qrcode($qr_path,$filename,$scene,$page='',$expires_in=7200){
	
	if(empty($qr_path)) return array('status'=>0,'info'=>'缺少存储路径'); 
	if(empty($filename)) return array('status'=>0,'info'=>'请确定存储的图片名称'); 
	if(empty($scene)) return array('status'=>0,'info'=>'缺少二维码场景值'); 
	
	if(!is_dir('.'.$qr_path)){								//	./Public/Qrcode/
		mkdir(iconv("GBK","UTF-8",'.'.$qr_path),0777,true); 
	}
	$file = $qr_path.$filename;								//	 /Public/Qrcode/aaa.png
	$protocol = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off' || $_SERVER['SERVER_PORT'] == 443) ? "https://" : "http://";
	$fileUrl = $protocol.$_SERVER['HTTP_HOST'].$file;		//	 http://yourhost/Public/Qrcode/aaa.png
	$savePath = '.'.$file;									//	 ./Public/Qrcode/aaa.png
	if(file_exists($savePath)){
		//当前时间-文件创建时间<过期时间
		if( (time()-filemtime($savePath)) < $expires_in ) return array(&#39;status&#39;=>1,&#39;info&#39;=>$fileUrl); 
	}
	
	$accessToken = &#39;xxxxxxxxxxxxxxxxxxxxxx&#39;; 				// 获取到的 access_token
	$url = &#39;https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token=&#39;.$accessToken;
	$qrcode = array(
		&#39;scene&#39;			=> $scene,
		&#39;width&#39;			=> 200,
		&#39;page&#39;			=> $page,
		&#39;auto_color&#39;	=> true
	);
	$result = request($url,true,&#39;POST&#39;,json_encode($qrcode));
	$errcode = json_decode($result,true)[&#39;errcode&#39;];
	$errmsg = json_decode($result,true)[&#39;errmsg&#39;];
	if($errcode) return array(&#39;status&#39;=>0,&#39;info&#39;=>$errmsg); 
	$res = file_put_contents($savePath,$result);			//	将获取到的二维码图片流保存成图片文件

	if($res===false) return array(&#39;status&#39;=>0,&#39;info&#39;=>&#39;生成二维码失败&#39;); 
	return array(&#39;status&#39;=>1,&#39;info&#39;=>$fileUrl); 			//返回本地图片地址
}
Verwandte Empfehlungen:


nodejs supereinfache Methode zum Generieren von QR-Code

JS verknüpft die Methode zum Generieren von QR-Code und wandelt ihn in Bilder um

JS zum Generieren von QR-Code

Das obige ist der detaillierte Inhalt vonBeispiel für die Generierung eines WeChat-QR-Codes mit PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn