<?php
/*
 * stripe_event_customer_c.php — Customer event handler
 *
 * Handled event types ($event_json->type):
 *   customer.created
 *   customer.deleted
 *   customer.updated
 */

    require_once 'stripe_database.php';
    require_once "KLogger.php";
    
    $dbObject = new MySQLDB;
    $myLogger = new KLogger(STRIPE_LOG_FILE_CUSTOMER, KLogger::DEBUG);
    require_once STRIPE_INIT_LOCATION;
        
\Stripe\Stripe::setApiKey(STRIPE_SECRET_KEY);

$handled=false;
// Retrieve the request's body and parse it as JSON
$body       = @file_get_contents('php://input');
$sig_header = $_SERVER['HTTP_STRIPE_SIGNATURE'] ?? '';

try {
    $event_json = \Stripe\Webhook::constructEvent($body, $sig_header, STRIPE_WEBHOOK_SECRET_CUSTOMER);
} catch (\UnexpectedValueException $e) {
    $myLogger->logDebug("Rejected request: invalid payload");
    http_response_code(400);
    exit;
} catch (\Stripe\Exception\SignatureVerificationException $e) {
    $myLogger->logDebug("Rejected request: invalid signature");
    http_response_code(400);
    exit;
}
http_response_code(200);

$myLogger->logDebug("  event : ".$event_json->type);    
//$myLogger->logDebug(" event : ".print_r($event_json,true));    

if ($event_json->type=='customer.created') {
    $handled=true;
    $StripeCustomerID = $event_json->data->object->id;
    
    $TenantID = $dbObject->getTenantIDFromStripeID($StripeCustomerID);
    if (isset($TenantID)) {
        $dbObject->logUserEvent("Created Stripe Customer account, ".$StripeCustomerID, $TenantID);
    }
    $myLogger->logDebug("  event : ".$event_json->type.", customerID: ".$StripeCustomerID);    
}
if ($event_json->type=='customer.deleted') {
    $handled=true;
    $StripeCustomerID = $event_json->data->object->id;
    
    $TenantID = $dbObject->getTenantIDFromStripeID($StripeCustomerID);
    if (isset($TenantID)) {
        $myLogger->logDebug("found tenant ID (".$TenantID.") for ".$event_json->type.", customerID: ".$StripeCustomerID);    
        $dbObject->logUserEvent("deleted Stripe Customer account, ".$StripeCustomerID, $TenantID);
    }
    $myLogger->logDebug("  event : ".$event_json->type.", customerID: ".$StripeCustomerID);    
}

if ($event_json->type=='customer.updated') {
    $handled=true;
    $StripeCustomerID = $event_json->data->object->id;

    $TenantID = $dbObject->getTenantIDFromStripeID($StripeCustomerID);
    if (isset($TenantID)) {
        $dbObject->logUserEvent("Updated Stripe Customer account, ".$StripeCustomerID, $TenantID);
    }
    $myLogger->logDebug("  event : ".$event_json->type.", customerID: ".$StripeCustomerID);    
    
}




if ($handled == false) {
    $myLogger->logDebug("  unhandled EVENT CONTENTS: ".print_r($event_json, true));
}


?>
