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
|
|
@ -24,8 +24,8 @@
|
|||
|
||||
// Module general information
|
||||
$module_title = "billing";
|
||||
$module_version = "3.2";
|
||||
$db_version = 2;
|
||||
$module_version = "3.3";
|
||||
$db_version = 3;
|
||||
$module_required = FALSE;
|
||||
// Module description
|
||||
$module_description = "Billing storefront / provisioning integration. Public ordering runs as a standalone site; panel pages provide provisioning and admin order management.";
|
||||
|
|
@ -322,4 +322,28 @@ $install_queries[2] = array(
|
|||
) ENGINE=MyISAM DEFAULT CHARSET=utf8mb4;"
|
||||
);
|
||||
|
||||
// -----------------------------------------------------------------------
|
||||
// db_version 3 — Add billing_paypal_webhook_events table for idempotent
|
||||
// webhook event processing.
|
||||
// -----------------------------------------------------------------------
|
||||
$install_queries[3] = array(
|
||||
"CREATE TABLE IF NOT EXISTS `OGP_DB_PREFIXbilling_paypal_webhook_events` (
|
||||
`id` INT(11) NOT NULL AUTO_INCREMENT,
|
||||
`paypal_event_id` VARCHAR(100) NOT NULL DEFAULT '',
|
||||
`event_type` VARCHAR(100) NOT NULL DEFAULT '',
|
||||
`resource_id` VARCHAR(100) NOT NULL DEFAULT '',
|
||||
`order_id` VARCHAR(100) NOT NULL DEFAULT '',
|
||||
`capture_id` VARCHAR(100) NOT NULL DEFAULT '',
|
||||
`billing_order_id` INT(11) NOT NULL DEFAULT 0,
|
||||
`processing_status` VARCHAR(50) NOT NULL DEFAULT 'received',
|
||||
`raw_json` MEDIUMTEXT NULL,
|
||||
`created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP,
|
||||
`processed_at` DATETIME NULL,
|
||||
PRIMARY KEY (`id`),
|
||||
UNIQUE KEY `uidx_paypal_event_id` (`paypal_event_id`),
|
||||
KEY `idx_event_type` (`event_type`),
|
||||
KEY `idx_billing_order_id` (`billing_order_id`)
|
||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;"
|
||||
);
|
||||
|
||||
?>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue