186 lines
4.6 KiB
Markdown
186 lines
4.6 KiB
Markdown
# PayPal Payment Flow - Quick Debug Reference
|
|
|
|
## Quick Commands
|
|
|
|
### View recent errors:
|
|
```bash
|
|
cd /home/runner/work/GSP/GSP/modules/billing/logs
|
|
|
|
# Last 50 lines of create order log
|
|
tail -50 paypal_create_order.log
|
|
|
|
# Last 50 lines of capture log
|
|
tail -50 paypal_capture.log
|
|
|
|
# Last 50 lines of client errors
|
|
tail -50 client_errors.log
|
|
```
|
|
|
|
### Watch logs live:
|
|
```bash
|
|
# In terminal, run:
|
|
tail -f /home/runner/work/GSP/GSP/modules/billing/logs/paypal_*.log
|
|
```
|
|
|
|
### Search for specific error:
|
|
```bash
|
|
# Find all OAuth errors
|
|
grep "OAUTH.*ERROR" paypal_create_order.log paypal_capture.log
|
|
|
|
# Find database errors
|
|
grep "DB.*FAILED" paypal_capture.log
|
|
|
|
# Find a specific request by ID
|
|
grep "req_12345" paypal_create_order.log
|
|
```
|
|
|
|
## Common Error Patterns
|
|
|
|
### ❌ "JSON error" or "unable to handle this request"
|
|
|
|
**What to check:**
|
|
1. Browser console (F12 → Console tab) for JavaScript errors
|
|
2. `client_errors.log` for client-side issues
|
|
3. `paypal_create_order.log` for `JSON_DECODE_ERROR`
|
|
|
|
**Quick fix:**
|
|
- Check if cart items are valid
|
|
- Verify amount calculations are correct
|
|
- Look for PHP errors that might corrupt JSON output
|
|
|
|
---
|
|
|
|
### ❌ HTTP ERROR 500
|
|
|
|
**What to check:**
|
|
1. `paypal_create_order.log` for `CREATE_ORDER_HTTP_ERROR`
|
|
2. `paypal_capture.log` for `CAPTURE_HTTP_ERROR`
|
|
3. Look for `OAUTH.*ERROR` entries
|
|
|
|
**Quick fix:**
|
|
- Verify PayPal credentials are correct
|
|
- Check PayPal API status: https://www.paypal-status.com/
|
|
- Verify sandbox vs live mode settings match credentials
|
|
|
|
---
|
|
|
|
### ❌ Payment seems successful but no order created
|
|
|
|
**What to check:**
|
|
1. `paypal_capture.log` for `DB_CONNECTION_FAILED`
|
|
2. Look for `UPDATE_INVOICES_FAILED`
|
|
3. Check `ORDER_CREATE_FAILED`
|
|
|
|
**Quick fix:**
|
|
- Verify database connection settings
|
|
- Check if `ogp_billing_invoices` table exists
|
|
- Verify `ogp_billing_orders` table exists
|
|
- Check table permissions
|
|
|
|
---
|
|
|
|
### ❌ Intermittent failures (works sometimes, fails sometimes)
|
|
|
|
**What to check:**
|
|
1. Compare successful vs failed requests in logs
|
|
2. Look for timeout errors (`CURL.*ERROR`)
|
|
3. Check for database connection pool exhaustion
|
|
|
|
**Quick fix:**
|
|
- Check server load/resources
|
|
- Verify network connectivity to PayPal API
|
|
- Check for rate limiting
|
|
|
|
## Log File Locations
|
|
|
|
```
|
|
/home/runner/work/GSP/GSP/modules/billing/logs/
|
|
├── paypal_create_order.log # Order creation (when clicking "Pay")
|
|
├── paypal_capture.log # Payment capture (after PayPal approval)
|
|
└── client_errors.log # JavaScript/browser errors
|
|
```
|
|
|
|
## Request ID Format
|
|
|
|
- Create order: `req_XXXXXXXXXXXXX`
|
|
- Capture order: `cap_XXXXXXXXXXXXX`
|
|
|
|
When user sees an error with `(Ref: req_abc123)`, search logs for that ID.
|
|
|
|
## Important Log Labels
|
|
|
|
### Create Order Flow:
|
|
- `REQUEST_START` → `RAW_INPUT` → `PARSED_INPUT`
|
|
- `OAUTH_REQUEST_START` → `OAUTH_SUCCESS`
|
|
- `CREATE_ORDER_REQUEST_START` → `CREATE_ORDER_SUCCESS`
|
|
|
|
### Capture Order Flow:
|
|
- `REQUEST_START` → `PARSED_INPUT`
|
|
- `OAUTH_SUCCESS` → `CAPTURE_SUCCESS`
|
|
- `DB_CONNECTED` → `PROCESSING_INVOICES`
|
|
- `ORDER_CREATED_SUCCESS` or `ORDER_EXTENDED_SUCCESS`
|
|
|
|
### Error Labels:
|
|
- `*_ERROR` - Something went wrong
|
|
- `*_FAILED` - Operation failed
|
|
- `INVALID_*` - Invalid input/data
|
|
|
|
## Browser Console Debugging
|
|
|
|
1. Open cart page
|
|
2. Press F12 to open DevTools
|
|
3. Go to Console tab
|
|
4. Click "Pay with PayPal"
|
|
5. Watch for:
|
|
- Red error messages
|
|
- `PayPal Error:` logs
|
|
- Network errors (check Network tab)
|
|
|
|
## Testing Checklist
|
|
|
|
When testing payments:
|
|
|
|
- [ ] Check browser console for errors
|
|
- [ ] Note the Ref ID if error occurs
|
|
- [ ] Check `paypal_create_order.log` for the request
|
|
- [ ] Check `paypal_capture.log` if got past order creation
|
|
- [ ] Verify database tables exist and have data
|
|
- [ ] Check PayPal sandbox account activity
|
|
|
|
## Need More Help?
|
|
|
|
See full guide: `PAYPAL_DEBUGGING_GUIDE.md`
|
|
|
|
## Key Configuration Files
|
|
|
|
- PayPal credentials: `api/create_order.php` and `api/capture_order.php`
|
|
- Lines 5-6: `$client_id` and `$client_secret`
|
|
- Line 4: `$sandbox` (true/false)
|
|
|
|
- Database config: `includes/config.inc.php`
|
|
- `$db_host`, `$db_user`, `$db_pass`, `$db_name`
|
|
- `$table_prefix`
|
|
|
|
## Status Checklist for Issues
|
|
|
|
When user reports error:
|
|
|
|
1. **Get details:**
|
|
- [ ] What error message did they see?
|
|
- [ ] What was the Ref ID (if shown)?
|
|
- [ ] Can they reproduce it?
|
|
|
|
2. **Check logs:**
|
|
- [ ] Find the request by Ref ID
|
|
- [ ] Look for ERROR or FAILED labels
|
|
- [ ] Check surrounding context (before/after)
|
|
|
|
3. **Verify config:**
|
|
- [ ] PayPal credentials valid?
|
|
- [ ] Database connection working?
|
|
- [ ] Correct sandbox/live mode?
|
|
|
|
4. **Test:**
|
|
- [ ] Try creating test order
|
|
- [ ] Watch logs in real-time
|
|
- [ ] Check database for created records
|