Heim  >  Artikel  >  Backend-Entwicklung  >  Implementieren Sie die WeChat-QR-Code-Generierung in PHP

Implementieren Sie die WeChat-QR-Code-Generierung in PHP

WBOY
WBOYOriginal
2023-05-13 16:01:541731Durchsuche

Mit der Entwicklung und Popularisierung des mobilen Internets ist WeChat zu einem unverzichtbaren Bestandteil des Lebens und der Arbeit der Menschen geworden. Um den Bedürfnissen der Benutzer gerecht zu werden, führt WeChat weiterhin neue Funktionen ein, von denen die WeChat-Zahlung die wichtigste ist. Um die WeChat-Zahlung nutzen zu können, müssen Sie über eine zuverlässige QR-Code-Generierungsfunktion verfügen. In diesem Artikel wird erläutert, wie Sie WeChat-QR-Code in PHP generieren.

Zunächst müssen wir klarstellen, dass es zwei Möglichkeiten gibt, WeChat-QR-Codes zu generieren: eine ist ein permanenter QR-Code und die andere ist ein temporärer QR-Code. Der permanente QR-Code wird nur dann ungültig, wenn der Benutzer aktiv einen Vorgang ausführt. Wenn beispielsweise ein permanenter QR-Code auf einer bestimmten Seite im Einkaufszentrum angezeigt wird, wird der QR-Code erst ungültig, wenn der Benutzer den QR-Code scannt und ausführt ein Kauf. Der temporäre QR-Code läuft innerhalb eines bestimmten Zeitraums ab, normalerweise 30 Minuten.

Als nächstes erklären wir, wie man in PHP permanente QR-Codes und temporäre QR-Codes generiert.

1. Generierung eines permanenten QR-Codes

Um die Generierung eines permanenten QR-Codes zu erreichen, müssen Sie die QR-Code-Schnittstelle in der WeChat-Zahlung aufrufen. Das Folgende ist der QR-Code Schnittstelle Die aufrufende Methode:

//引入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);

2. Generierung eines temporären QR-Codes

Die Generierung eines temporären QR-Codes erfordert auch den Aufruf der QR-Code-Schnittstelle in der WeChat-Zahlung und den Parameter „expire_seconds“. muss in den Schnittstellenaufrufparametern angegeben werden. So rufen Sie die temporäre QR-Code-Schnittstelle auf:

//引入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);

Das Obige ist die Methode zum Generieren des WeChat-QR-Codes in PHP. Es ist zu beachten, dass wir in der tatsächlichen Entwicklung auch eine öffentliche Kontozahlung benötigen Informationen werden auf der Plattform generiert und eine entsprechende Signaturüberprüfung und Sicherheitsverarbeitung sind erforderlich, um die Sicherheit und Zuverlässigkeit des QR-Codes zu gewährleisten.

Das obige ist der detaillierte Inhalt vonImplementieren Sie die WeChat-QR-Code-Generierung in 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