|
|
@@ -15,6 +15,7 @@ use biz\shop\classes\ShopClass;
|
|
|
use common\components\dict;
|
|
|
use common\components\imgUtil;
|
|
|
use common\components\jwt;
|
|
|
+use common\components\noticeUtil;
|
|
|
use common\components\stringUtil;
|
|
|
use Yii;
|
|
|
use common\components\util;
|
|
|
@@ -25,7 +26,7 @@ class UserController extends BaseController
|
|
|
{
|
|
|
|
|
|
//二维码收款使用 ssh
|
|
|
- public $guestAccess = ['discount', 'mini-mobile', 'create', 'account-login', 'current-info'];
|
|
|
+ public $guestAccess = ['discount', 'mini-mobile', 'get-mini-mobile', 'create', 'account-login', 'current-info'];
|
|
|
|
|
|
//清空登录信息 ssh 20250215
|
|
|
public function actionClearLogin()
|
|
|
@@ -274,10 +275,11 @@ class UserController extends BaseController
|
|
|
$pc = new \WXBizDataCrypt($appId, $sessionKey);
|
|
|
$errCode = $pc->decryptData($encryptedData, $iv, $result);
|
|
|
if ($errCode != 0) {
|
|
|
- Yii::info($result . ' ' . $errCode);
|
|
|
- util::fail('获取用户信息失败');
|
|
|
+ // 记录详细日志以便排查。常见错误:-41003(AES解密失败/sessionKey过期)
|
|
|
+ Yii::info("小程序获取用户信息解密失败:errCode={$errCode}, miniOpenId={$miniOpenId}, appId={$appId}");
|
|
|
+ util::fail("获取用户信息失败(code:{$errCode})");
|
|
|
}
|
|
|
- Yii::info('小程序获取用户信息:' . $result);
|
|
|
+ Yii::info('小程序获取用户信息成功:' . $result);
|
|
|
$originalInfo = Json::decode($result);
|
|
|
util::success($originalInfo);
|
|
|
}
|
|
|
@@ -304,7 +306,10 @@ class UserController extends BaseController
|
|
|
$pc = new \WXBizDataCrypt($appId, $sessionKey);
|
|
|
$errCode = $pc->decryptData($encryptedData, $iv, $result);
|
|
|
if ($errCode != 0) {
|
|
|
- util::fail('解密失败');
|
|
|
+ // 记录详细日志以便排查。常见错误:-41003(AES解密失败/sessionKey过期)
|
|
|
+ Yii::info("小程序手机号解密失败:errCode={$errCode}, miniOpenId={$miniOpenId}, appId={$appId}");
|
|
|
+ noticeUtil::push("小程序手机号解密失败:errCode={$errCode}, miniOpenId={$miniOpenId}, appId={$appId}", '15280215347');
|
|
|
+ util::fail("解密失败(code:{$errCode}),请尝试重新登录或重试");
|
|
|
}
|
|
|
$arr = Json::decode($result);
|
|
|
$mobile = $arr['purePhoneNumber'] ?? '';
|
|
|
@@ -314,6 +319,35 @@ class UserController extends BaseController
|
|
|
util::success(['mobile' => $mobile]);
|
|
|
}
|
|
|
|
|
|
+ //小程序获取手机号新接口 ssh 2025.07.28
|
|
|
+ //接口文档:https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/user-info/phone-number/getPhoneNumber.html
|
|
|
+ public function actionGetMiniMobile()
|
|
|
+ {
|
|
|
+ $post = Yii::$app->request->post();
|
|
|
+ $code = $post['code'] ?? '';
|
|
|
+ if (empty($code)) {
|
|
|
+ util::fail('参数错误:缺少code');
|
|
|
+ }
|
|
|
+
|
|
|
+ // 使用 miniUtil 封装好的方法获取手机号 (ptStyle=3 表示商城端)
|
|
|
+ $merchant = WxOpenClass::getMallWxMiniBase();
|
|
|
+ $res = \common\components\miniUtil::getPhoneNumber($merchant, $code, 3);
|
|
|
+
|
|
|
+ if (isset($res['errcode']) && $res['errcode'] == 0) {
|
|
|
+ $mobile = $res['phone_info']['purePhoneNumber'] ?? '';
|
|
|
+ if (empty($mobile)) {
|
|
|
+ util::fail('获取手机号内容为空');
|
|
|
+ }
|
|
|
+ util::success(['mobile' => $mobile]);
|
|
|
+ } else {
|
|
|
+ $errMsg = $res['errmsg'] ?? '获取手机号失败';
|
|
|
+ $errCode = $res['errcode'] ?? -1;
|
|
|
+ Yii::info("小程序新接口获取手机号失败:code={$errCode}, msg={$errMsg}");
|
|
|
+ noticeUtil::push("小程序新接口获取手机号失败:code={$errCode}, msg={$errMsg}", '15280215347');
|
|
|
+ util::fail("获取手机号失败:{$errMsg}({$errCode})");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
//密码修改
|
|
|
public function actionPassword()
|
|
|
{
|