Ejemplo n.º 1
0
 /**
  * Send a status enquiry of the transaction to the gateway server
  *
  * @access public
  * @param $id The ID of the order
  */
 function inquiryTransaction($id)
 {
     global $osC_Database;
     $Qorder = $osC_Database->query('select transaction_return_value from :table_orders_transactions_history where orders_id = :orders_id and transaction_code = 1 order by date_added limit 1');
     $Qorder->bindTable(':table_orders_transactions_history', TABLE_ORDERS_TRANSACTIONS_HISTORY);
     $Qorder->bindInt(':orders_id', $id);
     $Qorder->execute();
     if ($Qorder->numberOfRows() === 1) {
         $osC_XML = new osC_XML($Qorder->value('transaction_return_value'));
         $result_array = $osC_XML->toArray();
         $post_string = '<?xml version="1.0" encoding="UTF-8"?>' . "\n" . '<WIRECARD_BXML xmlns:xsi="http://www.w3.org/1999/XMLSchema-instance" xsi:noNamespaceSchemaLocation="wirecard.xsd">' . "\n" . '  <W_REQUEST>' . "\n" . '    <W_JOB>' . "\n" . '      <JobID>Job 1</JobID>' . "\n" . '      <BusinessCaseSignature>' . MODULE_PAYMENT_WIRECARD_CC_BUSINESS_SIGNATURE . '</BusinessCaseSignature>' . "\n" . '      <FNC_CC_QUERY>' . "\n" . '        <FunctionID>Query 1</FunctionID>' . "\n" . '        <CC_TRANSACTION mode="' . MODULE_PAYMENT_WIRECARD_CC_TRANSACTION_MODE . '">' . "\n" . '          <TransactionID>' . $result_array['WIRECARD_BXML']['W_RESPONSE']['W_JOB']['FNC_CC_PREAUTHORIZATION']['CC_TRANSACTION']['TransactionID'] . '</TransactionID>' . "\n" . '          <GuWID>' . $result_array['WIRECARD_BXML']['W_RESPONSE']['W_JOB']['FNC_CC_PREAUTHORIZATION']['CC_TRANSACTION']['PROCESSING_STATUS']['GuWID'] . '</GuWID>' . "\n" . '        </CC_TRANSACTION>' . "\n" . '      </FNC_CC_QUERY>' . "\n" . '    </W_JOB>' . "\n" . '  </W_REQUEST>' . "\n" . '</WIRECARD_BXML>';
         $result = osC_Payment::sendTransactionToGateway($this->_gateway_url, $post_string, array('Content-type: text/xml'));
         if (empty($result) === false) {
             $osC_XML = new osC_XML($result);
             $result_array = $osC_XML->toArray();
             $transaction_return_status = '0';
             if (isset($result_array['WIRECARD_BXML']['W_RESPONSE']['W_JOB']['FNC_CC_QUERY']['CC_TRANSACTION']['PROCESSING_STATUS']['FunctionResult'])) {
                 if ($result_array['WIRECARD_BXML']['W_RESPONSE']['W_JOB']['FNC_CC_QUERY']['CC_TRANSACTION']['PROCESSING_STATUS']['FunctionResult'] == 'ACK') {
                     $transaction_return_status = '1';
                 }
             }
             $Qtransaction = $osC_Database->query('insert into :table_orders_transactions_history (orders_id, transaction_code, transaction_return_value, transaction_return_status, date_added) values (:orders_id, :transaction_code, :transaction_return_value, :transaction_return_status, now())');
             $Qtransaction->bindTable(':table_orders_transactions_history', TABLE_ORDERS_TRANSACTIONS_HISTORY);
             $Qtransaction->bindInt(':orders_id', $id);
             $Qtransaction->bindInt(':transaction_code', 4);
             $Qtransaction->bindValue(':transaction_return_value', $result);
             $Qtransaction->bindInt(':transaction_return_status', $transaction_return_status);
             $Qtransaction->execute();
         }
     }
 }
 /**
  * Send a status enquiry of the transaction to the gateway server
  *
  * @access public
  * @param $id The ID of the order
  */
 function inquiryTransaction($id)
 {
     global $osC_Database;
     $Qorder = $osC_Database->query('select transaction_return_value from :table_orders_transactions_history where orders_id = :orders_id and transaction_code = 1 order by date_added limit 1');
     $Qorder->bindTable(':table_orders_transactions_history', TABLE_ORDERS_TRANSACTIONS_HISTORY);
     $Qorder->bindInt(':orders_id', $id);
     $Qorder->execute();
     if ($Qorder->numberOfRows() === 1) {
         $osC_XML = new osC_XML($Qorder->value('transaction_return_value'));
         $result_array = $osC_XML->toArray();
         $params = array('PSPID' => MODULE_PAYMENT_OGONE_DIRECTLINK_CC_MERCHANT_ID, 'PSWD' => MODULE_PAYMENT_OGONE_DIRECTLINK_CC_PASSWORD, 'PAYID' => $result_array['ncresponse attr']['PAYID']);
         if (osc_empty(MODULE_PAYMENT_OGONE_DIRECTLINK_CC_USER_ID) === false) {
             $params['USERID'] = MODULE_PAYMENT_OGONE_DIRECTLINK_CC_USER_ID;
         }
         $post_string = '';
         foreach ($params as $key => $value) {
             $post_string .= $key . '=' . urlencode($value) . '&';
         }
         $post_string = substr($post_string, 0, -1);
         $result = osC_Payment::sendTransactionToGateway($this->_inquiry_gateway_url, $post_string);
         if (empty($result) === false) {
             $osC_XML = new osC_XML($result);
             $result_array = $osC_XML->toArray();
             switch ($result_array['ncresponse attr']['STATUS']) {
                 case '':
                 case '0':
                     $transaction_return_status = '0';
                     break;
                 default:
                     $transaction_return_status = '1';
                     break;
             }
             $Qtransaction = $osC_Database->query('insert into :table_orders_transactions_history (orders_id, transaction_code, transaction_return_value, transaction_return_status, date_added) values (:orders_id, :transaction_code, :transaction_return_value, :transaction_return_status, now())');
             $Qtransaction->bindTable(':table_orders_transactions_history', TABLE_ORDERS_TRANSACTIONS_HISTORY);
             $Qtransaction->bindInt(':orders_id', $id);
             $Qtransaction->bindInt(':transaction_code', 4);
             $Qtransaction->bindValue(':transaction_return_value', $result);
             $Qtransaction->bindInt(':transaction_return_status', $transaction_return_status);
             $Qtransaction->execute();
         }
     }
 }
