paystack/helpers/paystack_security_helper.php
2025-01-19 12:18:55 +00:00

75 lines
1.5 KiB
PHP

<?php
defined('BASEPATH') or exit('No direct script access allowed');
/**
* Verify Paystack webhook signature
*/
function verify_paystack_webhook_signature($payload, $signature)
{
$secret_key = get_option('paystack_webhook_secret');
$calculated_signature = hash_hmac('sha512', $payload, $secret_key);
return hash_equals($calculated_signature, $signature);
}
/**
* Validate Paystack API response
*/
function validate_paystack_api_response($response)
{
if (!is_object($response)) {
return [
'valid' => false,
'message' => 'Invalid response format'
];
}
if (!isset($response->status) || $response->status !== true) {
return [
'valid' => false,
'message' => isset($response->message) ? $response->message : 'Invalid response status'
];
}
return [
'valid' => true,
'data' => $response->data
];
}
/**
* Sanitize API keys
*/
function sanitize_paystack_keys($key)
{
return preg_replace('/[^a-zA-Z0-9_]/', '', $key);
}
/**
* Validate amount
*/
function validate_paystack_amount($amount)
{
return is_numeric($amount) && $amount > 0;
}
/**
* Encrypt sensitive data
*/
function encrypt_paystack_data($data)
{
$CI = &get_instance();
$CI->load->library('encryption');
return $CI->encryption->encrypt($data);
}
/**
* Decrypt sensitive data
*/
function decrypt_paystack_data($data)
{
$CI = &get_instance();
$CI->load->library('encryption');
return $CI->encryption->decrypt($data);
}