Rumah > pembangunan bahagian belakang > tutorial php > Laksanakan penjanaan kod QR WeChat dalam PHP

Laksanakan penjanaan kod QR WeChat dalam PHP

WBOY
Lepaskan: 2023-05-13 16:04:01
asal
1783 orang telah melayarinya

Dengan pembangunan dan pempopularan Internet mudah alih, WeChat telah menjadi bahagian yang amat diperlukan dalam kehidupan dan pekerjaan orang ramai. Untuk memenuhi keperluan pengguna, WeChat terus melancarkan fungsi baharu, yang paling penting ialah pembayaran WeChat. Untuk menggunakan pembayaran WeChat, anda mesti mempunyai fungsi penjanaan kod QR yang boleh dipercayai Artikel ini akan memperkenalkan cara menjana kod QR WeChat dalam PHP.

Pertama sekali, kami perlu menjelaskan dengan jelas bahawa terdapat dua cara untuk menjana kod QR WeChat, satu kod QR kekal dan satu lagi kod QR sementara. Kod QR kekal hanya akan menjadi tidak sah apabila pengguna secara aktif melakukan operasi Contohnya, jika kod QR kekal dipaparkan pada halaman tertentu di pusat membeli-belah, kod QR akan menjadi tidak sah hanya apabila pengguna mengimbas kod QR dan membuat. sesuatu pembelian. Kod QR sementara akan tamat tempoh dalam tempoh masa tertentu, biasanya 30 minit.

Seterusnya, kami akan menerangkan cara menjana kod QR kekal dan kod QR sementara dalam PHP.

1. Penjanaan kod QR kekal

Untuk menjana kod QR kekal, anda perlu menghubungi antara muka kod QR dalam pembayaran WeChat Berikut ialah cara menghubungi antara muka kod QR:

//引入Vendor下的自动加载文件
require_once("Vendor/autoload.php");

//设置appid、secret、商户号等信息
$appid = '';  //微信开放平台appid
$appsecret = ''; //微信开放平台appsecret
$merchant_id = '';  //商户号
$key = '';  //API密钥

//构造二维码接口调用参数
$api_url = 'https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=ACCESS_TOKEN';
$access_token = '';  //access_token需要通过调用微信开放平台的token接口获取
$expire_seconds = '';  //永久性二维码不需要该参数
$action_info = ['scene'=>['scene_id'=>1001]];  //永久性二维码的参数形式

//获取access_token
function getAccessToken()
{
    $appid = '';  //微信开放平台appid
    $appsecret = ''; //微信开放平台appsecret
    $api_url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=' . $appid . '&secret=' . $appsecret;
    $api_result = file_get_contents($api_url);
    $api_result_arr = json_decode($api_result, true);
    return $api_result_arr['access_token'];
}

$access_token = getAccessToken();

//构造请求参数
$data = array(
    'expire_seconds' => $expire_seconds,
    'action_name' => 'QR_LIMIT_SCENE',
    'action_info' => $action_info
);

$json_data = json_encode($data);

//构造请求头
$header = array(
    'Content-Type: application/json;charset=utf-8',
    'Content-Length: ' . strlen($json_data)
);

//发送POST请求
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, str_replace('ACCESS_TOKEN', $access_token, $api_url));
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $json_data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
$response = curl_exec($ch);
curl_close($ch);

//对响应数据进行处理
$json_obj = json_decode($response, true);
$ticket = $json_obj['ticket'];
$qrcode_url = 'https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=' . urlencode($ticket);
Salin selepas log masuk

2. Penjanaan kod QR sementara

Penjanaan kod QR sementara juga perlu memanggil antara muka kod QR dalam pembayaran WeChat, dan expire_seconds perlu dinyatakan dalam parameter parameter panggilan antara muka. Berikut ialah cara memanggil antara muka kod QR sementara:

//引入Vendor下的自动加载文件
require_once("Vendor/autoload.php");

//设置appid、secret、商户号等信息
$appid = '';  //微信开放平台appid
$appsecret = ''; //微信开放平台appsecret
$merchant_id = '';  //商户号
$key = '';  //API密钥

//构造二维码接口调用参数
$api_url = 'https://api.weixin.qq.com/cgi-bin/qrcode/create?access_token=ACCESS_TOKEN';
$access_token = '';  //access_token需要通过调用微信开放平台的token接口获取
$expire_seconds = 1800;  //临时性二维码的有效时间为30分钟
$action_info = ['scene'=>['scene_id'=>1001]];  //临时性二维码的参数形式

//获取access_token
function getAccessToken()
{
    $appid = '';  //微信开放平台appid
    $appsecret = ''; //微信开放平台appsecret
    $api_url = 'https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=' . $appid . '&secret=' . $appsecret;
    $api_result = file_get_contents($api_url);
    $api_result_arr = json_decode($api_result, true);
    return $api_result_arr['access_token'];
}

$access_token = getAccessToken();

//构造请求参数
$data = array(
    'expire_seconds' => $expire_seconds,
    'action_name' => 'QR_SCENE',
    'action_info' => $action_info
);

$json_data = json_encode($data);

//构造请求头
$header = array(
    'Content-Type: application/json;charset=utf-8',
    'Content-Length: ' . strlen($json_data)
);

//发送POST请求
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, str_replace('ACCESS_TOKEN', $access_token, $api_url));
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POSTFIELDS, $json_data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
$response = curl_exec($ch);
curl_close($ch);

//对响应数据进行处理
$json_obj = json_decode($response, true);
$ticket = $json_obj['ticket'];
$qrcode_url = 'https://mp.weixin.qq.com/cgi-bin/showqrcode?ticket=' . urlencode($ticket);
Salin selepas log masuk

Di atas adalah kaedah untuk menjana kod QR WeChat dalam PHP Perlu diingat bahawa dalam pembangunan sebenar, kita juga perlu menjana kod QR WeChat dalam platform pedagang. Maklumat pembayaran akaun awam dihasilkan, dan pengesahan tandatangan yang berkaitan dan pemprosesan keselamatan diperlukan untuk memastikan keselamatan dan kebolehpercayaan kod QR.

Atas ialah kandungan terperinci Laksanakan penjanaan kod QR WeChat dalam PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan