PHPアプレット生成マイクロチャンネル2次元コード、二次元コードは、パラメータを用いて生成することができます

マイクロ手紙がアプレットインターフェイスを作成するには、3つの次元コード、2次元コードを生成することとなっている1の正式オープンを、ヒマワリ型アプレットのコードがあり、私はPHPで二次元コードを生成するためにここにいます。

access_tokenはを取得するにはまず第一に
、それは非常に簡単でもあり、この要求を、マイクロチャネルの開発文献があるインターフェイスを要求:
APPIDとAPPSECRETを得るために、あなた自身のアプレットを作ります

https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET
。1
access_tokenは2時間だけ有効な、それが複製要求を避けるために、キャッシュされるのがベストです

建設・リクエスト・パラメータ


あなたは配列を作成し、その変数JSONにデータに変換することができます

json_encode PARAM = $(配列(「パス」=>「?ページ/インデックス/インデックスID = 123」)=> 150「幅」);
1
マイクロチャネルサーバPOST交換二次元コードにデータを送信します

完整代码
<?PHP
ヘッダ( 'コンテンツタイプ:text / htmlの;のcharset = UTF-8')。
//配置APPID、APPSECRET
$ APPID = "APPID"。
$ APPSECRET = "APPSECRET"。
//获取access_tokenは
$ access_tokenは= "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$APPID&secret=$APPSECRET"。

//缓存access_tokenは
のsession_start();
$ _SESSION [ 'access_tokenは'] = "";
$ _SESSION [ 'expires_in'] = 0;

$ access_tokenは= "";
(もし!ISSET($ _ SESSION [ 'access_tokenは'])||(ISSET($ _ SESSION [ 'expires_in'])&&時間()> $ _SESSION)[ 'expires_in'])
{

$ JSON =のHttpRequest($ access_tokenは)。
$ JSON = json_decode($のJSON、真の);
//のvar_dump($ JSON)。
$ _SESSION [ 'access_tokenは'] = $ JSON [ 'access_tokenは'];
$ _SESSION [ 'expires_in'] =時間()+ 7200。
$ access_tokenは= $ JSON [ "access_tokenは"];
}
他{

$ access_tokenは= $ _SESSION [ "access_tokenは"];
}

