授权确认优化
This commit is contained in:
@@ -148,7 +148,9 @@ class TransferAuthorizationService
|
||||
];
|
||||
}
|
||||
if ($queryState === self::STATE_WAIT_USER_CONFIRM) {
|
||||
//待确认单有效期内必须复用,禁止再申请(计入 5 笔上限)
|
||||
//待确认单有效期内必须复用同一单号(禁止换号,避免把同一 openid 的待确认单堆到 5 笔上限)。
|
||||
//本地若无可用 package(该状态是本次查单才发现、或记录里的 package 丢失),
|
||||
//返回 null 交给外层用同一单号重新“发起授权”,微信会幂等返回该单号及其 package_info
|
||||
return self::pendingPackageResponse($wechat, $query, $record ?: self::getByUserId($userId));
|
||||
}
|
||||
//CLOSED 走换号申请
|
||||
@@ -224,16 +226,19 @@ class TransferAuthorizationService
|
||||
}
|
||||
|
||||
/**
|
||||
* 待确认:优先用查询返回的 package,否则用本地上次申请保存的 package
|
||||
* 待确认:优先用查询返回的 package,其次用本地上次申请保存的 package。
|
||||
* 两者都没有时返回 null,由调用方用同一单号重新发起授权取回 package,
|
||||
* 否则会出现“提示待确认但无法拉起授权页”的死路。
|
||||
* @return array|null
|
||||
*/
|
||||
private static function pendingPackageResponse(EasyWeChatService $wechat, array $query, $record): array
|
||||
private static function pendingPackageResponse(EasyWeChatService $wechat, array $query, $record)
|
||||
{
|
||||
$package = (string)($query['package_info'] ?? '');
|
||||
if ($package === '' && $record) {
|
||||
$package = (string)($record->package_info ?? '');
|
||||
}
|
||||
if ($package === '') {
|
||||
throw new \Exception('授权申请待用户确认,请在微信中完成授权,勿重复发起');
|
||||
return null;
|
||||
}
|
||||
|
||||
return self::pendingAuthResponse($wechat, self::STATE_WAIT_USER_CONFIRM, $package);
|
||||
|
||||
Reference in New Issue
Block a user