diff --git a/app/Http/Controllers/NorthCheckoutController.php b/app/Http/Controllers/NorthCheckoutController.php index 18a6b1c..c2fb1dc 100644 --- a/app/Http/Controllers/NorthCheckoutController.php +++ b/app/Http/Controllers/NorthCheckoutController.php @@ -50,6 +50,8 @@ class NorthCheckoutController extends Controller $response = Http::withHeaders([ 'Authorization' => 'Bearer ' . $apiKey, + 'Accept' => 'application/json', + 'Content-Type' => 'application/json', ])->post('https://checkout.north.com/api/sessions', [ 'checkoutId' => $checkoutId, 'profileId' => $profileId, @@ -58,10 +60,24 @@ class NorthCheckoutController extends Controller if ($response->failed()) { Log::error('North Session Creation Failed: ' . $response->status() . ' ' . $response->body()); - return response()->json(['error' => 'Failed to create checkout session: ' . ($response->json('message') ?? 'Unknown error')], 500); + return response()->json([ + 'error' => 'Failed to create checkout session: ' . ($response->json('message') ?? 'Unknown error'), + 'status' => $response->status(), + 'body' => $response->body() + ], 500); } $data = $response->json(); + + // If json() is null but body is not empty, it might be a parsing error + if (is_null($data) && !empty($response->body())) { + Log::error('North Session Response is not JSON: ' . $response->body()); + return response()->json([ + 'error' => 'Response from North is not valid JSON.', + 'raw_body' => $response->body() + ], 500); + } + $token = $data['token'] ?? $data['sessionToken'] ?? $data['id'] ?? @@ -72,7 +88,8 @@ class NorthCheckoutController extends Controller Log::error('North Session Token Missing in Response: ' . json_encode($data)); return response()->json([ 'error' => 'Session token not found in API response.', - 'debug_response' => $data + 'debug_response' => $data, + 'raw_body' => $response->body() ], 500); } @@ -88,15 +105,20 @@ class NorthCheckoutController extends Controller } $apiKey = config('services.north.private_api_key'); + $checkoutId = config('services.north.checkout_id'); + $profileId = config('services.north.profile_id'); + $response = Http::withHeaders([ 'Authorization' => 'Bearer ' . $apiKey, - ])->get('https://checkout.north.com/api/sessions/status', [ - 'sessionToken' => $sessionToken, - ]); + 'SessionToken' => $sessionToken, + 'CheckoutId' => $checkoutId, + 'ProfileId' => $profileId, + 'Accept' => 'application/json', + ])->get('https://checkout.north.com/api/sessions/status'); if ($response->failed()) { - Log::error('North Session Verification Failed: ' . $response->body()); - return redirect('/mywinnings?bidder_number=' . $bidder->bidder_assigned_number)->with('error', 'Failed to verify payment status.'); + Log::error('North Session Verification Failed: ' . $response->status() . ' ' . $response->body()); + return redirect('/mywinnings?bidder_number=' . $bidder->bidder_assigned_number)->with('error', 'Failed to verify payment status. Status: ' . $response->status()); } $status = $response->json();