private function send_auth() { // initialize $dbTrans = Database::tDataConnect(); if (!$dbTrans) { return $this->setErrorMsg(PaycardLib::PAYCARD_ERR_NOSEND); // internal error, nothing sent (ok to retry) } $request = new PaycardGiftRequest($this->valutecIdentifier(CoreLocal::get('paycard_id'))); $program = 'Gift'; // valutec also has 'Loyalty' cards which store arbitrary point values $mode = ""; $logged_mode = $mode; $authMethod = ""; switch (CoreLocal::get("paycard_mode")) { case PaycardLib::PAYCARD_MODE_AUTH: $mode = $amount < 0 ? 'refund' : 'tender'; $logged_mode = $amount < 0 ? 'Return' : 'Sale'; $authMethod = $amount < 0 ? 'AddValue' : 'Sale'; break; case PaycardLib::PAYCARD_MODE_ADDVALUE: $mode = 'addvalue'; $logged_mode = 'Reload'; $authMethod = 'AddValue'; break; case PaycardLib::PAYCARD_MODE_ACTIVATE: $mode = 'activate'; $logged_mode = 'Issue'; $authMethod = 'ActivateCard'; break; default: return $this->setErrorMsg(PaycardLib::PAYCARD_ERR_NOSEND); } $termID = $this->getTermID(); $cardPAN = $this->getPAN(); $cardTr2 = $this->getTrack2(); $request->setPAN($cardPAN); $request->setIssuer('Valutec'); $request->setProcessor('Valutec'); $request->setMode($logged_mode); if ($cardTr2) { $request->setSent(0, 0, 0, 1); } else { $request->setSent(1, 0, 0, 0); } try { $request->saveRequest(); } catch (Exception $ex) { return $this->setErrorMsg(PaycardLib::PAYCARD_ERR_NOSEND); // internal error, nothing sent (ok to retry) } $authFields = array('ProgramType' => $program, 'CardNumber' => $cardTr2 ? $cardTr2 : $cardPAN, 'Amount' => $request->formattedAmount(), 'ServerID' => $request->cashierNo, 'Identifier' => $request->refNum); $this->GATEWAY = "https://www.valutec.net/customers/transactions/valutec.asmx/"; $getData = urlencode($authMethod) . "?"; $getData .= "TerminalID=" . urlencode($termID); foreach ($authFields as $field => $value) { $getData .= "&" . urlencode($field) . "=" . urlencode($value); } $this->last_request = $request; return $this->curlSend($getData, 'GET'); }