query('SyunoRecvNum'); if (empty($syunoRecvNum)) { return response()->json([ 'error' => [ 'code' => 'INVALID_REQUEST', 'message' => 'SyunoRecvNumは必須です。', ] ], 400); } if (!preg_match('/^[a-zA-Z0-9]{1,20}$/', (string) $syunoRecvNum)) { return response()->json([ 'error' => [ 'code' => 'INVALID_REQUEST', 'message' => 'SyunoRecvNumの形式が不正です。', ] ], 400); } $transaction = PaymentTransaction::where('syuno_recv_num', $syunoRecvNum)->first(); if (!$transaction) { return response()->json([ 'error' => [ 'code' => 'DATA_NOT_FOUND', 'message' => '指定された受付番号のデータが見つかりません。', ] ], 404); } // レスポンス構築 $response = [ 'SyunoRecvNum' => $transaction->syuno_recv_num, 'status' => $transaction->status, 'amount' => $transaction->amount, 'payLimit' => $transaction->pay_limit ? $transaction->pay_limit->toIso8601String() : null, ]; // 入金済みの場合は追加情報 if ($transaction->status === '入金済み') { $response['paidDateTime'] = $transaction->paid_datetime ? $transaction->paid_datetime->toIso8601String() : null; $response['storeCode'] = $transaction->store_code; $response['storeName'] = $this->getStoreName($transaction->store_code); } return response()->json($response); } /** * 店舗コードから店舗名を取得 */ private function getStoreName(?string $storeCode): ?string { if (empty($storeCode)) { return null; } return config('wellnet.store_codes.' . $storeCode); } }