>  기사  >  백엔드 개발  >  PHP에서 WeChat QR 코드 생성 구현

PHP에서 WeChat QR 코드 생성 구현

WBOY
WBOY원래의
2023-05-13 16:01:541678검색

모바일 인터넷의 발전과 대중화로 인해 위챗은 사람들의 삶과 업무에 없어서는 안 될 부분이 되었습니다. 사용자의 요구를 충족하기 위해 WeChat은 계속해서 새로운 기능을 출시하고 있으며, 그 중 가장 중요한 것은 WeChat 결제입니다. 위챗 결제를 이용하기 위해서는 안정적인 QR코드 생성 기능이 있어야 합니다. 이 글에서는 PHP에서 위챗 QR코드를 생성하는 방법을 소개하겠습니다.

우선 WeChat QR 코드를 생성하는 방법에는 두 가지가 있다는 점을 분명히 해야 합니다. 하나는 영구 QR 코드이고 다른 하나는 임시 QR 코드입니다. 영구 QR 코드는 사용자가 적극적으로 작업을 수행하는 경우에만 유효하지 않게 됩니다. 예를 들어, 영구 QR 코드가 쇼핑몰의 특정 페이지에 표시되면 사용자가 QR 코드를 스캔하여 실행하는 경우에만 QR 코드가 무효화됩니다. 구매. 임시 QR 코드는 일정 시간(보통 30분) 내에 만료됩니다.

다음으로 PHP에서 영구 QR코드와 임시 QR코드를 생성하는 방법을 설명하겠습니다.

1. 영구 QR 코드 생성

영구 QR 코드를 생성하려면 WeChat 결제에서 QR 코드 인터페이스를 호출해야 합니다. 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);

2. 임시 2 생성. QR code

임시 QR 코드를 생성하려면 WeChat 결제에서도 QR 코드 인터페이스를 호출해야 하며, 인터페이스 호출 매개변수에 만료_초 매개변수를 지정해야 합니다. 임시 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 = 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);

위는 PHP에서 WeChat QR 코드를 생성하는 방법입니다. 실제 개발에서는 판매자 플랫폼에서 공식 계정 결제도 생성해야 한다는 점에 유의하세요. , QR코드의 안전성과 신뢰성을 확보하기 위해서는 관련 서명 검증 및 보안 처리가 필요합니다.

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

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