chore(config): 微信登录配置加固 + 配置自检脚本

配置:
- manifest.json mp-weixin.appid = wx40ca4b02d4d1cb58(构建产物已自动同步)
- .env 新增 [sms] 段:mock / mock_code,手机号登录验证码改为配置驱动
  (Auth::login 不再硬编码 123456;mock=0 时返回 2010 提示接入短信)
- 服务端 .env [wechat] appid/secret 已就位并与小程序一致

加固:
- 新增 utils/wxlogin.js:微信登录单飞(防静默登录与手动登录抢同一个一次性 code)
  + 40029/40163 自动换新 code 重试一次
- Auth::wxlogin 失败时回传 wx_errcode,供客户端判断是否重试
- 登录失败自动展开手机号兜底通道

新增 tests/config_check.js:一键核对 appid 三处一致性 / 接口连通 / HTTPS 证书 / 短信开关
验证:config_check 8/8 + 163 项断言回归全通过
这个提交包含在:
linda
2026-10-28 16:25:07 +08:00
父节点 4e73c8164a
当前提交 ca998d0ef1
共有 5 个文件被更改,包括 218 次插入 和 57 次删除

查看文件

@@ -14,7 +14,9 @@ class Auth extends Base
protected $noNeedLogin = ['login', 'wxlogin'];
/**
* 手机号 + 验证码登录(验证码固定 123456,联调用;接入短信后走 Sms)
* 手机号 + 验证码登录(兜底通道)
* 验证码来源由 .env 的 [sms] 段控制:mock=1 时使用 mock_code(联调用),
* 接入真实短信后置 mock=0 并在此处改为 Sms::check($mobile, $code, 'mobilelogin')
* @ApiMethod (POST)
*/
public function login()
@@ -27,8 +29,11 @@ class Auth extends Base
if (!Validate::regex($mobile, "^1\d{10}$")) {
$this->error('手机号格式不正确');
}
if ($code !== '123456') {
$this->error('验证码不正确');
$mockOn = (int)\think\Env::get('sms.mock', 1);
$mockCode = (string)\think\Env::get('sms.mock_code', '123456');
if (!($mockOn === 1 && $mockCode !== '' && (string)$code === $mockCode)) {
$this->error('短信通道尚未接入,请联系管理员开通', ['sms_ready' => 0], 2010);
}
$user = \app\common\model\User::getByMobile($mobile);
@@ -130,7 +135,7 @@ class Auth extends Base
$wx = \app\common\library\WxLogin::jscode2session($code);
if (isset($wx['error'])) {
$this->error($wx['error']);
$this->error($wx['error'], ['wx_errcode' => isset($wx['errcode']) ? (int)$wx['errcode'] : 0]);
}
$ret = \app\common\library\WxLogin::provision(
$wx['openid'],