Exemple #1
0
 public static function notVoided($trans, $id)
 {
     $dbTrans = PaycardLib::paycard_db();
     $today = date('Ymd');
     $sql = "SELECT transID \n                FROM PaycardTransactions \n                WHERE dateID=" . $today . "\n                    AND empNo=" . $trans[0] . "\n                    AND registerNo=" . $trans[1] . "\n                    AND transNo=" . $trans[2] . "\n                    AND transID=" . $id . "\n                    AND transType='VOID'\n                    AND xResultCode=1";
     // @deprecated table 5May14
     if (!$dbTrans->table_exists('PaycardTransactions')) {
         $sql = "SELECT transID FROM efsnetRequestMod WHERE " . $dbTrans->identifier_escape('date') . "=" . $today . " AND cashierNo=" . $trans[0] . " AND laneNo=" . $trans[1] . " AND transNo=" . $trans[2] . " AND transID=" . $id . " AND mode='void' AND xResponseCode=0";
     }
     $search = PaycardLib::paycard_db_query($sql, $dbTrans);
     $voided = PaycardLib::paycard_db_num_rows($search);
     if ($voided > 0) {
         PaycardLib::paycard_reset();
         return PaycardLib::paycard_errBox(PaycardLib::PAYCARD_TYPE_CREDIT, "Unable to Void", "Card transaction already voided", "[clear] to cancel");
     } else {
         return true;
     }
 }
Exemple #2
0
 private function send_void()
 {
     // initialize
     $dbTrans = PaycardLib::paycard_db();
     if (!$dbTrans) {
         PaycardLib::paycard_reset();
         return $this->setErrorMsg(PaycardLib::PAYCARD_ERR_NOSEND);
     }
     // prepare data for the void request
     $today = date('Ymd');
     // numeric date only, it goes in an 'int' field as part of the primary key
     $now = date('Y-m-d H:i:s');
     // new timestamp
     $cashierNo = CoreLocal::get("CashierNo");
     $laneNo = CoreLocal::get("laneno");
     $transNo = CoreLocal::get("transno");
     $transID = CoreLocal::get("paycard_id");
     $amount = CoreLocal::get("paycard_amount");
     $amountText = number_format(abs($amount), 2, '.', '');
     $mode = 'void';
     $manual = CoreLocal::get("paycard_manual") ? 1 : 0;
     $this->trans_pan['pan'] = CoreLocal::get("paycard_PAN");
     $cardPAN = $this->trans_pan['pan'];
     $cardPANmasked = PaycardLib::paycard_maskPAN($cardPAN, 0, 4);
     $cardIssuer = CoreLocal::get("paycard_issuer");
     $cardExM = substr(CoreLocal::get("paycard_exp"), 0, 2);
     $cardExY = substr(CoreLocal::get("paycard_exp"), 2, 2);
     $cardName = CoreLocal::get("paycard_name");
     $refNum = $this->refnum($transID);
     $live = 1;
     $this->voidTrans = $transID;
     $this->voidRef = CoreLocal::get("paycard_trans");
     $temp = explode("-", $this->voidRef);
     $laneNo = $temp[1];
     $transNo = $temp[2];
     $merchantID = GOEMERCH_ID;
     $password = GOEMERCH_PASSWD;
     $gatewayID = GOEMERCH_GATEWAY_ID;
     if (CoreLocal::get("training") == 1) {
         $merchantID = "1264";
         $password = "******";
         $cardPAN = "4111111111111111";
         $gatewayID = "a91c38c3-7d7f-4d29-acc7-927b4dca0dbe";
         $cardPANmasked = "xxxxxxxxxxxxTEST";
         $cardIssuer = "Visa";
         $cardName = "Just Testing";
         $nextyear = mktime(0, 0, 0, date("m"), date("d"), date("Y") + 1);
         $cardExM = date("m", $nextyear);
         $cardExY = date("y", $nextyear);
         $live = 0;
     }
     // look up the TransactionID from the original response (card number and amount should already be in session vars)
     $sql = 'SELECT refNum,
                 xTransactionID
             FROM PaycardTransactions
             WHERE dateID=' . $today . '
                 AND empNo=' . $cashierNo . '
                 AND registerNo=' . $laneNo . '
                 AND transNo=' . $transNo . '
                 AND transID=' . $transID;
     if (!$dbTrans->table_exists('PaycardTransactions')) {
         $sql = "SELECT refNum,xTransactionID FROM efsnetResponse WHERE " . $dbTrans->identifier_escape('date') . "='" . $today . "'" . " AND cashierNo=" . $cashierNo . " AND laneNo=" . $laneNo . " AND transNo=" . $transNo . " AND transID=" . $transID;
     }
     $result = PaycardLib::paycard_db_query($sql, $dbTrans);
     if (!$result || PaycardLib::paycard_db_num_rows($result) != 1) {
         PaycardLib::paycard_reset();
         return $this->setErrorMsg(PaycardLib::PAYCARD_ERR_NOSEND);
     }
     $res = PaycardLib::paycard_db_fetch_row($result);
     $TransactionID = $res['xTransactionID'];
     /**
       populate a void record in PaycardTransactions
     */
     $initQ = "INSERT INTO PaycardTransactions (\n                    dateID, empNo, registerNo, transNo, transID,\n                    previousPaycardTransactionID, processor, refNum,\n                    live, cardType, transType, amount, PAN, issuer,\n                    name, manual, requestDateTime)\n                  SELECT dateID, empNo, registerNo, transNo, transID,\n                    paycardTransactionID, processor, refNum,\n                    live, cardType, 'VOID', amount, PAN, issuer,\n                    name, manual, " . $dbTrans->now() . "\n                  FROM PaycardTransactions\n                  WHERE\n                    dateID=" . $today . "\n                    AND empNo=" . $cashierNo . "\n                    AND registerNo=" . $laneNo . "\n                    AND transNo=" . $transNo . "\n                    AND transID=" . $transID;
     $initR = $dbTrans->query($initQ);
     if ($initR) {
         $this->last_paycard_transaction_id = $dbTrans->insert_id();
     } else {
         return $this->setErrorMsg(PaycardLib::PAYCARD_ERR_NOSEND);
     }
     $xml = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>";
     $xml .= "<TRANSACTION>";
     $xml .= "<FIELDS>";
     $xml .= "<FIELD KEY=\"merchant\">{$merchantID}</FIELD>";
     if ($password != "") {
         $xml .= "<FIELD KEY=\"password\">{$password}</FIELD>";
     }
     $xml .= "<FIELD KEY=\"gateway_id\">{$gatewayID}</FIELD>";
     $xml .= "<FIELD KEY=\"operation_type\">{$mode}</FIELD>";
     $xml .= "<FIELD KEY=\"total_number_transactions\">1</FIELD>";
     $xml .= "<FIELD KEY=\"reference_number1\">{$TransactionID}</FIELD>";
     $xml .= "<FIELD KEY=\"credit_amount1\">{$amountText}</FIELD>";
     $xml .= "</FIELDS>";
     $xml .= "</TRANSACTION>";
     $this->GATEWAY = "https://secure.goemerchant.com/secure/gateway/xmlgateway.aspx";
     return $this->curlSend($xml, 'POST', True);
 }