function run_transaction($txnArray, $cvdTemplate = array(), $avsTemplate = array(), $custInfo = array())
 {
     global $db, $config;
     if (is_file($config['root_dir'] . '/plugins/payment/moneris/lib/mpgclasses.php')) {
         require_once $config['root_dir'] . '/plugins/payment/moneris/lib/mpgclasses.php';
     } else {
         return;
     }
     $store_id = $this->config['store_id'];
     $api_token = $this->config['api_token'];
     $mpgTxn = new mpgTransaction($txnArray);
     if ($cvdTemplate) {
         $mpgCvdInfo = new mpgCvdInfo($cvdTemplate);
         $mpgTxn->setCvdInfo($mpgCvdInfo);
     }
     if ($avsTemplate) {
         $mpgAvsInfo = new mpgAvsInfo($avsTemplate);
         $mpgTxn->setAvsInfo($mpgAvsInfo);
     }
     if ($custInfo) {
         $mpgCustInfo = new mpgCustInfo($custInfo);
         $mpgTxn->setCustInfo($mpgCustInfo);
     }
     $mpgRequest = new mpgRequest($mpgTxn);
     $mpgHttpPost = new mpgHttpsPost($store_id, $api_token, $mpgRequest, $this->config['testing']);
     $mpgResponse = $mpgHttpPost->getMpgResponse();
     return $mpgResponse;
 }
 public function actionCreditPayment()
 {
     $customer_model = new Customer();
     $commande_model = new Commande();
     $order_totals;
     $credit_card = new CreditCard($_POST['ccNumber'], $_POST['cvdNumber'], $_POST['ccName'], $_POST['expYear'], $_POST['expMonth']);
     $customer_model->attributes = Yii::app()->user->getState('Customer');
     $commande_model->attributes = Yii::app()->user->getState('Commande');
     $order_totals = $this->getInvoiceTotals($customer_model, $commande_model);
     $city = Goodcity::model()->findByPk($commande_model->comgoodcitykey);
     if (sizeof($customer_model->search()->getData()) == 0) {
         $customer_model->bilsignupip = CHttpRequest::getUserHostAddress();
         $customer_model->save();
         $commande_model->bilkey = $customer_model->bilkey;
         $commande_model->comdebut = date("Y-m-d");
         $commande_model->save();
     } else {
         $customerTemp = $customer_model->search()->getData();
         $customer_model->bilkey = $customerTemp[0]->attributes['bilkey'];
     }
     Yii::import('ext.mail.vendors.*');
     require "mpgClasses.php";
     $store_id = 'monca70830';
     $api_token = 'bFqjQoK69Li9wve1JkUk';
     /*$store_id='store5';
       $api_token='yesguy';*/
     $typePurchase = 'purchase';
     $typeAdd = 'res_add_cc';
     $cust_id = $customer_model->bilkey;
     $phone = $customer_model['bilphone1'];
     $email = $customer_model['bilemail'];
     $note = "Mailbox in {$city->goodcity} for {$commande_model->comperiod}";
     $order_id = 'MailNetwork-' . date("dmy-G:i:s");
     $amount = str_replace(',', '', $order_totals['total']);
     $pan = $credit_card['cardNumber'];
     $expiry_date = substr($credit_card['expYear'], 2) . $credit_card['expMonth'];
     $crypt = '7';
     $dynamic_descriptor = 'MailingNetwork';
     $status_check = 'false';
     $txnArray = array('type' => $typePurchase, 'order_id' => $order_id, 'cust_id' => $cust_id, 'amount' => $amount, 'pan' => $pan, 'expdate' => $expiry_date, 'crypt_type' => $crypt, 'dynamic_descriptor' => $dynamic_descriptor);
     $cvd_indicator = '1';
     $cvd_value = $credit_card['cardCVD'];
     $cvdTemplate = array('cvd_indicator' => $cvd_indicator, 'cvd_value' => $cvd_value);
     $mpgCvdInfo = new mpgCvdInfo($cvdTemplate);
     $mpgAvsInfo = null;
     $mpgTxn = new mpgTransaction($txnArray);
     $mpgTxn->setCvdInfo($mpgCvdInfo);
     $mpgTxn->setAvsInfo($mpgAvsInfo);
     $mpgRequest = new mpgRequest($mpgTxn);
     $mpgHttpPost = new mpgHttpsPost($store_id, $api_token, $mpgRequest);
     $mpgResponse = $mpgHttpPost->getMpgResponse();
     if ($mpgResponse->getComplete()) {
         if ($mpgResponse->getResponseCode() > 0 && $mpgResponse->getResponseCode() <= 49) {
             $auth_code = $mpgResponse->getAuthCode();
             //Add card to vault if first purchase worked
             $txnArray = array('type' => $typeAdd, 'order_id' => $order_id, 'cust_id' => $cust_id, 'amount' => $amount, 'phone' => $phone, 'email' => $email, 'note' => $note, 'pan' => $pan, 'expdate' => $expiry_date, 'crypt_type' => $crypt, 'dynamic_descriptor' => $dynamic_descriptor);
             $cvd_indicator = '1';
             $cvd_value = $credit_card['cardCVD'];
             $cvdTemplate = array('cvd_indicator' => $cvd_indicator, 'cvd_value' => $cvd_value);
             $mpgCvdInfo = null;
             $mpgAvsInfo = null;
             $mpgTxn = new mpgTransaction($txnArray);
             $mpgTxn->setCvdInfo($mpgCvdInfo);
             $mpgTxn->setAvsInfo($mpgAvsInfo);
             $mpgRequest = new mpgRequest($mpgTxn);
             $mpgHttpPost = new mpgHttpsPost($store_id, $api_token, $mpgRequest);
             $mpgResponse = $mpgHttpPost->getMpgResponse();
             //Redirect to receipt after adding card
             $city = Goodcity::model()->findByPk($commande_model->comgoodcitykey);
             $this->render('application/2-orderform', array('goodcity' => $city, 'thanks' => true, 'payment_type' => "credit_card", 'payment_method' => "email", 'order_totals' => $order_totals, 'customer_model' => $customer_model, 'commande_model' => $commande_model, 'auth_code' => $auth_code));
             $this->sendEmailConfirmation($customer_model, $city, $commande_model, $auth_code, $order_totals);
         } else {
             $this->redirect(array('user/order', 'transactionError' => true));
         }
     } else {
         $this->redirect(array('user/order', 'transactionError' => true));
     }
 }
Example #3
0
 /**
  *
  * @return HTML
  */
 function _process()
 {
     $data = JRequest::get('post');
     $order = JTable::getInstance('Orders', 'TiendaTable');
     $order->load($data['order_id']);
     $items = $order->getItems();
     $orderpayment_id = $data['orderpayment_id'];
     $orderpayment_amount = $data['orderpayment_amount'];
     $amount = $data['orderpayment_amount'];
     /************************ Request Variables ***************************/
     $store_id = $this->_store_id;
     $api_token = $this->_api_token;
     /************************** Recur Variables *****************************/
     $is_recurring = $order->isRecurring();
     // Check recurring items are present or not
     if ($is_recurring) {
         $vars->cmd = '_cart';
         $vars->mixed_cart = true;
         // Adjust the orderpayment amount since it's a mixed cart
         // first orderpayment is just the non-recurring items total
         // then upon return, ask user to checkout again for recurring items
         $recurAmount = $order->recurring_trial ? $order->recurring_trial_price : $order->recurring_amount;
         $recurInterval = $order->recurring_trial ? $order->recurring_trial_period_interval : $order->recurring_period_interval;
         // '10';
         $numRecurs = recurring_payments;
         //'4';
         $recurUnit = $order->recurring_trial ? $order->recurring_trial_period_unit : $order->recurring_period_unit;
         // (day | week | month)
         $orderpayment->orderpayment_amount = $orderpayment->orderpayment_amount - $recurAmount;
         $orderpayment->save();
         $amount = $orderpayment->orderpayment_amount;
         $startNow = 'true';
         $startDate = date("Y/m/d");
         // '2006/11/30'; //yyyy/mm/dd
         /****************************** Recur Array **************************/
         $recurArray = array('recur_unit' => $recurUnit, 'start_date' => $startDate, 'num_recurs' => $numRecurs, 'start_now' => $startNow, 'period' => $recurInterval, 'recur_amount' => $recurAmount);
         /****************************** Recur Object **************************/
         $mpgRecur = new mpgRecur($recurArray);
     }
     /****************** Transactional Variables ************************/
     $type = 'purchase';
     // genrate the unique Order Id to preserve the payment Id also
     $orderid = 'ord-' . $orderpayment_id . '-' . date("dmy-G:i:s");
     //Check decimal (.) exist or not
     $temp_amount = explode('.', $amount);
     if (count($temp_amount) <= 1) {
         $amount = $amount . ".0";
     }
     $cust_id = JFactory::getUser()->id;
     $pan = $data['cardnum'];
     // '4242424242424242';
     $expiry_date = $data['cardexp'];
     // YYMM, so 0812 = December 2008
     $crypt = '7';
     // SSL-enabled merchant
     $commcard_invoice = '';
     $commcard_tax_amount = '';
     /******************* Customer Information Variables ********************/
     $instructions = '';
     $billing = $this->_getBillingAddress($data);
     /************************** AVS Variables *****************************/
     $avs_street_number = intval($billing['address']);
     $avs_street_name = $billing['address'];
     $avs_zipcode = $billing['postal_code'];
     /************************** CVD Variables *****************************/
     $cvd_indicator = '1';
     // yes, we're using CVD
     $cvd_value = $data['cardcvv'];
     /********************** AVS Associative Array *************************/
     $avsTemplate = array('avs_street_number' => $avs_street_number, 'avs_street_name' => $avs_street_name, 'avs_zipcode' => $avs_zipcode);
     /********************** CVD Associative Array *************************/
     $cvdTemplate = array('cvd_indicator' => $cvd_indicator, 'cvd_value' => $cvd_value);
     /************************** AVS Object ********************************/
     $mpgAvsInfo = new mpgAvsInfo($avsTemplate);
     /************************** CVD Object ********************************/
     $mpgCvdInfo = new mpgCvdInfo($cvdTemplate);
     /******************** Customer Information Object *********************/
     $mpgCustInfo = new mpgCustInfo();
     /********************** Set Customer Information **********************/
     $mpgCustInfo->setBilling($billing);
     $shipping = $this->_getShippingAddress($data);
     $mpgCustInfo->setShipping($shipping);
     $email = JFactory::getUser()->email;
     $mpgCustInfo->setEmail($email);
     $mpgCustInfo->setInstructions($instructions);
     /*********************** Set Line Item Information *********************/
     foreach ($items as $itemObject) {
         $items_temp[0] = array('name' => $itemObject->orderitem_name, 'quantity' => $itemObject->orderitem_quantity, 'product_code' => $itemObject->orderitem_name, 'extended_amount' => $itemObject->orderitem_price);
         $mpgCustInfo->setItems($items_temp[0]);
     }
     /***************** Transactional Associative Array ********************/
     $txnArray = array('type' => $type, 'order_id' => $orderid, 'cust_id' => $cust_id, 'amount' => $amount, 'pan' => $pan, 'expdate' => $expiry_date, 'crypt_type' => $crypt, 'commcard_invoice' => '', 'commcard_tax_amount' => '');
     /********************** Transaction Object ****************************/
     $mpgTxn = new mpgTransaction($txnArray);
     /******************** Set Customer Information ************************/
     $mpgTxn->setCustInfo($mpgCustInfo);
     /************************ Set AVS and CVD *****************************/
     $mpgTxn->setAvsInfo($mpgAvsInfo);
     $mpgTxn->setCvdInfo($mpgCvdInfo);
     /************************* Request Object *****************************/
     $mpgRequest = new mpgRequest($mpgTxn);
     /************************ HTTPS Post Object ***************************/
     $mpgHttpPost = new mpgHttpsPost($store_id, $api_token, $mpgRequest);
     /****************8********** Response *********************************/
     $mpgResponse = $mpgHttpPost->getMpgResponse();
     return $this->_evaluateResponse($mpgResponse);
 }
