85 lines
2.8 KiB
PHP
85 lines
2.8 KiB
PHP
<?php
|
|
|
|
namespace App\Http\Controllers\Web\Order;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use App\Services\Order\OrderCheckoutService;
|
|
use Illuminate\Http\Request;
|
|
|
|
final class OrderCheckoutController extends Controller
|
|
{
|
|
public function __construct(
|
|
private readonly OrderCheckoutService $service,
|
|
) {}
|
|
|
|
public function __invoke(Request $request)
|
|
{
|
|
// 1) 로그인 체크 (legacy session)
|
|
$sess = (array) session('_sess', []);
|
|
$logged = ($sess['_login_'] ?? false) === true;
|
|
|
|
if (!$logged) {
|
|
return view('web.payments.danal_finish_top', [
|
|
'ok' => false,
|
|
'message' => '로그인 후 이용해 주세요.',
|
|
'redirect' => route('web.auth.login'),
|
|
]);
|
|
}
|
|
|
|
$memNo = (int)($sess['_mno'] ?? 0);
|
|
$stat3 = (int)($sess['_mstat_3'] ?? 0);
|
|
|
|
if ($memNo <= 0) {
|
|
return view('web.payments.danal_finish_top', [
|
|
'ok' => false,
|
|
'message' => '로그인 정보가 올바르지 않습니다.',
|
|
'redirect' => route('web.auth.login'),
|
|
]);
|
|
}
|
|
|
|
if ($stat3 !== 1) {
|
|
return view('web.payments.danal_finish_top', [
|
|
'ok' => false,
|
|
'message' => '관리자 확인이 필요합니다.',
|
|
'redirect' => url('/'),
|
|
]);
|
|
}
|
|
|
|
// 2) 파라미터
|
|
$skuId = (int)$request->query('sku_id', 0);
|
|
$qty = (int)$request->query('qty', 0);
|
|
$payId = (int)$request->query('pay_id', 0);
|
|
|
|
if ($skuId <= 0 || $qty <= 0 || $payId <= 0) {
|
|
return view('web.payments.danal_finish_top', [
|
|
'ok' => false,
|
|
'message' => '요청 값이 올바르지 않습니다.',
|
|
'redirect' => url('/'),
|
|
]);
|
|
}
|
|
|
|
// 3) 주문 생성 + 결제 시작
|
|
$out = $this->service->checkoutAndStart($memNo, $skuId, $qty, $payId, $request);
|
|
|
|
if (($out['ok'] ?? false) && ($out['view'] ?? '') === 'autosubmit') {
|
|
return view('web.payments.danal_autosubmit', [
|
|
'action' => $out['action'],
|
|
'fields' => $out['fields'],
|
|
'acceptCharset' => $out['acceptCharset'] ?? 'EUC-KR',
|
|
|
|
'attemptToken' => $out['token'] ?? ($out['meta']['token'] ?? ''),
|
|
'oid' => $out['oid'] ?? ($out['meta']['oid'] ?? ''),
|
|
'method' => $out['method'] ?? ($out['meta']['method'] ?? ''),
|
|
'phoneMode' => $out['meta']['phone_mode'] ?? '',
|
|
]);
|
|
}
|
|
|
|
|
|
return view('web.payments.danal_finish_top', [
|
|
'ok' => false,
|
|
'message' => $out['message'] ?? '처리 실패',
|
|
'redirect' => $out['redirect'] ?? url('/'),
|
|
]);
|
|
}
|
|
}
|