get('merchants', []); // Backfill: if pending_onboarding has connected entries with merchant_id, ensure they exist in merchants.json $pending = $storage->get('pending_onboarding', []); $changed = false; foreach ($pending as $trackId => $entry) { if (!is_array($entry)) continue; $schoolName = $entry['school'] ?? null; $mid = $entry['merchant_id'] ?? null; $status = $entry['status'] ?? null; if ($schoolName && $mid && strtolower((string)$status) === 'connected') { if (!isset($merchants[$schoolName]) || empty($merchants[$schoolName]['merchant_id'])) { $merchants[$schoolName] = [ 'merchant_id' => $mid, 'tracking_id' => $trackId, 'connected_at' => $entry['connected_at'] ?? time(), ]; $changed = true; } } } if ($changed) { $storage->set('merchants', $merchants); } ?> School Lunch PayPal Demo

School Lunch Payments (Demo)

Connect a School's PayPal (Merchant Onboarding)

Pending Onboarding

$entry) { if (!is_array($entry)) continue; $status = $entry['status'] ?? null; if ($status === 'incomplete_onboarding') { $incompleteList[$trackId] = $entry; } elseif (empty($entry['merchant_id'])) { $pendingList[$trackId] = $entry; } } ?>

âš ī¸ Incomplete Onboarding

The following merchants started but did NOT complete PayPal onboarding. They need to complete the signup process at PayPal.

$entry): ?>
School Status Note Last Update
❌ Incomplete

Sometimes PayPal takes a short time to propagate onboarding. Click Sync to resolve merchant IDs.

🔄 Sync Now

$entry): ?>
School Tracking ID Partner Referral Created

This uses PayPal Partner Referrals to onboard merchants and store their merchantId for routing payments.

After connecting, you'll be redirected back here.

Docs

Sync completed. Updated record(s).

Partner diagnostics

✅ Onboarding completed and merchant saved.

âš ī¸ Onboarding Incomplete: The merchant started the PayPal signup process but did not complete it. Please finish the entire PayPal business account setup to get your merchant ID. You can try connecting again.

â„šī¸ Onboarding Pending: Your merchant ID is not available yet. This might take a few moments after completing PayPal signup. Try clicking "Sync Now" in a minute or refresh this page.

Payment captured successfully. Order (status: )

Connected Schools

No schools connected yet.

$info): ?>
SchoolMerchant IDActions