Example #4
0
$cvd_indicator = '1';
$cvd_value = '198';
/********************** AVS Associative Array *************************/
$avsTemplate = array('avs_street_number' => $avs_street_number, 'avs_street_name' => $avs_street_name, 'avs_zipcode' => $avs_zipcode);
/********************** CVD Associative Array *************************/
$cvdTemplate = array('cvd_indicator' => $cvd_indicator, 'cvd_value' => $cvd_value);
/************************** AVS Object ********************************/
$mpgAvsInfo = new mpgAvsInfo($avsTemplate);
/************************** CVD Object ********************************/
$mpgCvdInfo = new mpgCvdInfo($cvdTemplate);
/***************** Transactional Associative Array ********************/
$txnArray = array('type' => $type, 'order_id' => $order_id, 'cust_id' => $cust_id, 'amount' => $amount, 'pan' => $pan, 'expdate' => $expiry_date, 'crypt_type' => $crypt);
/********************** Transaction Object ****************************/
$mpgTxn = new mpgTransaction($txnArray);
/************************ Set AVS and CVD *****************************/
$mpgTxn->setAvsInfo($mpgAvsInfo);
$mpgTxn->setCvdInfo($mpgCvdInfo);
/************************ Request Object ******************************/
$mpgRequest = new mpgRequest($mpgTxn);
/*********************** HTTPS Post Object ****************************/
$mpgHttpPost = new mpgHttpsPost($store_id, $api_token, $mpgRequest);
/***************************** Response ******************************/
$mpgResponse = $mpgHttpPost->getMpgResponse();
print "\nCardType = " . $mpgResponse->getCardType();
print "\nTransAmount = " . $mpgResponse->getTransAmount();
print "\nTxnNumber = " . $mpgResponse->getTxnNumber();
print "\nReceiptId = " . $mpgResponse->getReceiptId();
print "\nTransType = " . $mpgResponse->getTransType();
print "\nReferenceNum = " . $mpgResponse->getReferenceNum();
print "\nResponseCode = " . $mpgResponse->getResponseCode();
print "\nISO = " . $mpgResponse->getISO();