ビルド2次元コードのパラメータに//要求
?//パスは、小さなプログラムのパスをジャンプしてスキャンする2次元コードで、パラメータ= xxxは上述のIDの上に取ることができます
//幅は、2次元コードの幅である
//api.weixin:$のqcode =」httpsを。 qq.com/cgi-bin/wxaapp/createwxaqrcode?access_token=$ACCESS_TOKEN ";
$ PARAM = json_encode(配列("?パス"=>"ページ/インデックス/インデックスID = 123 ""幅「=> 150)) ;

// POST参数
$結果=のHttpRequest($ qcode、$ PARAM、 "POST");
//生成二维码
ますfile_put_contents( "qrcode.png"、$結果);
$ base64_image = "データ:画像/ JPEG、BASE64、"。BASE64_ENCODE($結果)。

//把请求发送到微信服务器换取二维码
関数のHttpRequest($ URL、$データ= ''、$方法= 'GET'){
$カール= curl_init();
ますcurl_setopt($カール、CURLOPT_URL、$ URL);
ますcurl_setopt($カール、CURLOPT_SSL_VERIFYPEER、0);
ますcurl_setopt($カール、CURLOPT_SSL_VERIFYHOST、0);
ますcurl_setopt($カール、CURLOPT_USERAGENT、$ _SERVER [ 'HTTP_USER_AGENT']);
ますcurl_setopt($カール、CURLOPT_FOLLOWLOCATION、1);
ますcurl_setopt($カール、CURLOPT_AUTOREFERER、1);
IF($方法== 'POST')
{
ますcurl_setopt($カール、CURLOPT_POST、1)。
もし(!$データ= '')
{
しますcurl_setopt($カール、CURLOPT_POSTFIELDS、$データ);
}
}

ますcurl_setopt($カール、CURLOPT_TIMEOUT、30);
ますcurl_setopt($カール、CURLOPT_HEADER、0);
ますcurl_setopt($カール、CURLOPT_RETURNTRANSFER、1);
$結果= curl_exec($カール)。
curl_close($カール)。
$結果を返します。
}

?>

使用法:
1、新しいqrcode.php
2に上記のコードをコピー
3、および修正APPID appsecretを
4、アクセスqrcode.php。

アプレットの2次元コードを生成するためのパラメータ

 

しかし、このインタフェースが生成されたロゴは、2次元コードをアプレット。
私たちは、単純な、アプレットが実行できていないLOGO 2次元コードを生成したいですか?
公式には方法はありませんが、普通の方法は、私たちは、サードパーティ製のインターフェイスを備えた2次元コードを生成することができます。

LOGO工程なしに、二次元コードを生成する
URL取得するために、図1に示すように、第1のデコード、アプレットだけ生成された2次元コードのデコード
従来の2次元コードによって生成されたURLにより得られたLOGO通常の2次元コードなし2、インタフェースの生成を

デコード
、JSSDKは、ここで私の復号第三者と直接インターフェイスとAPPIDとAPPKEYを適用する必要のない事実、多くのライブラリをデコード

<H2>生成无LOGO二维码</ H2>
<!DOCTYPE HTML>
<HTML>
<HEAD>
<TITLE> PHP生成微信小程序二维码</ TITLE>
<META HTTP-当量= "Content-Typeの"コンテンツ= "text / htmlの;のcharset = UTF-8">
<META NAME = "ビューポート"コンテンツ= "幅=装置幅、初期の規模= 1.0">
<スクリプトSRC = "HTTPS://cdn.bootcss。 COM / zepto / 1.0rc1 / zepto.min.js "> </ SCRIPT>
<スクリプトSRC =" hprose.min.js "> </ SCRIPT>
<スクリプトSRC =" md5.min.js "> </ SCRIPT>
</ HEAD>
<BODY>
<! -显示二维码- >
<DIV ID = "show_test"> </ div>
<divのID = "select_img"スタイル= "表示:なし;">
<input type = "ファイル" ID = "imgTest"タイプ= "ファイル" =受け入れる"GIF、.JPG、.JPEG、.pngを">
<BR/>
<IMG SRC ="" ID = "showImage" ALT = "">
</ div>
<a href="javascript:;" id="qrdecode">ロゴなし2次元コード</a>を生成しませんクリックして
、<スクリプト>

get_timestamp機能= VAR(){
VARのタイムスタンプ= 0;
タイムスタンプ= Date.parse(新新A日付()); //(秒)現在のタイムスタンプを取得する
タイムスタンプ=タイムスタンプ/ 1000;
リターンタイムスタンプ;
};

//設定ファイル、アプリケーションデコードインタフェースます:http://www.wwei.cn/、無料
のvar api_id = 'XXXXXXX'; //独自の読み込み
//独自の読み; VARのAPI_KEY = 'XXXXXXXXX'を
VaRのタイムスタンプをget_timestamp =();
VAR = hprose.Client.createクライアント( 'http://hprose.wwei.cn/qrcode.html'、[ 'qrencode'、 'qrdecode'])。

//デコード
$( "#のqrdecode")をクリックします(関数(){。
ヴァール= get_timestampタイムスタンプ();
VAR imgUrl = ''; //リモート画像
のvar imgdata = '<PHPのエコー? $ base64_image;?>'; / /ローカル画像は、復号化のために直接呼び出し公式プログラム小さな二次元コード生成
VAR署名= MD5を(タイムスタンプAPI_KEY + + + imgUrl imgdata);
client.ready(関数(QRコード){
qrcode.qrdecode(api_id、署名、タイムスタンプ、imgUrl、imgdata)
.then(関数(結果){
IF(= result.status 1。!){
アラート(result.msg);
リターン;
}

//ロゴ無しの二次元コードAPIインターフェイス生成
VAR qrcodeapi =「http://qr.liantu.com/api.php?text=を」;
// URLおよびスプライシングインタフェースと復号画像を出力
$(「show_test#」)を.htmlの( '<IMG SRC = "' + qrcodeapi result.data.raw_text + + '" />');
}、関数(E){
console.error(E);
});
}
関数(E){
コンソール.ERROR(E);
});
});
</ SCRIPT>
</ BODY>
</ HTML>

上記JSによって達成され、デコードされた画像が二次元コード生成されたアドレスのPHPと呼ばれています

<?PHPのエコー$ base64_image;?>
1
以上のローカル画像を呼び出すことで、このプログラムを使用して復号化小さな二次元コードのPHPコード生成手順の組み合わせを必要とします。

ロゴは、二次元コードを生成する必要がデコードされていない、この私は1行に1つのインターフェイスを呼び出す必要があります。

インタフェースます:http://qr.liantu.com/api.phpテキスト=?

URLはその後の二次元コードを生成することができ、スプライシング後に復号されます。


そして、ロゴなしのアプレットコード生成およびコード生成は、2次元コードを組み合わせることです。

<?PHP
ヘッダ( 'コンテンツタイプ:text / htmlの;のcharset = UTF-8')。
//配置APPID、APPSECRET
$ APPID = "APPID"。
$ APPSECRET = "APPSECRET"。
//获取access_tokenは
$ access_tokenは= "https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=$APPID&secret=$APPSECRET"。

//缓存access_tokenは
のsession_start();
$ _SESSION [ 'access_tokenは'] = "";
$ _SESSION [ 'expires_in'] = 0;

$ access_tokenは= "";
(もし!ISSET($ _ SESSION [ 'access_tokenは'])||(ISSET($ _ SESSION [ 'expires_in'])&&時間()> $ _SESSION)[ 'expires_in'])
{

$ JSON =のHttpRequest($ access_tokenは)。
$ JSON = json_decode($のJSON、真の);
//のvar_dump($ JSON)。
$ _SESSION [ 'access_tokenは'] = $ JSON [ 'access_tokenは'];
$ _SESSION [ 'expires_in'] =時間()+ 7200。
$ access_tokenは= $ JSON [ "access_tokenは"];
}
他{

$ access_tokenは= $ _SESSION [ "access_tokenは"];
}

ビルド2次元コードのパラメータに//要求
?//パスは、小さなプログラムのパスをジャンプしてスキャンする2次元コードで、パラメータ= xxxは上述のIDの上に取ることができます
//幅は、2次元コードの幅である
//api.weixin:$のqcode =」httpsを。 qq.com/cgi-bin/wxaapp/createwxaqrcode?access_token=$ACCESS_TOKEN ";
$ PARAM = json_encode(配列("?パス"=>"ページ/インデックス/インデックスID = 123 ""幅「=> 150)) ;

// POST参数
$結果=のHttpRequest($ qcode、$ PARAM、 "POST");
//生成二维码
ますfile_put_contents( "qrcode.png"、$結果);
$ base64_image = "データ:画像/ JPEG、BASE64、"。BASE64_ENCODE($結果)。

//把请求发送到微信服务器换取二维码
関数のHttpRequest($ URL、$データ= ''、$方法= 'GET'){
$カール= curl_init();
ますcurl_setopt($カール、CURLOPT_URL、$ URL);
ますcurl_setopt($カール、CURLOPT_SSL_VERIFYPEER、0);
ますcurl_setopt($カール、CURLOPT_SSL_VERIFYHOST、0);
ますcurl_setopt($カール、CURLOPT_USERAGENT、$ _SERVER [ 'HTTP_USER_AGENT']);
ますcurl_setopt($カール、CURLOPT_FOLLOWLOCATION、1);
ますcurl_setopt($カール、CURLOPT_AUTOREFERER、1);
IF($方法== 'POST')
{
ますcurl_setopt($カール、CURLOPT_POST、1)。
もし(!$データ= '')
{
しますcurl_setopt($カール、CURLOPT_POSTFIELDS、$データ);
}
}

ますcurl_setopt($カール、CURLOPT_TIMEOUT、30);
ますcurl_setopt($カール、CURLOPT_HEADER、0);
ますcurl_setopt($カール、CURLOPT_RETURNTRANSFER、1);
$結果= curl_exec($カール)。
curl_close($カール)。
$結果を返します。
}

?>

<H2>公式プログラムは、</ H2>小型2次元コードを生成します
。<! - -アプレット公式の二次元コードを生成>
<IMG SRC = "<PHPのエコー$ base64_image;> ??" />

<BR/>
<H2>生成无LOGO二维码</ H2>
<! -生成无LOGO二维码- >
<!DOCTYPE HTML>
<HTML>
<HEAD>
<TITLE> PHP生成微信小程序二维码</ TITLE>
<META HTTP-当量= "Content-Typeの"コンテンツ= "text / htmlの;のcharset = UTF-8">
<META NAME = "ビューポート"コンテンツ= "幅=装置幅、初期の規模= 1.0 ">
<スクリプトSRC =" https://cdn.bootcss.com/zepto/1.0rc1/zepto.min.js "> </ SCRIPT>
<スクリプトSRC =" hprose.min.js "> </スクリプト>
<スクリプトSRC = "md5.min.js"> </ SCRIPT>
</ HEAD>
<BODY>
の<divのid = "show_test"> <! -显示信息- > </ div>
<divのID =」select_img "スタイル= "表示:なし;">
の<input type = "ファイル" ID = "imgTestは"タイプ= "ファイル"が受け入れる="> ".pngをGIF、.JPG、.JPEG、。
<BR/>
<IMG SRC = "" ID = "showImage" ALT = "">
</ div>
<a href="javascript:;" id="qrdecode">ロゴなし2次元コード</a>を生成しませんクリックして
、<スクリプト>

get_timestamp機能= VAR(){
VARのタイムスタンプ= 0;
タイムスタンプ= Date.parse(新新A日付()); //(秒)現在のタイムスタンプを取得する
タイムスタンプ=タイムスタンプ/ 1000;
リターンタイムスタンプ;
};

//設定ファイル、アプリケーションデコードインタフェースます:http://www.wwei.cn/、無料
のvar api_id = 'XXX'; //独自の読み
= 'XXX'にするvar API_KEYを; //独自の(本当を読みます、それは露光API_KEY、または定期的に変化する)を防止するために、バックグラウンドで署名署名を完了するために推奨される
VARタイムスタンプ= get_timestampを();
VARクライアント= hprose.Client.create(「http://hprose.wwei.cn/qrcode.html」、 [ 'qrencode'、 'qrdecode' ])。

//デコード
$( "#のqrdecode")をクリックします(関数(){。
ヴァール= get_timestampタイムスタンプ();
VAR imgUrl = ''; //リモート画像
のvar imgdata = '<PHPのエコー? $ base64_image;?>'; / /ローカル画像は、復号化のために直接呼び出し公式プログラム小さな二次元コード生成
VAR署名= MD5を(タイムスタンプAPI_KEY + + + imgUrl imgdata);
client.ready(関数(QRコード){
qrcode.qrdecode(api_id、署名、タイムスタンプ、imgUrl、imgdata)
.then(関数(結果){
IF(= result.status 1。!){
アラート(result.msg);
リターン;
}

//ロゴ無しの二次元コードAPIインターフェイス生成
VAR qrcodeapi =「http://qr.liantu.com/api.php?text=を」;
// URLおよびスプライシングインタフェースと復号画像を出力
$(「show_test#」)を.htmlの( '<IMG SRC = "' + qrcodeapi result.data.raw_text + + '" />');
}、関数(E){
console.error(E);
});
}
関数(E){
コンソール.ERROR(E);
});
});
</ SCRIPT>
</ BODY>
</ HTML>

が、デコードされた2つのライブラリのJSを使用する必要

ここで直接ダウンロードします。https://pan.baidu.com/s/1UYDj_WbmCG21VPd8XtpaXA

おすすめ

転載: www.cnblogs.com/lanshu/p/11934897.html