fix(支付): 修复微信支付预下单获取openid时未按最新授权倒序排序导致appid和openid不匹配的缺陷
这个提交包含在:
41
tests/UserOauthPayOpenidTest.php
普通文件
41
tests/UserOauthPayOpenidTest.php
普通文件
@@ -0,0 +1,41 @@
|
||||
<?php
|
||||
define('ROOT_PATH', __DIR__ . '/../');
|
||||
define('APP_PATH', ROOT_PATH . 'application/');
|
||||
define('ADDON_PATH', ROOT_PATH . 'addons' . DIRECTORY_SEPARATOR);
|
||||
define('DS', DIRECTORY_SEPARATOR);
|
||||
|
||||
require ROOT_PATH . 'thinkphp/base.php';
|
||||
\think\Config::set('database', include ROOT_PATH . 'application/database.php');
|
||||
|
||||
// 注册 epay 命名空间
|
||||
$libraryDir = ADDON_PATH . 'epay' . DS . 'library' . DS;
|
||||
\think\Loader::addNamespace('Yansongda\\Pay', $libraryDir . 'v2' . DS . 'Yansongda' . DS . 'Pay' . DS);
|
||||
\think\Loader::addNamespace('Yansongda\\Supports', $libraryDir . 'v2' . DS . 'Yansongda' . DS . 'Supports' . DS);
|
||||
|
||||
// 测试用例:验证用户 24 的 openid 获取逻辑与统一下单参数匹配
|
||||
$userId = 24;
|
||||
$platform = 'wxMiniProgram';
|
||||
|
||||
// 测试:按 id desc 排序获取最新的 openid
|
||||
$oauth = \addons\shopro\model\UserOauth::where([
|
||||
'user_id' => $userId,
|
||||
'provider' => 'Wechat',
|
||||
'platform' => $platform
|
||||
])->order('id', 'desc')->find();
|
||||
|
||||
echo "【测试】查询用户 {$userId} 的最新授权记录:\n";
|
||||
if (!$oauth) {
|
||||
echo "FAIL: 未找到用户授权记录\n";
|
||||
exit(1);
|
||||
}
|
||||
|
||||
echo "ID: {$oauth->id}, Openid: {$oauth->openid}\n";
|
||||
|
||||
// 验证 openid 是否为当前小程序的有效 openid(以 oGsUG 开头)
|
||||
if (strpos($oauth->openid, 'oGsUG') !== 0) {
|
||||
echo "FAIL: 获取到的不是当前小程序的有效 openid (期望以 oGsUG 开头)\n";
|
||||
exit(1);
|
||||
}
|
||||
|
||||
echo "PASS: 成功获取到当前小程序匹配的有效 openid\n";
|
||||
exit(0);
|
||||
在新工单中引用
屏蔽一个用户