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)); } }
/** * * @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); }
$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();