Ejemplo n.º 3
0
 /**
  * Cancels the transaction at the gateway server
  *
  * @access public
  * @param $id The ID of the order
  */
 function cancelTransaction($id)
 {
     global $osC_Database;
     $Qorder = $osC_Database->query('select transaction_return_value from :table_orders_transactions_history where orders_id = :orders_id and transaction_code = 1 order by date_added limit 1');
     $Qorder->bindTable(':table_orders_transactions_history', TABLE_ORDERS_TRANSACTIONS_HISTORY);
     $Qorder->bindInt(':orders_id', $id);
     $Qorder->execute();
     if ($Qorder->numberOfRows() === 1) {
         $inquiry_regs = preg_split("/,(?=(?:[^\"]*\"[^\"]*\")*(?![^\"]*\"))/", $Qorder->value('transaction_return_value'));
         foreach ($inquiry_regs as $key => $value) {
             $inquiry_regs[$key] = substr($value, 1, -1);
             // remove double quotes
         }
         $params = array('x_version' => '3.1', 'x_delim_data' => 'TRUE', 'x_delim_char' => ',', 'x_encap_char' => '"', 'x_type' => 'VOID', 'x_login' => MODULE_PAYMENT_AUTHORIZENET_CC_LOGIN_ID, 'x_tran_key' => MODULE_PAYMENT_AUTHORIZENET_CC_TRANSACTION_KEY, 'x_trans_id' => $inquiry_regs[6], 'x_amount' => $inquiry_regs[9]);
         $post_string = '';
         foreach ($params as $key => $value) {
             $post_string .= $key . '=' . urlencode(trim($value)) . '&';
         }
         $post_string = substr($post_string, 0, -1);
         $result = osC_Payment::sendTransactionToGateway($this->_gateway_url, $post_string);
         if (empty($result) === false) {
             $regs = preg_split("/,(?=(?:[^\"]*\"[^\"]*\")*(?![^\"]*\"))/", $result);
             foreach ($regs as $key => $value) {
                 $regs[$key] = substr($value, 1, -1);
                 // remove double quotes
             }
             $transaction_return_status = $regs[0];
             if ($transaction_return_status == '1') {
                 if (!osc_empty(MODULE_PAYMENT_AUTHORIZENET_CC_MD5_HASH)) {
                     if ($regs[37] != strtoupper(md5(MODULE_PAYMENT_AUTHORIZENET_CC_MD5_HASH . MODULE_PAYMENT_AUTHORIZENET_CC_LOGIN_ID . $inquiry_regs[6] . $inquiry_regs[9]))) {
                         $transaction_return_status = '0';
                     }
                 }
             } else {
                 $transaction_return_status = '0';
             }
             $Qtransaction = $osC_Database->query('insert into :table_orders_transactions_history (orders_id, transaction_code, transaction_return_value, transaction_return_status, date_added) values (:orders_id, :transaction_code, :transaction_return_value, :transaction_return_status, now())');
             $Qtransaction->bindTable(':table_orders_transactions_history', TABLE_ORDERS_TRANSACTIONS_HISTORY);
             $Qtransaction->bindInt(':orders_id', $id);
             $Qtransaction->bindInt(':transaction_code', 2);
             $Qtransaction->bindValue(':transaction_return_value', $result);
             $Qtransaction->bindInt(':transaction_return_status', $transaction_return_status);
             $Qtransaction->execute();
         }
     }
 }