Exemplo n.º 1
0
 public static function getTenderLine($trans, $id)
 {
     $dbTrans = PaycardLib::paycard_db();
     $today = date('Ymd');
     // look up the transaction tender line-item
     $sql = "SELECT trans_type,\n                    trans_subtype,\n                    trans_status,\n                    voided\n                FROM localtemptrans \n                WHERE trans_id=" . $id;
     $search = PaycardLib::paycard_db_query($sql, $dbTrans);
     $num = PaycardLib::paycard_db_num_rows($search);
     if ($num < 1) {
         $sql = "SELECT * FROM localtranstoday WHERE trans_id=" . $id . " and emp_no=" . $trans[0] . " and register_no=" . $trans[1] . " and trans_no=" . $trans[2] . " AND datetime >= " . $dbTrans->curdate();
         $search = PaycardLib::paycard_db_query($sql, $dbTrans);
         $num = PaycardLib::paycard_db_num_rows($search);
         if ($num != 1) {
             PaycardLib::paycard_reset();
             return array(false, PaycardLib::paycard_errBox(PaycardLib::PAYCARD_TYPE_CREDIT, "Internal Error", "Transaction item not found, unable to void", "[clear] to cancel"));
         }
     } elseif ($num > 1) {
         PaycardLib::paycard_reset();
         return array(false, PaycardLib::paycard_errBox(PaycardLib::PAYCARD_TYPE_CREDIT, "Internal Error", "Transaction item not distinct, unable to void", "[clear] to cancel"));
     }
     $lineitem = PaycardLib::paycard_db_fetch_row($search);
     return array(true, $lineitem);
 }
Exemplo n.º 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);
 }