ホームページ >バックエンド開発 >PHPチュートリアル >PHPでWeChat QRコードを生成する例
バックエンドインターフェイスを通じてミニプログラムの任意のページの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) } })
Interface 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 を呼び出す必要がある場合にグローバルに一意のインターフェイスです。各インターフェイスを呼び出し、それを適切に保存する必要があります。ここでの access_token の取得方法は、最も基本的な WeChat の開発とパブリック アカウントの開発を行いました。方法については、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('status'=>1,'info'=>$fileUrl); } $accessToken = 'xxxxxxxxxxxxxxxxxxxxxx'; // 获取到的 access_token $url = 'https://api.weixin.qq.com/wxa/getwxacodeunlimit?access_token='.$accessToken; $qrcode = array( 'scene' => $scene, 'width' => 200, 'page' => $page, 'auto_color' => true ); $result = request($url,true,'POST',json_encode($qrcode)); $errcode = json_decode($result,true)['errcode']; $errmsg = json_decode($result,true)['errmsg']; if($errcode) return array('status'=>0,'info'=>$errmsg); $res = file_put_contents($savePath,$result); // 将获取到的二维码图片流保存成图片文件 if($res===false) return array('status'=>0,'info'=>'生成二维码失败'); return array('status'=>1,'info'=>$fileUrl); //返回本地图片地址 }
関連する推奨事項:
以上がPHPでWeChat QRコードを生成する例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。