feat: add PayPal sandbox/live credentials, webhook endpoint, and admin diagnostics
- config.inc.php: new sandbox/live credential structure with paypal_mode, separate sandbox/live client_id, client_secret, webhook_id, and webhook_path - config.example.php: updated to match new structure - config_loader.php: adds defaults and backward compat mapping from old $paypal_sandbox/$paypal_client_id variables; adds gsp_paypal_* helper functions - PayPalGateway.php: fromConfig() uses gsp_paypal_* helpers with fallback - cart.php: uses gsp_paypal_get_client_id()/gsp_paypal_is_sandbox() helpers - webhook.php: updated to use gsp_paypal_* helpers for credentials/API base - paypal/webhook.php: new full-featured webhook receiver with signature verification, idempotency log, event processing, provisioning trigger - admin_config.php: expanded to separate sandbox/live fields, computed webhook URL, diagnostics panel showing credential status and recent webhook events - module.php: bumped to v3.3/db_version 3, adds billing_paypal_webhook_events table Agent-Logs-Url: https://github.com/GameServerPanel/GSP/sessions/f974e469-8562-41df-ba37-bc340f5a154c Co-authored-by: iaretechnician <2749183+iaretechnician@users.noreply.github.com>
This commit is contained in:
parent
0f4c4b3634
commit
41a812fdd6
9 changed files with 1351 additions and 109 deletions
|
|
@ -20,13 +20,19 @@ class PayPalGateway implements PaymentGatewayInterface
|
|||
|
||||
/**
|
||||
* Build a PayPalGateway instance from global config variables.
|
||||
* Expects $paypal_client_id, $paypal_client_secret, $paypal_sandbox in scope.
|
||||
* Prefers the new gsp_paypal_* helper functions; falls back to legacy globals.
|
||||
*/
|
||||
public static function fromConfig(): self
|
||||
{
|
||||
$clientId = $GLOBALS['paypal_client_id'] ?? '';
|
||||
$clientSecret = $GLOBALS['paypal_client_secret'] ?? '';
|
||||
$sandbox = (bool)($GLOBALS['paypal_sandbox'] ?? true);
|
||||
if (function_exists('gsp_paypal_get_client_id')) {
|
||||
$clientId = gsp_paypal_get_client_id();
|
||||
$clientSecret = gsp_paypal_get_client_secret();
|
||||
$sandbox = gsp_paypal_is_sandbox();
|
||||
} else {
|
||||
$clientId = $GLOBALS['paypal_client_id'] ?? '';
|
||||
$clientSecret = $GLOBALS['paypal_client_secret'] ?? '';
|
||||
$sandbox = (bool)($GLOBALS['paypal_sandbox'] ?? true);
|
||||
}
|
||||
return new self($clientId, $clientSecret, $sandbox);
|
||||
}
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue