Skip to content

Commit b4dda18

Browse files
1. 修改MiniProgram.php
1 parent fad0a98 commit b4dda18

File tree

1 file changed

+19
-11
lines changed

1 file changed

+19
-11
lines changed

src/MiniProgram.php

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ class MiniProgram
1313
private $appId = '';
1414
private $appSecret = '';
1515
private $accessToken = '';
16+
private $defaultParamInfo = array();
1617
public $accessTokenData = array();
1718

1819
const API_HOST = 'https://api.weixin.qq.com';
@@ -38,6 +39,7 @@ public function __construct($appId, $appSecret, $accessToken = '')
3839
$this->accessTokenData = $this->getAccessTokenData();
3940
$this->accessTokenData && $this->accessToken = $this->accessTokenData['access_token'];
4041
}
42+
$this->defaultParamInfo = include_once 'DefaultParamInfo.php';
4143
}
4244

4345
/**
@@ -85,17 +87,20 @@ public function jscode2Session($code)
8587
*/
8688
public function decryptData($paramArr = array())
8789
{
90+
// 扩展原参数数组
91+
$finalParamArr = Common::extendArrayData($this->defaultParamInfo[__FUNCTION__], $paramArr);
92+
8893
// 初始化返回数据
8994
$res['code'] = -100;
9095
$res['msg'] = '操作失败';
9196
$res['data'] = array();
9297

9398
// 1.获取openid、session_key(若存在session_key,则默认理解为session_key未过期,直接使用其进行解密)
94-
if (isset($paramArr['sessionKey']) && $paramArr['sessionKey']) {
95-
$openId = isset($paramArr['openId']) ? $paramArr['openId'] : '';
96-
$sessionKey = $paramArr['sessionKey'];
99+
if ($finalParamArr['sessionKey']) {
100+
$openId = $finalParamArr['openId'];
101+
$sessionKey = $finalParamArr['sessionKey'];
97102
} else {
98-
$sessionData = $this->jscode2Session($paramArr['code']);
103+
$sessionData = $this->jscode2Session($finalParamArr['code']);
99104
if (isset($sessionData['errcode'])) {
100105
$res['code'] = -101;
101106
$res['msg'] = Common::getErrorMsg($sessionData['errcode']);
@@ -106,8 +111,8 @@ public function decryptData($paramArr = array())
106111
}
107112

108113
// 2.计算签名并与传入签名进行校验
109-
$newSignature = sha1($paramArr['rawData'] . $sessionKey);
110-
if ($newSignature !== $paramArr['signature']) {
114+
$newSignature = sha1($finalParamArr['rawData'] . $sessionKey);
115+
if ($newSignature !== $finalParamArr['signature']) {
111116
$res['code'] = -102;
112117
$res['msg'] = '签名不匹配';
113118
return $res;
@@ -116,7 +121,7 @@ public function decryptData($paramArr = array())
116121
// 3.使用sessionKey解密加密数据包
117122
include_once "wxBizDataCrypt/wxBizDataCrypt.php";
118123
$pc = new \WXBizDataCrypt($this->appId, $sessionKey);
119-
$errCode = $pc->decryptData($paramArr['encryptedData'], $paramArr['iv'], $data);
124+
$errCode = $pc->decryptData($finalParamArr['encryptedData'], $finalParamArr['iv'], $data);
120125
if (!empty($errCode)) {
121126
$res['code'] = -103;
122127
$res['msg'] = Common::getErrorMsg($errCode);
@@ -125,7 +130,7 @@ public function decryptData($paramArr = array())
125130

126131
// 4.生成3rd_session
127132
$data = json_decode($data, true);
128-
$session3rd = Common::getNonce();
133+
$session3rd = Common::isWin() === true ? Common::getNonce() : Common::getNonceByURandom();
129134

130135
// 5.返回相关数据
131136
$res['code'] = 100;
@@ -144,11 +149,12 @@ public function decryptData($paramArr = array())
144149
*/
145150
public function createWXAQRCode($postParamArr = array())
146151
{
152+
$finalParamArr = Common::extendArrayData($this->defaultParamInfo[__FUNCTION__], $postParamArr);
147153
$urlParamArr = array(
148154
'access_token'=>$this->accessToken
149155
);
150156
$url = self::API_HOST . self::WXAQRCODE_PATH . http_build_query($urlParamArr);
151-
$res = Common::httpRequest($url, json_encode($postParamArr));
157+
$res = Common::httpRequest($url, json_encode($finalParamArr));
152158
return $res;
153159
}
154160

@@ -159,11 +165,12 @@ public function createWXAQRCode($postParamArr = array())
159165
*/
160166
public function getWXACode($postParamArr = array())
161167
{
168+
$finalParamArr = Common::extendArrayData($this->defaultParamInfo[__FUNCTION__], $postParamArr);
162169
$urlParamArr = array(
163170
'access_token'=>$this->accessToken
164171
);
165172
$url = self::API_HOST . self::WXACODE_PATH . http_build_query($urlParamArr);
166-
$res = Common::httpRequest($url, json_encode($postParamArr));
173+
$res = Common::httpRequest($url, json_encode($finalParamArr));
167174
return $res;
168175
}
169176

@@ -174,11 +181,12 @@ public function getWXACode($postParamArr = array())
174181
*/
175182
public function getWxacodeUnlimit($postParamArr = array())
176183
{
184+
$finalParamArr = Common::extendArrayData($this->defaultParamInfo[__FUNCTION__], $postParamArr);
177185
$urlParamArr = array(
178186
'access_token'=>$this->accessToken
179187
);
180188
$url = self::API_HOST . self::WXACODE_UNLIMIT_PATH . http_build_query($urlParamArr);
181-
$res = Common::httpRequest($url, json_encode($postParamArr));
189+
$res = Common::httpRequest($url, json_encode($finalParamArr));
182190
return $res;
183191
}
184192
}

0 commit comments

Comments
 (0)