public static function theProcessor() { if (!isset(self::$theProcessor)) { self::$theProcessor = new self(Samurai::$processorToken); } return self::$theProcessor; }
function samurai_capture($params) { global $CONFIG; $setup = Samurai::setup(array('sandbox' => $params['testMode'], 'merchantKey' => $params['merchantKey'], 'merchantPassword' => $params['merchantPass'], 'processorToken' => $params['procToken'])); $clientid = $params['clientdetails']['userid']; $gatewayid = $params['gatewayid']; $companyName = $CONFIG['CompanyName']; $payMethod = Samurai_PaymentMethod::find($gatewayid); if (!$payMethod->hasErrors()) { $processor = Samurai_Processor::theProcessor(); $purchase = $processor->purchase($payMethod->token, $params['amount'], array('billing_reference' => $params['invoiceid'], 'customer_reference' => $clientid, 'description' => $params['description'], 'descriptor_name' => $companyName, 'custom' => 'Samurai WHMCS Module')); if ($purchase->isSuccess()) { $refid = $purchase->attributes['reference_id']; return array('status' => 'success', 'transid' => $refid); } else { $allerrors = "This transaction could not be processed:\n"; foreach ($purchase->errors as $context => $errors) { foreach ($errors as $error) { $allerrors .= $error->description . "\n"; } } return array('status' => 'error', 'rawdata' => $allerrors); } } else { $allerrors = "This transaction could not be processed:\n"; foreach ($payMethod->errors as $context => $errors) { foreach ($errors as $error) { $allerrors .= $error->description . "\n"; } } return array('status' => 'error', 'rawdata' => $allerrors); } }