1. The PHP code is implemented as follows
/**
* 获取不限制的小程序码
* @param $accessToken
* @param $scene
* @param $page
* @param $width
* @return mixed
* @throws ServerErrorHttpException
*/
public function getUnlimitedQRCode($accessToken, $scene, $page = null, $width = 430)
{
$response = $this->httpClient->createRequest()
->setMethod('POST')
->setUrl('wxa/getwxacodeunlimit?access_token=' . $accessToken)
->setFormat(Client::FORMAT_JSON)
->setData([
'scene' => $scene,
'page' => $page,
'width' => $width,
'check_path' => false,
'env_version' => 'trial'
])
->send();
// 设置响应格式为 raw-urlencoded(二进制数据)
$response->format = Client::FORMAT_RAW_URLENCODED;
// 检查响应状态码是否等于20x
if ($response->isOk) {
// 检查业务逻辑是否成功
if (isset($response->data['errcode']) && isset($response->data['errcode'])) {
throw new ServerErrorHttpException('获取不限制的小程序码失败,errcode:' . $response->data['errcode'] . ',errmsg:' . $response->data['errmsg'], 20021);
}
} else {
throw new ServerErrorHttpException('获取不限制的小程序码失败,status_code:' . $response->statusCode, 20022);
}
return $response->content;
}
2. When the response is a non-picture buffer, the data written in the picture file is incorrect. Image cannot be opened. The final decision is made to distinguish through the response header content-type. as shown in Figure 1

application/json; encoding=utf-8
image/jpeg
/**
* 获取不限制的小程序码
* @param $accessToken
* @param $scene
* @param $page
* @param $width
* @return mixed
* @throws ServerErrorHttpException
*/
public function getUnlimitedQRCode($accessToken, $scene, $page = null, $width = 430)
{
$response = $this->httpClient->createRequest()
->setMethod('POST')
->setUrl('wxa/getwxacodeunlimit?access_token=' . $accessToken)
->setFormat(Client::FORMAT_JSON)
->setData([
'scene' => $scene,
'page' => $page,
'width' => $width,
'check_path' => false,
'env_version' => 'trial'
])
->send();
// 检查响应状态码是否等于20x
if ($response->isOk) {
$contentType = $response->getHeaders()->get('Content-Type');
if (strpos($contentType, 'image/') !== false) {
return $response->content;
} elseif (strpos($contentType, 'application/json') !== false && isset($response->data['errcode']) && isset($response->data['errcode'])) {
throw new ServerErrorHttpException('获取不限制的小程序码失败,错误码:' . $response->data['errcode'] . ',错误信息:' . $response->data['errmsg'], 20021);
} else {
// 未知响应类型
throw new ServerErrorHttpException('获取不限制的小程序码失败,未知响应类型:' . $contentType, 20023);
}
} else {
throw new ServerErrorHttpException('获取不限制的小程序码失败,HTTP 状态码:' . $response->statusCode, 20022);
}
}
3. When the response is a non-picture buffer, yii\web\serverErrorHttpException: Failed to obtain unlimited applet code, error code: 40001, error message: invalid Credential. as shown in Figure 2

{
"code": 10000,
"message": "生成微信小程序二维码成功",
"data": {
"url": "/mini-program-qr-codes/644d4a4c0fff836ec9ac17d86d0911aa.png"
}
}
yii\web\ServerErrorHttpException: 获取不限制的小程序码失败,错误码:40001,错误信息:invalid credential, access_token is invalid or not latest, could get access_token by getStableAccessToken, more details at https://mmbizurl.cn/s/JtxxFh33r rid: 67d90e17-47a89f95-26c1c8de
Need long-term technical maintenance or remote troubleshooting?
I am a PHP / Go backend engineer with 15+ years of experience, focused on existing system maintenance, bug fixing, performance optimization, server troubleshooting, WordPress maintenance, and small feature iterations.
If your project is facing any of the following issues, we can start with a small troubleshooting task first:
- ✅ PHP / Laravel / Yii2 legacy systems without active maintenance
- ✅ Go / Gin backend APIs that need troubleshooting or optimization
- ✅ Slow, broken, or unstable WordPress websites
- ✅ Nginx / MySQL / Redis / Linux server issues
- ✅ CDN / Cloudflare / DNS / HTTPS configuration problems
- ✅ Long-term remote technical support or part-time maintenance
More details: About Me & Collaboration
WeChat: 13980074657
Email: shuijingwanwq@gmail.com
Telegram: @shuijingwan
GitHub: https://github.com/shuijingwan


Leave a Reply