1
0
mirror of https://github.com/invoiceninja/invoiceninja.git synced 2024-11-11 05:32:39 +01:00
invoiceninja/vendor/php-payments/lib/payment_validator.php
2014-04-13 09:38:15 +03:00

118 lines
2.6 KiB
PHP
Executable File

<?php
class Payment_Validator
{
public function __construct($payments)
{
$this->utility = $payments['utility'];
$this->payments_config = $payments['payments_config'];
$this->lang = $payments['lang'];
}
/**
* Make sure params are as expected
*
* @param array array of params to check to ensure proper formatting
* @param array array of required params
* @return mixed Will return TRUE if all pass. Will return an object if a param is bad.
*/
public static function validate($method, $params, $required_params)
{
//Append _method to method name
$method = $method."_method";
//We'll need this later
$lang = Payment_Utility::load('lang', 'english/response_details');
//Ensure no invalid methods were passed
include_once('payment_methods/'.$method.'.php');
$m = new $method;
$method_params = $m->get_params();
$bad_params = array();
foreach($params as $k=>$v)
{
if(!isset($method_params[$k]))
{
$bad_params[] = "$k " . $lang['is_not_a_param'];
}
}
if(count($bad_params) > 0)
{
return Payment_Response::instance()->local_response(
'failure',
'invalid_input',
implode(', ', $bad_params)
);
}
//Ensure no required params are missing
$missing = array();
foreach($required_params as $k=>$v)
{
if(!array_key_exists($v, $params) OR empty($params[$v]) OR is_null($params[$v]) OR $params[$v] == ' ')
{
$key = 'missing_'.$v;
if(isset($lang[$key]))
{
$missing[] = $lang[$key];
}
else
{
error_log("$key does not exist in response message language file.");
$missing[] = "$v is required but was not provided";
}
}
}
if(count($missing) > 0)
{
return Payment_Response::instance()->local_response(
'failure',
'required_params_missing',
implode(', ', $missing)
);
}
//Ensure dates match MMYYYY format
if(array_key_exists('cc_exp', $params))
{
$exp_date = $params['cc_exp'];
$m1 = $exp_date[0];
if(strlen($exp_date) != 6 OR !is_numeric($exp_date) OR $m1 > 1)
{
return Payment_Response::instance()->local_response(
'failure',
'invalid_input',
'invalid_date_format'
);
}
}
//Ensure billing period is submitted in normalized form
if(array_key_exists('billing_period', $params))
{
$accepted_billing_period = array(
'Month',
'Day',
'Week',
'Year'
);
if(!in_array($params['billing_period'], $accepted_billing_period))
{
return Payment_Response::instance()->local_response(
'failure',
'invalid_input',
'invalid_billing_period'
);
}
}
return TRUE;
}
}