Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- class ControllerExtensionPaymentAuthorizeNetRecurring extends Controller {
- public function index() {
- $this->language->load('extension/payment/authorizenet_recurring');
- $data['button_confirm'] = $this->language->get('button_confirm');
- $data['entry_cc_cvv2'] = $this->language->get('entry_cc_cvv2');
- $data['entry_cc_expire_date'] = $this->language->get('entry_cc_expire_date');
- $data['entry_cc_number'] = $this->language->get('entry_cc_number');
- $data['entry_cc_owner'] = $this->language->get('entry_cc_owner');
- $data['text_credit_card'] = $this->language->get('text_credit_card');
- $data['text_wait'] = $this->language->get('text_wait');
- $data['send'] = $this->url->link('extension/payment/authorizenet_recurring/send', '', true);
- $data['months'] = array();
- for ($i = 1; $i <= 12; $i++) {
- $data['months'][] = array(
- 'text' => strftime('%B', mktime(0, 0, 0, $i, 1, 2000)),
- 'value' => sprintf('%02d', $i)
- );
- }
- $today = getdate();
- $data['year_expire'] = array();
- for ($i = $today['year']; $i < $today['year'] + 11; $i++) {
- $data['year_expire'][] = array(
- 'text' => strftime('%Y', mktime(0, 0, 0, 1, 1, $i)),
- 'value' => strftime('%Y', mktime(0, 0, 0, 1, 1, $i))
- );
- }
- return $this->load->view('extension/payment/authorizenet_recurring', $data);
- }
- public function send() {
- $json = array();
- $this->load->model('checkout/order');
- $order_info = $this->model_checkout_order->getOrder($this->session->data['order_id']);
- require_once(DIR_SYSTEM . 'library/authorizenetcim.php');
- $login = $this->config->get('authorizenet_recurring_login');
- $auth_key = $this->config->get('authorizenet_recurring_key');
- $live_server = $this->config->get('authorizenet_recurring_server');
- $auth_mode = $this->config->get('authorizenet_recurring_mode');
- $debug_mode = $this->config->get('authorizenet_recurring_debug');
- $authorizenetcim = new AuthorizeNetCim($this->registry, $login, $auth_key, ($live_server == 'live' ? false : true), ($auth_mode == 'test' ? true : false), $debug_mode);
- $authorizenetcim->customer_ip = $order_info['ip'];
- $authorizenetcim->firstname = html_entity_decode($order_info['payment_firstname'], ENT_QUOTES, 'UTF-8');
- $authorizenetcim->lastname = html_entity_decode($order_info['payment_lastname'], ENT_QUOTES, 'UTF-8');
- $authorizenetcim->email = $order_info['email'];
- $authorizenetcim->phone = $order_info['telephone'];
- $authorizenetcim->company = html_entity_decode($order_info['payment_company'], ENT_QUOTES, 'UTF-8');
- $authorizenetcim->address = html_entity_decode($order_info['payment_address_1'], ENT_QUOTES, 'UTF-8');
- $authorizenetcim->city = html_entity_decode($order_info['payment_city'], ENT_QUOTES, 'UTF-8');
- $authorizenetcim->state = html_entity_decode($order_info['payment_zone'], ENT_QUOTES, 'UTF-8');
- $authorizenetcim->zip = html_entity_decode($order_info['payment_postcode'], ENT_QUOTES, 'UTF-8');
- $authorizenetcim->country = html_entity_decode($order_info['payment_country'], ENT_QUOTES, 'UTF-8');
- if ($order_info['shipping_method']) {
- $authorizenetcim->shipping_firstname = html_entity_decode($order_info['shipping_firstname'], ENT_QUOTES, 'UTF-8');
- $authorizenetcim->shipping_lastname = html_entity_decode($order_info['shipping_lastname'], ENT_QUOTES, 'UTF-8');
- $authorizenetcim->shipping_company = html_entity_decode($order_info['shipping_company'], ENT_QUOTES, 'UTF-8');
- $authorizenetcim->shipping_address = html_entity_decode($order_info['shipping_address_1'], ENT_QUOTES, 'UTF-8') . ' ' . html_entity_decode($order_info['shipping_address_2'], ENT_QUOTES, 'UTF-8');
- $authorizenetcim->shipping_city = html_entity_decode($order_info['shipping_city'], ENT_QUOTES, 'UTF-8');
- $authorizenetcim->shipping_state = html_entity_decode($order_info['shipping_zone'], ENT_QUOTES, 'UTF-8');
- $authorizenetcim->shipping_zip = html_entity_decode($order_info['shipping_postcode'], ENT_QUOTES, 'UTF-8');
- $authorizenetcim->shipping_country = html_entity_decode($order_info['shipping_country'], ENT_QUOTES, 'UTF-8');
- } else {
- $authorizenetcim->shipping_firstname = html_entity_decode($order_info['payment_firstname'], ENT_QUOTES, 'UTF-8');
- $authorizenetcim->shipping_lastname = html_entity_decode($order_info['payment_lastname'], ENT_QUOTES, 'UTF-8');
- $authorizenetcim->shipping_company = html_entity_decode($order_info['payment_company'], ENT_QUOTES, 'UTF-8');
- $authorizenetcim->shipping_address = html_entity_decode($order_info['payment_address_1'], ENT_QUOTES, 'UTF-8') . ' ' . html_entity_decode($order_info['payment_address_2'], ENT_QUOTES, 'UTF-8');
- $authorizenetcim->shipping_city = html_entity_decode($order_info['payment_city'], ENT_QUOTES, 'UTF-8');
- $authorizenetcim->shipping_state = html_entity_decode($order_info['payment_zone'], ENT_QUOTES, 'UTF-8');
- $authorizenetcim->shipping_zip = html_entity_decode($order_info['payment_postcode'], ENT_QUOTES, 'UTF-8');
- $authorizenetcim->shipping_country = html_entity_decode($order_info['payment_country'], ENT_QUOTES, 'UTF-8');
- }
- $success = false;
- if (!empty($this->session->data['authnet_customer_recurring_id'])) {
- $authorizenetcim->customer_recurring_id = $this->session->data['authnet_customer_recurring_id'];
- $authorizenetcim->updateCustomerProfile($order_info['customer_id'], $order_info['firstname'] . ' ' . $order_info['lastname'] . ' ' . date('Y-m-d H:i:s'));
- } else {
- $authorizenetcim_result = $authorizenetcim->createCustomerProfile($order_info['customer_id'], $order_info['firstname'] . ' ' . $order_info['lastname'] . ' ' . date('Y-m-d H:i:s'));
- if ($authorizenetcim_result) {
- if ($authorizenetcim_result->messages->resultCode == 'Ok') {
- $this->session->data['authnet_customer_recurring_id'] = (int)$authorizenetcim_result->customerProfileId;
- } else if ($authorizenetcim_result->messages->message->code == 'E00039') {
- $authorizenetcim->deleteCustomerProfile((int)preg_replace('/\D/', '', $authorizenetcim_result->messages->message->text));
- $authorizenetcim_result = $authorizenetcim->createCustomerProfile($order_info['customer_id'], $order_info['firstname'] . ' ' . $order_info['lastname'] . ' ' . date('Y-m-d H:i:s'));
- if ($authorizenetcim_result) {
- $this->session->data['authnet_customer_recurring_id'] = (int)$authorizenetcim_result->customerProfileId;
- } else {
- $json['error'] = 'There was an error processing your request. Please try again, if the problem persists contact us.';
- }
- } else {
- $json['error'] = (string)$authorizenetcim_result->messages->message->text;
- }
- } else {
- $json['error'] = 'There was an error processing your request. Please try again, if the problem persists contact us.';
- }
- }
- if (!empty($this->session->data['authnet_customer_recurring_id']) && !empty($this->request->post['cc_number']) && !empty($this->request->post['cc_expire_date_month']) && !empty($this->request->post['cc_expire_date_year'])) {
- if (!empty($this->session->data['authnet_customer_payment_recurring_id'])) {
- $authorizenetcim_result = $authorizenetcim->updateCustomerPaymentProfile($this->session->data['authnet_customer_payment_recurring_id'], str_replace(' ', '', $this->request->post['cc_number']), $this->request->post['cc_expire_date_month'], $this->request->post['cc_expire_date_year']);
- if ($authorizenetcim_result->messages->resultCode == 'Ok') {
- $this->session->data['last_four'] = substr(str_replace(' ', '', $this->request->post['cc_number']), -4);
- } else {
- $json['error'] = (string)$authorizenetcim_result->messages->message->text;
- }
- } else {
- $authorizenetcim_result = $authorizenetcim->createCustomerPaymentProfile(str_replace(' ', '', $this->request->post['cc_number']), $this->request->post['cc_expire_date_month'], $this->request->post['cc_expire_date_year']);
- if ($authorizenetcim_result) {
- if ($authorizenetcim_result->messages->resultCode == 'Ok') {
- $this->session->data['authnet_customer_payment_recurring_id'] = (int)$authorizenetcim_result->customerPaymentProfileId;
- $this->session->data['last_four'] = substr(str_replace(' ', '', $this->request->post['cc_number']), -4);
- } else {
- $json['error'] = (string)$authorizenetcim_result->messages->message->text;
- }
- } else {
- $json['error'] = 'There was an error processing your request. Please try again, if the problem persists contact us.';
- }
- }
- }
- if (!empty($this->session->data['authnet_customer_payment_recurring_id']) && empty($this->session->data['last_four'])) {
- $customer_payment_recurring = $authorizenetcim->getCustomerPaymentProfile($this->session->data['authnet_customer_payment_recurring_id']);
- if (isset($customer_payment_recurring->paymentProfile) && isset($customer_payment_recurring->paymentProfile->payment) && isset($customer_payment_recurring->paymentProfile->payment->creditCard)) {
- $this->session->data['last_four'] = substr($customer_payment_recurring->paymentProfile->payment->creditCard->cardNumber, -4);
- }
- }
- if ($order_info['shipping_method']) {
- if (!empty($this->session->data['authnet_customer_recurring_id']) && !empty($this->session->data['authnet_customer_payment_recurring_id'])) {
- if (!empty($this->session->data['authnet_customer_shipping_address_id'])) {
- $authorizenetcim->updateCustomerShippingAddress($this->session->data['authnet_customer_shipping_address_id']);
- } else {
- $authorizenetcim_result = $authorizenetcim->createCustomerShippingAddress();
- if ($authorizenetcim_result) {
- if ($authorizenetcim_result->messages->resultCode == 'Ok') {
- $this->session->data['authnet_customer_shipping_address_id'] = (int)$authorizenetcim_result->customerAddressId;
- } else {
- $json['error'] = (string)$authorizenetcim_result->messages->message->text;
- }
- } else {
- $json['error'] = 'There was an error processing your request. Please try again, if the problem persists contact us.';
- }
- }
- }
- } else {
- $this->session->data['authnet_customer_shipping_address_id'] = '';
- }
- if (!empty($this->session->data['authnet_customer_recurring_id']) && !empty($this->session->data['authnet_customer_payment_recurring_id']) && isset($this->session->data['authnet_customer_shipping_address_id'])) {
- $authorizenetcim_result = $authorizenetcim->createCustomerProfileTransaction($this->session->data['order_id'], $this->config->get('authorizenet_recurring_method'), $this->session->data['authnet_customer_payment_recurring_id'], $this->session->data['authnet_customer_shipping_address_id'], $this->currency->format($order_info['total'], $this->config->get('config_currency'), '', false), (isset($this->request->post['cc_cvv2']) ? $this->request->post['cc_cvv2'] : ''), 1);
- if ($authorizenetcim_result['success']) {
- $this->model_checkout_order->addOrderHistory($this->session->data['order_id'], $this->config->get('config_order_status_id'));
- $message = '';
- if (isset($authorizenetcim_result['data'][4])) {
- $message .= 'Authorization Code: ' . $authorizenetcim_result['data'][4] . "\n";
- }
- if (isset($authorizenetcim_result['data'][5])) {
- $message .= 'AVS Response: ' . $authorizenetcim_result['data'][5] . "\n";
- }
- if (isset($authorizenetcim_result['data'][6])) {
- $message .= 'Transaction ID: ' . $authorizenetcim_result['data'][6] . "\n";
- }
- if (isset($authorizenetcim_result['data'][38])) {
- $message .= 'Card Code Response: ' . $authorizenetcim_result['data'][38] . "\n";
- }
- if (isset($authorizenetcim_result['data'][39])) {
- $message .= 'Cardholder Authentication Verification Response: ' . $authorizenetcim_result['data'][39] . "\n";
- }
- if (!$this->config->get('authorizenet_recurring_hash') || (strtoupper($authorizenetcim_result['data'][37]) == strtoupper(md5($this->config->get('authorizenet_recurring_hash') . $this->config->get('authorizenet_recurring_login') . $authorizenetcim_result['data'][6] . $this->currency->format($order_info['total'], $this->config->get('config_currency'), '', false))))) {
- sleep(1);
- $this->model_checkout_order->addOrderHistory($this->session->data['order_id'], $this->config->get('authorizenet_recurring_order_status_id'), $message, false);
- if (file_exists(DIR_APPLICATION . 'model/checkout/order_transaction.php')) {
- $this->load->model('localisation/currency');
- $currency_info = $this->model_localisation_currency->getCurrencyByCode($this->config->get('config_currency'));
- $this->load->model('checkout/order_transaction');
- $this->model_checkout_order_transaction->addOrderTransaction($this->session->data['order_id'], array(
- 'transaction_id' => (isset($authorizenetcim_result['data'][6]) ? $authorizenetcim_result['data'][6] : ''),
- 'authorization_code' => (isset($authorizenetcim_result['data'][4]) ? $authorizenetcim_result['data'][4] : ''),
- 'payment_method' => 'Authorize.Net (Recurring)',
- 'payment_code' => 'authorizenet_recurring',
- 'amount' => $this->currency->format($order_info['total'], $this->config->get('config_currency'), '', false),
- 'currency_id' => $currency_info['currency_id'],
- 'currency_code' => $currency_info['code'],
- 'currency_value' => $currency_info['value'],
- 'additional_details' => array(
- 'server' => $this->config->get('authorizenet_recurring_server'),
- 'login' => $this->config->get('authorizenet_recurring_login'),
- 'key' => $this->config->get('authorizenet_recurring_key'),
- 'last_four' => (isset($this->session->data['last_four']) ? $this->session->data['last_four'] : '')
- ),
- 'status' => (($this->config->get('authorizenet_recurring_method') == 'capture') ? 1 : 0)
- ));
- }
- $recurring_products = $this->cart->getRecurringProducts();
- foreach ($recurring_products as $recurring_product) {
- if (is_array($recurring_product['recurring'])) {
- $recurring_info = $recurring_product['recurring'];
- } else {
- $recurring_info = array(
- // Start Enhanced Recurring
- 'profile_full_tax_initial_order' => $recurring_product['profile_full_tax_initial_order'],
- 'recurring_charge_shipping' => $recurring_product['recurring_charge_shipping'],
- 'recurring_trial_charge_shipping' => $recurring_product['recurring_trial_charge_shipping'],
- // End Enhanced Recurring
- 'recurring_id' => $recurring_product['recurring_id'],
- 'name' => $recurring_product['recurring_name'],
- 'frequency' => $recurring_product['recurring_frequency'],
- 'price' => $recurring_product['recurring_price'],
- 'cycle' => $recurring_product['recurring_cycle'],
- 'duration' => $recurring_product['recurring_duration'],
- 'trial' => $recurring_product['recurring_trial'],
- 'trial_frequency' => $recurring_product['recurring_trial_frequency'],
- 'trial_price' => $recurring_product['recurring_trial_price'],
- 'trial_cycle' => $recurring_product['recurring_trial_cycle'],
- 'trial_duration' => $recurring_product['recurring_trial_duration']
- );
- }
- $price = $this->currency->format($recurring_info['price'], $this->config->get('config_currency'), '', false);
- $trial_price = $this->currency->format($recurring_info['trial_price'], $this->config->get('config_currency'), '', false);
- if ($recurring_info['trial'] && $recurring_info['trial_duration']) {
- if ($recurring_info['trial_frequency'] == 'semi_month') {
- $days_per_cycle = date('t', strtotime('first day of next month')) / $recurring_info['trial_cycle'];
- $date_recurring = date('Y-m-d', strtotime('+' . $days_per_cycle . ' days', strtotime('first day of next month')));
- } else {
- $date_recurring = date('Y-m-d', strtotime('+' . $recurring_info['trial_cycle'] . ' ' . $recurring_info['trial_frequency']));
- }
- } else {
- if ($recurring_info['frequency'] == 'semi_month') {
- $days_per_cycle = date('t', strtotime('first day of next month')) / $recurring_info['cycle'];
- $date_recurring = date('Y-m-d', strtotime('+' . $days_per_cycle . ' days', strtotime('first day of next month')));
- } else {
- $date_recurring = date('Y-m-d', strtotime('+' . $recurring_info['cycle'] . ' ' . $recurring_info['frequency']));
- }
- }
- $this->load->model('checkout/recurring');
- $item = array(
- // Start Enhanced Recurring
- 'profile_full_tax_initial_order' => $recurring_info['profile_full_tax_initial_order'],
- 'recurring_charge_shipping' => $recurring_info['recurring_charge_shipping'],
- 'recurring_trial_charge_shipping' => $recurring_info['recurring_trial_charge_shipping'],
- // End Enhanced Recurring
- 'product_id' => $recurring_product['product_id'],
- 'name' => $recurring_product['name'],
- 'quantity' => $recurring_product['quantity'],
- 'recurring' => $recurring_info
- );
- $order_recurring_id = $this->model_checkout_recurring->create($item, $this->session->data['order_id'], $recurring_info['name']);
- $this->load->model('extension/payment/authorizenet_recurring');
- $authorizenet_recurring_id = $this->model_extension_payment_authorizenet_recurring->addRecurringSubscription(array(
- 'order_id' => $this->session->data['order_id'],
- 'order_recurring_id' => $order_recurring_id,
- 'server' => $this->config->get('authorizenet_recurring_server'),
- 'login' => $this->config->get('authorizenet_recurring_login'),
- 'key' => $this->config->get('authorizenet_recurring_key'),
- 'customer_recurring_id' => $this->session->data['authnet_customer_recurring_id'],
- 'customer_payment_recurring_id' => $this->session->data['authnet_customer_payment_recurring_id'],
- 'customer_shipping_address_id' => $this->session->data['authnet_customer_shipping_address_id'],
- 'duration_remaining' => ($recurring_info['duration'] ? $recurring_info['duration'] : -1),
- 'trial_duration_remaining' => $recurring_info['trial_duration'],
- 'date_recurring' => $date_recurring
- ));
- $this->model_checkout_recurring->addReference($order_recurring_id, $authorizenet_recurring_id);
- $this->db->query("UPDATE `" . DB_PREFIX . "order_recurring` SET `status` = '2' WHERE order_recurring_id = '" . (int)$order_recurring_id . "'");
- }
- }
- $json['success'] = $this->url->link('checkout/success', '', true);
- } else {
- $json['error'] = $authorizenetcim_result['error'];
- }
- $json['merchant_information'] = array(
- 'authnet_customer_recurring_id' => $this->session->data['authnet_customer_recurring_id'],
- 'authnet_customer_payment_recurring_id' => $this->session->data['authnet_customer_payment_recurring_id'],
- 'authnet_customer_shipping_address_id' => $this->session->data['authnet_customer_shipping_address_id']
- );
- }
- $this->response->setOutput(json_encode($json));
- }
- public function recurringCancel() {
- if (!empty($this->request->get['recurring_id'])) {
- $this->language->load('account/recurring');
- $this->load->model('extension/payment/authorizenet_recurring');
- $this->load->model('account/recurring');
- $order_recurring_info = $this->model_account_recurring->getProfile($this->request->get['recurring_id']);
- if ($order_recurring_info) {
- $this->db->query("UPDATE `" . DB_PREFIX . "order_recurring` SET `status` = '" . (int)$this->config->get('authorizenet_recurring_recurring_cancel_status') . "' WHERE order_recurring_id = '" . (int)$this->request->get['recurring_id'] . "'");
- $this->session->data['success'] = $this->language->get('success_cancelled');
- } else {
- $this->log->write($this->language->get('error_not_found'));
- }
- }
- $this->redirect($this->url->link('account/recurring/info', 'recurring_id=' . $this->request->get['recurring_id'], true));
- }
- public function cron() {
- if (isset($this->request->get['secret'])) {
- $secret = $this->request->get['secret'];
- } else if (isset($GLOBALS['argv'][1])) {
- $secret = htmlspecialchars($GLOBALS['argv'][1], ENT_COMPAT, 'UTF-8');
- }
- if (isset($secret) && $secret == $this->config->get('authorizenet_recurring_cron_secret')) {
- $this->language->load('extension/payment/authorizenet_recurring');
- $this->load->model('account/customer');
- $this->load->model('catalog/product');
- $this->load->model('checkout/order');
- $this->load->model('extension/payment/authorizenet_recurring');
- require_once(DIR_SYSTEM . 'library/authorizenetcim.php');
- $login = $this->config->get('authorizenet_recurring_login');
- $auth_key = $this->config->get('authorizenet_recurring_key');
- $live_server = $this->config->get('authorizenet_recurring_server');
- $auth_mode = $this->config->get('authorizenet_recurring_mode');
- $debug_mode = $this->config->get('authorizenet_recurring_debug');
- $filters = array(
- //'filter_date_recurring_start' => date('Y-m-d'),
- 'filter_date_recurring_end' => date('Y-m-d'),
- 'filter_status' => 2 // Active
- );
- $recurring_orders = array();
- $results = $this->model_extension_payment_authorizenet_recurring->getRecurringSubscriptions($filters);
- foreach ($results as $result) {
- if (isset($recurring_orders[$result['order_id']])) {
- $recurring_orders[$result['order_id']]['subscriptions'][] = $result;
- if ($recurring_orders[$result['order_id']]['trials_only'] && !$result['trial_duration_remaining']) {
- $recurring_orders[$result['order_id']]['trials_only'] = false;
- }
- } else {
- $recurring_orders[$result['order_id']] = array(
- 'server' => $result['server'],
- 'login' => $result['login'],
- 'key' => $result['key'],
- 'customer_recurring_id' => $result['customer_recurring_id'],
- 'customer_payment_recurring_id' => $result['customer_payment_recurring_id'],
- 'customer_shipping_address_id' => $result['customer_shipping_address_id'],
- 'trials_only' => ($result['trial_duration_remaining'] ? true : false),
- 'subscriptions' => array($result)
- );
- }
- }
- foreach ($recurring_orders as $order_id => $recurring_order) {
- $this->language->load('extension/payment/authorizenet_recurring');
- $this->cart->clear();
- $authorizenetcim = new AuthorizeNetCim($this->registry, $login, $auth_key, ($live_server == 'live' ? false : true), ($auth_mode == 'test' ? true : false), $debug_mode);
- $authorizenetcim->customer_recurring_id = $recurring_order['customer_recurring_id'];
- $authorizenetcim->customer_profile_id = $recurring_order['customer_recurring_id'];
- $customer_recurring_results = $authorizenetcim->getCustomerProfile();
- $customer_recurring = $customer_recurring_results->profile;
- $customer_payment_recurring = array();
- $customer_shipping_address = array();
- if ($customer_recurring) {
- foreach ($customer_recurring->paymentProfiles as $payment_recurring) {
- if ($payment_recurring->customerPaymentProfileId == $recurring_order['customer_payment_recurring_id']) {
- $customer_payment_recurring = $payment_recurring;
- break;
- }
- }
- if ($recurring_order['customer_shipping_address_id']) {
- foreach ($customer_recurring->shipToList as $shipping_address) {
- if ($shipping_address->customerAddressId == $recurring_order['customer_shipping_address_id']) {
- $customer_shipping_address = $shipping_address;
- break;
- }
- }
- }
- }
- if (!$customer_recurring || !$customer_payment_recurring || ($recurring_order['customer_shipping_address_id'] && !$customer_shipping_address)) {
- foreach ($recurring_order['subscriptions'] as $recurring_subscription) {
- $this->model_extension_payment_authorizenet_recurring->addSubscriptionFailedAttempt($recurring_subscription['authorizenet_recurring_id']);
- if ($recurring_subscription['failed_attempts'] < (3 - 1)) {
- $this->model_extension_payment_authorizenet_recurring->editSubscriptionRecurringDate($recurring_subscription['authorizenet_recurring_id'], date('Y-m-d', strtotime('tomorrow')));
- } else {
- $this->db->query("UPDATE `" . DB_PREFIX . "order_recurring` SET `status` = '" . (int)$this->config->get('authorizenet_recurring_recurring_cancel_status') . "' WHERE order_recurring_id = '" . (int)$recurring_subscription['order_recurring_id'] . "'");
- }
- }
- continue;
- }
- if (($order_info = $this->model_checkout_order->getOrder($order_id))) {
- $this->model_extension_payment_authorizenet_recurring->useStoreConfig($order_info['store_id']);
- } else {
- $this->model_extension_payment_authorizenet_recurring->useStoreConfig(0);
- }
- $data = array();
- $data['invoice_prefix'] = $this->config->get('config_invoice_prefix');
- $data['store_id'] = $this->config->get('config_store_id');
- $data['store_name'] = $this->config->get('config_name');
- if ($data['store_id']) {
- $data['store_url'] = $this->config->get('config_url');
- } else {
- $data['store_url'] = HTTP_SERVER;
- }
- if ($order_info && $order_info['customer_id']) {
- $customer_info = $this->model_account_customer->getCustomer($order_info['customer_id']);
- $data['customer_id'] = $order_info['customer_id'];
- $data['customer_group_id'] = $customer_info['customer_group_id'];
- $data['firstname'] = $customer_info['firstname'];
- $data['lastname'] = $customer_info['lastname'];
- $data['email'] = $customer_info['email'];
- $data['telephone'] = $customer_info['telephone'];
- $data['fax'] = $customer_info['fax'];
- } else {
- $data['customer_id'] = 0;
- $data['customer_group_id'] = $this->config->get('config_customer_group_id');
- $data['firstname'] = $customer_payment_recurring->billTo->firstName;
- $data['lastname'] = $customer_payment_recurring->billTo->lastName;
- $data['email'] = $customer_recurring->email;
- $data['telephone'] = $customer_payment_recurring->billTo->phoneNumber;
- $data['fax'] = $customer_payment_recurring->billTo->faxNumber;
- }
- // Payment Information
- $payment_country_info = $this->model_extension_payment_authorizenet_recurring->getCountryByCode($customer_payment_recurring->billTo->country);
- if ($payment_country_info) {
- $payment_country_id = $payment_country_info['country_id'];
- $payment_country = $payment_country_info['name'];
- $payment_address_format = $payment_country_info['address_format'];
- $payment_zone_info = $this->model_extension_payment_authorizenet_recurring->getZoneByCode($customer_payment_recurring->billTo->state, $payment_country_id);
- if ($payment_zone_info) {
- $payment_zone_id = $payment_zone_info['zone_id'];
- $payment_zone = $payment_zone_info['name'];
- } else {
- $payment_zone_id = 0;
- $payment_zone = '';
- }
- } else {
- $payment_country_id = 0;
- $payment_country = '';
- $payment_address_format = '';
- $payment_zone_id = 0;
- $payment_zone = '';
- }
- $data['payment_firstname'] = $customer_payment_recurring->billTo->firstName;
- $data['payment_lastname'] = $customer_payment_recurring->billTo->lastName;
- $data['payment_company'] = $customer_payment_recurring->billTo->company;
- $data['payment_company_id'] = '';
- $data['payment_tax_id'] = '';
- $data['payment_address_1'] = $customer_payment_recurring->billTo->address;
- $data['payment_address_2'] = '';
- $data['payment_city'] = $customer_payment_recurring->billTo->city;
- $data['payment_postcode'] = $customer_payment_recurring->billTo->zip;
- $data['payment_country'] = $payment_country;
- $data['payment_country_id'] = $payment_country_id;
- $data['payment_zone'] = $payment_zone;
- $data['payment_zone_id'] = $payment_zone_id;
- $data['payment_address_format'] = $payment_address_format;
- $data['payment_method'] = $this->language->get('text_title');
- $data['payment_code'] = 'authorizenet_recurring';
- // Shipping Information
- if ($customer_shipping_address && $order_info && $order_info['shipping_code']) {
- $shipping_country_info = $this->model_extension_payment_authorizenet_recurring->getCountryByCode($customer_shipping_address->country);
- if ($shipping_country_info) {
- $shipping_country_id = $shipping_country_info['country_id'];
- $shipping_country = $shipping_country_info['name'];
- $shipping_iso_code_2 = $shipping_country_info['iso_code_2'];
- $shipping_address_format = $shipping_country_info['address_format'];
- $shipping_zone_info = $this->model_extension_payment_authorizenet_recurring->getZoneByCode($customer_shipping_address->state, $shipping_country_id);
- if ($shipping_zone_info) {
- $shipping_zone_id = $shipping_zone_info['zone_id'];
- $shipping_zone = $shipping_zone_info['name'];
- $shipping_zone_code = $shipping_zone_info['code'];
- } else {
- $shipping_zone_id = 0;
- $shipping_zone = '';
- $shipping_zone_code = '';
- }
- } else {
- $shipping_country_id = 0;
- $shipping_country = '';
- $shipping_iso_code_2 = '';
- $shipping_address_format = '';
- $shipping_zone_id = 0;
- $shipping_zone = '';
- $shipping_zone_code = '';
- }
- $shipping_address = array();
- $shipping_address['firstname'] = $customer_shipping_address->firstName;
- $shipping_address['lastname'] = $customer_shipping_address->lastName;
- $shipping_address['company'] = $customer_shipping_address->company;
- $shipping_address['address_1'] = $customer_shipping_address->address;
- $shipping_address['address_2'] = '';
- $shipping_address['city'] = $customer_shipping_address->city;
- $shipping_address['postcode'] = $customer_shipping_address->zip;
- $shipping_address['country'] = $shipping_country;
- $shipping_address['country_id'] = $shipping_country_id;
- $shipping_address['iso_code_2'] = $shipping_iso_code_2;
- $shipping_address['zone'] = $shipping_zone;
- $shipping_address['zone_id'] = $shipping_zone_id;
- $shipping_address['zone_code'] = $shipping_zone_code;
- $shipping_address['address_format'] = $shipping_address_format;
- } else {
- $shipping_address = array();
- }
- if ($data['payment_country_id'] && $data['payment_zone_id']) {
- $this->tax->setPaymentAddress($data['payment_country_id'], $data['payment_zone_id']);
- } else if ($this->config->get('config_tax_default') == 'payment') {
- $this->tax->setPaymentAddress($this->config->get('config_country_id'), $this->config->get('config_zone_id'));
- }
- if ($shipping_address) {
- $this->tax->setShippingAddress($shipping_address['country_id'], $shipping_address['zone_id']);
- } else if ($this->config->get('config_tax_default') == 'shipping') {
- $this->tax->setShippingAddress($this->config->get('config_country_id'), $this->config->get('config_zone_id'));
- }
- // store all transactions regardless if successful or not, use this later to add order transactions, history, etc.
- $transactions = array();
- // Products
- $sub_total = 0;
- $taxes = array();
- $data['products'] = array();
- foreach ($recurring_order['subscriptions'] as $recurring_subscription) {
- $product_info = $this->model_catalog_product->getProduct($recurring_subscription['product_id']);
- $tax = ($product_info ? $this->tax->getTax($recurring_subscription['recurring_price'], $product_info['tax_class_id']) : 0);
- $add_product = false;
- if ($this->config->get('authorizenet_recurring_combine_transactions')) {
- // combining transactions so always add the product to the cart
- $add_product = true;
- } else {
- // only add product to cart if the transaction is successful
- $total = ($recurring_subscription['recurring_price'] * $recurring_subscription['product_quantity']) + ($tax * $recurring_subscription['product_quantity']);
- $transaction_info = array(
- 'data' => array(),
- 'total' => $total,
- 'success' => false,
- 'error' => ''
- );
- $authorizenetcim_result = $authorizenetcim->createCustomerProfileTransaction('', $this->config->get('authorizenet_recurring_method'), $recurring_order['customer_payment_recurring_id'], $recurring_order['customer_shipping_address_id'], $this->currency->format($total, $this->config->get('config_currency'), '', false), '', true);
- $transaction_info['data'] = $authorizenetcim_result['data'];
- if ($authorizenetcim_result['success']) {
- $transaction_info['success'] = true;
- $add_product = true;
- } else {
- $transaction_info['error'] = $authorizenetcim_result['error'];
- }
- if ($transaction_info['success']) {
- $this->addOrderRecurringTransaction($recurring_subscription, $total, 1);
- } else {
- $this->addOrderRecurringTransaction($recurring_subscription, $total, 4);
- }
- $transactions[] = $transaction_info;
- }
- if ($add_product) {
- // Start Enhanced Recurring
- if ($product_info && (($recurring_subscription['trial_duration_remaining'] && $recurring_subscription['trial_charge_shipping']) || (!$recurring_subscription['trial_duration_remaining'] && $recurring_subscription['recurring_charge_shipping']))) {
- $shipping = $product_info['shipping'];
- } else {
- $shipping = 0;
- }
- // End Enhanced Recurring
- $data['products'][] = array(
- 'product_id' => $recurring_subscription['product_id'],
- 'name' => ($product_info ? $product_info['name'] . ' - ' : '') . $recurring_subscription['recurring_name'],
- 'model' => ($product_info ? $product_info['model'] : ''),
- 'option' => array(),
- 'download' => array(),
- 'quantity' => $recurring_subscription['product_quantity'],
- 'subtract' => ($product_info ? $product_info['subtract'] : 0),
- 'price' => $recurring_subscription['recurring_price'],
- 'total' => $recurring_subscription['recurring_price'] * $recurring_subscription['product_quantity'],
- 'tax' => $tax,
- 'reward' => ($product_info ? $product_info['points'] : 0),
- // Start Enhanced Recurring
- 'shipping' => $shipping
- // End Enhanced Recurring
- );
- // Start Enhanced Recurring
- if ($shipping) {
- // End Enhanced Recurring
- $this->cart->add($recurring_subscription['product_id'], $recurring_subscription['product_quantity']);
- }
- $sub_total += $recurring_subscription['recurring_price'] * $recurring_subscription['product_quantity'];
- // Start Enhanced Recurring
- if (!$recurring_subscription['recurring_full_tax_initial_order'] && $product_info['tax_class_id']) {
- // End Enhanced Recurring
- $tax_rates = $this->tax->getRates($recurring_subscription['recurring_price'], $product_info['tax_class_id']);
- foreach ($tax_rates as $tax_rate) {
- if (!isset($taxes[$tax_rate['tax_rate_id']])) {
- $taxes[$tax_rate['tax_rate_id']] = ($tax_rate['amount'] * $recurring_subscription['product_quantity']);
- } else {
- $taxes[$tax_rate['tax_rate_id']] += ($tax_rate['amount'] * $recurring_subscription['product_quantity']);
- }
- }
- }
- }
- }
- if ($data['products']) {
- // Shipping Methods
- $shipping_cost = 0;
- if ($shipping_address && $this->cart->hasShipping()) {
- $data['shipping_firstname'] = $shipping_address['firstname'];
- $data['shipping_lastname'] = $shipping_address['lastname'];
- $data['shipping_company'] = $shipping_address['company'];
- $data['shipping_address_1'] = $shipping_address['address_1'];
- $data['shipping_address_2'] = $shipping_address['address_2'];
- $data['shipping_city'] = $shipping_address['city'];
- $data['shipping_postcode'] = $shipping_address['postcode'];
- $data['shipping_country'] = $shipping_address['country'];
- $data['shipping_country_id'] = $shipping_address['country_id'];
- $data['shipping_zone'] = $shipping_address['zone'];
- $data['shipping_zone_id'] = $shipping_address['zone_id'];
- $data['shipping_address_format'] = $shipping_address['address_format'];
- $data['shipping_method'] = '';
- $data['shipping_code'] = '';
- $this->load->model('extension/extension');
- $results = $this->model_extension_extension->getExtensions('shipping');
- foreach ($results as $result) {
- if ($this->config->get($result['code'] . '_status')) {
- $this->load->model('extension/shipping/' . $result['code']);
- $method_data = $this->{'model_extension_shipping_' . $result['code']}->getQuote($shipping_address);
- if ($method_data) {
- foreach ($method_data['quote'] as $key => $quote) {
- if ($quote['code'] == $order_info['shipping_code']) {
- $data['shipping_method'] = $quote['title'];
- $data['shipping_code'] = $quote['code'];
- $shipping_cost = $quote['cost'];
- break 2;
- } else if (!$data['shipping_code'] || $quote['cost'] < $shipping_cost) {
- $data['shipping_method'] = $quote['title'];
- $data['shipping_code'] = $quote['code'];
- $shipping_cost = $quote['cost'];
- }
- }
- }
- }
- }
- } else {
- $data['shipping_firstname'] = '';
- $data['shipping_lastname'] = '';
- $data['shipping_company'] = '';
- $data['shipping_address_1'] = '';
- $data['shipping_address_2'] = '';
- $data['shipping_city'] = '';
- $data['shipping_postcode'] = '';
- $data['shipping_country'] = '';
- $data['shipping_country_id'] = '';
- $data['shipping_zone'] = '';
- $data['shipping_zone_id'] = '';
- $data['shipping_address_format'] = '';
- $data['shipping_method'] = '';
- $data['shipping_code'] = '';
- }
- $data['vouchers'] = array();
- // Totals
- $total = 0;
- $data['totals'] = array();
- $data['totals'][] = array(
- 'code' => 'sub_total',
- 'title' => $this->language->get('cron_sub_total'),
- 'text' => $this->currency->format($sub_total, $order_info['currency_code'], $order_info['currency_value']),
- 'value' => $sub_total,
- 'sort_order' => $this->config->get('sub_total_sort_order')
- );
- $total += $sub_total;
- if ($data['shipping_method']) {
- $data['totals'][] = array(
- 'code' => 'shipping',
- 'title' => $data['shipping_method'],
- 'text' => $this->currency->format($shipping_cost, $order_info['currency_code'], $order_info['currency_value']),
- 'value' => $shipping_cost,
- 'sort_order' => $this->config->get('shipping_sort_order')
- );
- $total += $shipping_cost;
- }
- foreach ($taxes as $key => $value) {
- if ($value > 0) {
- $data['totals'][] = array(
- 'code' => 'tax',
- 'title' => $this->tax->getRateName($key),
- 'text' => $this->currency->format($value, $order_info['currency_code'], $order_info['currency_value']),
- 'value' => $value,
- 'sort_order' => $this->config->get('tax_sort_order')
- );
- $total += $value;
- }
- }
- $data['totals'][] = array(
- 'code' => 'total',
- 'title' => $this->language->get('cron_total'),
- 'text' => $this->currency->format($total, $order_info['currency_code'], $order_info['currency_value']),
- 'value' => $total,
- 'sort_order' => $this->config->get('total_sort_order')
- );
- $data['total'] = $total;
- if ($order_info) {
- $data['comment'] = sprintf($this->language->get('cron_comment_order'), $order_id);
- } else {
- $data['comment'] = $this->language->get('cron_comment');
- }
- if ($this->config->get('authorizenet_recurring_affiliate_commission_status') && $order_info && $order_info['affiliate_id']) {
- $data['tracking'] = $order_info['tracking'];
- $this->load->model('affiliate/affiliate');
- $affiliate_info = $this->model_affiliate_affiliate->getAffiliate($order_info['affiliate_id']);
- $subtotal = $total;
- if ($affiliate_info) {
- $data['affiliate_id'] = $affiliate_info['affiliate_id'];
- $data['commission'] = ($subtotal / 100) * $affiliate_info['commission'];
- } else {
- $data['affiliate_id'] = 0;
- $data['commission'] = 0;
- }
- $this->load->model('checkout/marketing');
- $marketing_info = $this->model_checkout_marketing->getMarketingByCode($order_info['tracking']);
- if ($marketing_info) {
- $data['marketing_id'] = $marketing_info['marketing_id'];
- } else {
- $data['marketing_id'] = 0;
- }
- } else {
- $data['affiliate_id'] = 0;
- $data['commission'] = 0;
- $data['marketing_id'] = 0;
- $data['tracking'] = '';
- }
- if ($order_info) {
- $data['language_id'] = $order_info['language_id'];
- $data['currency_id'] = $order_info['currency_id'];
- $data['currency_code'] = $order_info['currency_code'];
- $data['currency_value'] = $order_info['currency_value'];
- } else {
- $data['language_id'] = $this->config->get('config_language_id');
- $data['currency_id'] = $this->currency->getId($this->config->get('config_currency'));
- $data['currency_code'] = $this->config->get('config_currency');
- $data['currency_value'] = $this->currency->getValue($this->config->get('config_currency'));
- }
- $data['ip'] = '';
- $data['forwarded_ip'] = '';
- $data['user_agent'] = '';
- $data['accept_language'] = '';
- $new_order_id = $this->model_checkout_order->addOrder($data);
- $shipping_paid = ($shipping_cost > 0 ? false : true);
- if ($this->config->get('authorizenet_recurring_combine_transactions')) {
- $transaction_info = array(
- 'data' => array(),
- 'total' => $total,
- 'success' => false,
- 'error' => ''
- );
- $authorizenetcim_result = $authorizenetcim->createCustomerProfileTransaction($new_order_id, $this->config->get('authorizenet_recurring_method'), $recurring_order['customer_payment_recurring_id'], $recurring_order['customer_shipping_address_id'], $this->currency->format($total, $this->config->get('config_currency'), '', false), '', true);
- $transaction_info['data'] = $authorizenetcim_result['data'];
- if ($authorizenetcim_result['success']) {
- $transaction_info['success'] = true;
- $shipping_paid = true;
- foreach ($recurring_order['subscriptions'] as $recurring_subscription) {
- $this->addOrderRecurringTransaction($recurring_subscription, $total, 1, $new_order_id);
- }
- } else {
- $transaction_info['error'] = $authorizenetcim_result['error'];
- foreach ($recurring_order['subscriptions'] as $recurring_subscription) {
- $this->addOrderRecurringTransaction($recurring_subscription, $total, 4, $new_order_id);
- }
- }
- $transactions[] = $transaction_info;
- } else {
- if (!$shipping_paid) {
- $transaction_info = array(
- 'data' => array(),
- 'total' => $shipping_cost,
- 'success' => false,
- 'error' => ''
- );
- $authorizenetcim_result = $authorizenetcim->createCustomerProfileTransaction($new_order_id, $this->config->get('authorizenet_recurring_method'), $recurring_order['customer_payment_recurring_id'], $recurring_order['customer_shipping_address_id'], $this->currency->format($shipping_cost, $this->config->get('config_currency'), '', false), '', true);
- $transaction_info['data'] = $authorizenetcim_result['data'];
- if ($authorizenetcim_result['success']) {
- $transaction_info['success'] = true;
- $shipping_paid = true;
- } else {
- $transaction_info['error'] = $authorizenetcim_result['error'];
- }
- $transactions[] = $transaction_info;
- }
- }
- if ($transactions) {
- $order_status_id = 0;
- $this->load->model('localisation/currency');
- $currency_info = $this->model_localisation_currency->getCurrencyByCode($this->config->get('config_currency'));
- if (file_exists(DIR_APPLICATION . 'model/checkout/order_transaction.php')) {
- $this->load->model('checkout/order_transaction');
- }
- foreach ($transactions as $transaction) {
- if ($transaction['success']) {
- if (!$order_status_id) {
- if (!$recurring_order['trials_only']) {
- // create the order normally and send the receipt email
- $this->model_checkout_order->addOrderHistory($new_order_id, $this->config->get('config_order_status_id'));
- sleep(1);
- if ($shipping_paid) {
- $order_status_id = $this->config->get('authorizenet_recurring_order_status_id');
- } else {
- $order_status_id = $this->config->get('config_order_status_id');
- }
- } else {
- // only trials so skip the normal confirm method and don't send an email
- $this->db->query("UPDATE `" . DB_PREFIX . "order` SET order_status_id = '" . (int)$this->config->get('config_order_status_id') . "', date_modified = NOW() WHERE order_id = '" . (int)$new_order_id . "'");
- $this->db->query("INSERT INTO `" . DB_PREFIX . "order_history` SET order_id = '" . (int)$new_order_id . "', order_status_id = '" . (int)$this->config->get('config_order_status_id') . "', notify = '0', date_added = NOW()");
- $order_status_id = $this->config->get('authorizenet_recurring_cron_trial_order_status_id');
- }
- }
- $message = '';
- if (isset($transaction['data'][4])) {
- $message .= 'Authorization Code: ' . $transaction['data'][4] . "\n";
- }
- if (isset($transaction['data'][5])) {
- $message .= 'AVS Response: ' . $transaction['data'][5] . "\n";
- }
- if (isset($transaction['data'][6])) {
- $message .= 'Transaction ID: ' . $transaction['data'][6] . "\n";
- }
- if (isset($transaction['data'][38])) {
- $message .= 'Card Code Response: ' . $transaction['data'][38] . "\n";
- }
- if (isset($transaction['data'][39])) {
- $message .= 'Cardholder Authentication Verification Response: ' . $transaction['data'][39] . "\n";
- }
- if (!$this->config->get('authorizenet_recurring_hash') || (strtoupper($transaction['data'][37]) == strtoupper(md5($this->config->get('authorizenet_recurring_hash') . $this->config->get('authorizenet_recurring_login') . $transaction['data'][6] . $this->currency->format($transaction['total'], $this->config->get('config_currency'), '', false))))) {
- if (file_exists(DIR_APPLICATION . 'model/checkout/order_transaction.php')) {
- $this->model_checkout_order_transaction->addOrderTransaction($new_order_id, array(
- 'transaction_id' => (isset($transaction['data'][6]) ? $transaction['data'][6] : ''),
- 'authorization_code' => (isset($transaction['data'][4]) ? $transaction['data'][4] : ''),
- 'payment_method' => 'Authorize.Net (Recurring)',
- 'payment_code' => 'authorizenet_recurring',
- 'amount' => $this->currency->format($transaction['total'], $this->config->get('config_currency'), '', false),
- 'currency_id' => $currency_info['currency_id'],
- 'currency_code' => $currency_info['code'],
- 'currency_value' => $currency_info['value'],
- 'additional_details' => array(
- 'server' => $recurring_order['server'],
- 'login' => $recurring_order['login'],
- 'key' => $recurring_order['key'],
- 'last_four' => substr($customer_payment_recurring->payment->creditCard->cardNumber, -4)
- ),
- 'status' => (($this->config->get('authorizenet_recurring_method') == 'capture') ? 1 : 0)
- ));
- }
- }
- } else {
- $message = 'Failed ' . $this->currency->format($transaction['total'], $this->config->get('config_currency')) . ' || ' . $transaction['error'];
- }
- if ($order_status_id) {
- $this->model_checkout_order->addOrderHistory($new_order_id, $order_status_id, $message, false);
- } else {
- $this->db->query("INSERT INTO `" . DB_PREFIX . "order_history` SET order_id = '" . (int)$new_order_id . "', order_status_id = '0', notify = '0', comment = '" . $this->db->escape($message) . "', date_added = NOW()");
- }
- }
- }
- }
- }
- $this->cart->clear();
- }
- }
- private function addOrderRecurringTransaction($recurring_subscription, $total, $type, $order_id = 0) {
- $this->db->query("INSERT INTO `" . DB_PREFIX . "order_recurring_transaction` SET `order_recurring_id` = '" . (int)$recurring_subscription['order_recurring_id'] . "', `date_added` = NOW(), `amount` = '" . (float)$total . "', `type` = '" . (int)$type . "', `order_id` = '" . (int)$order_id . "'");
- switch($type)
- {
- case 1:
- if ($recurring_subscription['trial_duration_remaining']) {
- $this->model_extension_payment_authorizenet_recurring->decrementSubscriptionTrialDurationRemaining($recurring_subscription['authorizenet_recurring_id']);
- }
- if ($recurring_subscription['trial_duration_remaining'] > 1) {
- if ($recurring_subscription['trial_frequency'] == 'semi_month') {
- $days_per_cycle = date('t', strtotime('first day of next month')) / $recurring_subscription['trial_cycle'];
- $date_recurring = date('Y-m-d', strtotime('+' . $days_per_cycle . ' days', strtotime('first day of next month')));
- } else {
- $date_recurring = date('Y-m-d', strtotime('+' . $recurring_subscription['trial_cycle'] . ' ' . $recurring_subscription['trial_frequency']));
- }
- } else {
- if ($recurring_subscription['recurring_frequency'] == 'semi_month') {
- $days_per_cycle = date('t', strtotime('first day of next month')) / $recurring_subscription['recurring_cycle'];
- $date_recurring = date('Y-m-d', strtotime('+' . $days_per_cycle . ' days', strtotime('first day of next month')));
- } else {
- $date_recurring = date('Y-m-d', strtotime('+' . $recurring_subscription['recurring_cycle'] . ' ' . $recurring_subscription['recurring_frequency']));
- }
- if ($recurring_subscription['duration_remaining'] > 0) {
- $this->model_extension_payment_authorizenet_recurring->decrementSubscriptionDurationRemaining($recurring_subscription['authorizenet_recurring_id']);
- if ($recurring_subscription['duration_remaining'] == 1) {
- // 5 = expired
- $this->db->query("UPDATE `" . DB_PREFIX . "order_recurring` SET `status` = '5' WHERE order_recurring_id = '" . (int)$recurring_subscription['order_recurring_id'] . "'");
- }
- }
- }
- $this->model_extension_payment_authorizenet_recurring->removeSubscriptionFailedAttempts($recurring_subscription['authorizenet_recurring_id']);
- $this->model_extension_payment_authorizenet_recurring->editSubscriptionRecurringDate($recurring_subscription['authorizenet_recurring_id'], $date_recurring);
- break;
- case 4:
- $this->model_extension_payment_authorizenet_recurring->addSubscriptionFailedAttempt($recurring_subscription['authorizenet_recurring_id']);
- if ($recurring_subscription['failed_attempts'] < (3 - 1)) {
- //$this->model_extension_payment_authorizenet_recurring->editSubscriptionRecurringDate($recurring_subscription['authorizenet_recurring_id'], date('Y-m-d', strtotime('tomorrow')));
- } else {
- $this->db->query("UPDATE `" . DB_PREFIX . "order_recurring` SET `status` = '" . (int)$this->config->get('authorizenet_recurring_recurring_cancel_status') . "' WHERE order_recurring_id = '" . (int)$recurring_subscription['order_recurring_id'] . "'");
- }
- break;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment