75 lines
1.5 KiB
PHP
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);
|
|
} |