>백엔드 개발 >PHP 튜토리얼 >PHP로 WeChat QR 코드를 생성하는 예

PHP로 WeChat QR 코드를 생성하는 예

小云云
小云云원래의
2018-03-20 14:15:2010002검색

백엔드 인터페이스를 통해 미니 프로그램의 모든 페이지에 대한 QR 코드를 얻을 수 있습니다. QR 코드를 스캔하면 미니 프로그램의 해당 페이지로 직접 들어갈 수 있습니다. 더 잘 인식되는 작은 프로그램 코드를 생성하고 사용하는 것이 공식적으로 권장됩니다. 현재 작은 프로그램 코드를 생성할 수 있는 인터페이스는 3가지가 있으며, 개발자는 자신의 필요에 따라 적절한 인터페이스를 선택할 수 있습니다.

인터페이스 A: 소량의 코드가 필요한 비즈니스 시나리오에 적합합니다. 인터페이스 주소:

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

매개변수는 다음과 같습니다.

참고: 이 인터페이스를 통해 생성된 작은 프로그램 코드는 영구적으로 유효합니다. 글 마지막에 설명되어 있으니 주의해서 사용하세요. 사용자가 코드를 스캔하여 미니프로그램에 진입한 후 해당 경로에 해당하는 페이지로 바로 진입하게 됩니다.

인터페이스 B: 매우 많은 양의 코드가 필요하거나 일시적으로만 사용되는 비즈니스 시나리오에 적합합니다.

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

매개변수는 다음과 같습니다.

참고: 이 인터페이스를 통해 생성된 작은 프로그램 코드는 영구적으로 유효하며 수량에는 제한이 없습니다. 사용자가 코드를 스캔하고 미니 프로그램에 진입한 후, 개발자는 해당 페이지의 코드에서 장면 필드의 값을 얻은 다음 처리 로직을 수행해야 합니다. QR 코드에서 장면 필드의 값을 가져오려면 다음 코드를 사용하세요. 디버깅 단계에서는 시뮬레이션을 위해 개발 도구의 사용자 정의 매개변수 scene=xxxx의 조건부 컴파일을 사용할 수 있습니다. 개발 도구에서 시뮬레이션하는 동안 장면의 매개변수 값은 urlencode

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


인터페이스 C여야 합니다. 소량의 코드가 필요한 비즈니스 시나리오에 적합합니다.

https://api.weixin.qq.com/cgi-bin/wxaapp/createwxaqrcode?access_token=ACCESS_TOKEN

매개변수는 다음과 같습니다.

참고: 이 인터페이스를 통해 생성된 미니 프로그램 QR 코드는 영구적으로 유효합니다. 기사를 주의해서 사용하시기 바랍니다. 사용자가 코드를 스캔하여 미니프로그램에 진입한 후 해당 경로에 해당하는 페이지로 바로 진입하게 됩니다.

이러한 인터페이스의 POST 매개변수는 json 문자열로 변환되어야 하며 양식 제출은 지원되지 않습니다. 인터페이스 A와 인터페이스 C에서 생성된 총 코드 수는 100,000개로 제한되어 있으므로 주의해서 호출하세요.
여기에서는 QR 코드 이미지를 생성하고 로컬 서버에 저장하는 방법을 설명하기 위해 인터페이스 B를 예로 들겠습니다.
1. access_token 얻기
access_token은 개발자가 access_token을 사용해야 하는 경우 전역적으로 고유한 인터페이스입니다. 각 인터페이스를 호출하고 올바르게 저장해야 합니다. 가장 기본적인 WeChat 개발과 공개 계정 개발을 진행했습니다. 여기서 access_token을 얻는 방법은 공개 계정에 대한 access_token을 얻는 방법과 완전히 동일합니다. WeChat 기본 인터페이스 인증서 Access_token 받기

2 . QR 코드 생성

/**
 * 生成小程序二维码
 * @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); 			//返回本地图片地址
}

관련 추천 :

nodejs의 매우 간단한 QR 코드 생성 방법

JS 방법으로 링크에서 QR 코드를 생성하고 이를 사진으로 변환

JS QR 코드 생성

위 내용은 PHP로 WeChat QR 코드를 생성하는 예의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.