giftcon_dev/app/Http/Controllers/Web/Order/OrderCheckoutController.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('/'),
]);
}
}