fix: resolve invalid session token by correctly extracting token from North API response

This commit is contained in:
2026-05-01 08:32:31 -04:00
parent b0816231d6
commit d2d53e961b
2 changed files with 18 additions and 4 deletions
@@ -53,15 +53,23 @@ class NorthCheckoutController extends Controller
])->post('https://checkout.north.com/api/sessions', [ ])->post('https://checkout.north.com/api/sessions', [
'checkoutId' => $checkoutId, 'checkoutId' => $checkoutId,
'profileId' => $profileId, 'profileId' => $profileId,
'amount' => $total_cost, 'amount' => (float)$total_cost,
]); ]);
if ($response->failed()) { if ($response->failed()) {
Log::error('North Session Creation Failed: ' . $response->body()); Log::error('North Session Creation Failed: ' . $response->status() . ' ' . $response->body());
return response()->json(['error' => 'Failed to create checkout session.'], 500); return response()->json(['error' => 'Failed to create checkout session: ' . ($response->json('message') ?? 'Unknown error')], 500);
} }
return response()->json($response->json()); $data = $response->json();
$token = $data['token'] ?? $data['sessionToken'] ?? null;
if (!$token) {
Log::error('North Session Token Missing in Response: ' . json_encode($data));
return response()->json(['error' => 'Session token not found in API response.'], 500);
}
return response()->json(['sessionToken' => $token]);
} }
public function verify(Request $request, $bidder_id) public function verify(Request $request, $bidder_id)
+6
View File
@@ -47,6 +47,7 @@
}); });
const data = await response.json(); const data = await response.json();
console.log('North Session Response:', data);
if (data.error) { if (data.error) {
document.getElementById('checkout-container').innerHTML = `<div class="alert alert-danger">${data.error}</div>`; document.getElementById('checkout-container').innerHTML = `<div class="alert alert-danger">${data.error}</div>`;
@@ -54,9 +55,14 @@
} }
const sessionToken = data.sessionToken; const sessionToken = data.sessionToken;
if (!sessionToken) {
document.getElementById('checkout-container').innerHTML = `<div class="alert alert-danger">Invalid session token received from server.</div>`;
return;
}
// Initialize North Checkout // Initialize North Checkout
// The global 'checkout' object is provided by checkout.js // The global 'checkout' object is provided by checkout.js
console.log('Mounting checkout with token:', sessionToken);
await checkout.mount(sessionToken, 'checkout-container'); await checkout.mount(sessionToken, 'checkout-container');
// Handle completion // Handle completion