/**
  * process_gateway_notification method, receives data from the payment gateway
  * @access public
  */
 function process_gateway_notification()
 {
     // Compare the received store owner email address to the set one
     if (strtolower($this->paypal_ipn_values['receiver_email']) == strtolower(get_option('paypal_multiple_business'))) {
         switch ($this->paypal_ipn_values['txn_type']) {
             case 'cart':
             case 'express_checkout':
                 if ((double) $this->paypal_ipn_values['mc_gross'] == (double) $this->cart_data['total_price']) {
                     $this->set_transaction_details($this->paypal_ipn_values['txn_id'], 2);
                     transaction_results($this->cart_data['session_id'], false);
                 }
                 break;
             case 'subscr_signup':
             case 'subscr_payment':
                 $this->set_transaction_details($this->paypal_ipn_values['subscr_id'], 2);
                 foreach ($this->cart_items as $cart_row) {
                     if ($cart_row['is_recurring'] == true) {
                         do_action('wpsc_activate_subscription', $cart_row['cart_item_id'], $this->paypal_ipn_values['subscr_id']);
                     }
                 }
                 transaction_results($this->cart_data['session_id'], false);
                 break;
             case 'subscr_cancel':
             case 'subscr_eot':
             case 'subscr_failed':
                 foreach ($this->cart_items as $cart_row) {
                     $altered_count = 0;
                     if ((bool) $cart_row['is_recurring'] == true) {
                         $altered_count++;
                         wpsc_update_cartmeta($cart_row['cart_item_id'], 'is_subscribed', 0);
                     }
                 }
                 break;
             default:
                 break;
         }
     }
     $message = "\n\t\t{$this->paypal_ipn_values['receiver_email']} => " . get_option('paypal_multiple_business') . "\n\t\t{$this->paypal_ipn_values['txn_type']}\n\t\t{$this->paypal_ipn_values['mc_gross']} => {$this->cart_data['total_price']}\n\t\t{$this->paypal_ipn_values['txn_id']}\n\n\t\t" . print_r($this->cart_items, true) . "\n\t\t{$altered_count}\n\t\t";
 }
Example #2
0
 /**
  * save to database method
  * @access public
  *
  * @param integer purchase log id
  */
 function save_to_db($purchase_log_id)
 {
     global $wpdb, $wpsc_shipping_modules;
     $method = $this->cart->selected_shipping_method;
     $shipping = 0;
     if (!empty($method) && method_exists($wpsc_shipping_modules[$method], "get_item_shipping")) {
         $shipping = $wpsc_shipping_modules[$this->cart->selected_shipping_method]->get_item_shipping($this);
     }
     if ($this->cart->has_total_shipping_discount()) {
         $shipping = 0;
     }
     $shipping = apply_filters('wpsc_item_shipping_amount_db', $shipping, $this);
     //initialize tax variables
     $tax = 0;
     $tax_rate = 0;
     //wpec_taxes - calculate product tax and add to total price
     $wpec_taxes_controller = new wpec_taxes_controller();
     if ($wpec_taxes_controller->wpec_taxes_isincluded() && $wpec_taxes_controller->wpec_taxes_isenabled()) {
         $taxes = $wpec_taxes_controller->wpec_taxes_calculate_included_tax($this);
         $tax_rate = $taxes['rate'];
         $tax = $taxes['tax'];
     }
     $wpdb->insert(WPSC_TABLE_CART_CONTENTS, array('prodid' => $this->product_id, 'name' => $this->get_title(), 'purchaseid' => $purchase_log_id, 'price' => $this->unit_price, 'pnp' => $shipping, 'tax_charged' => $tax, 'gst' => $tax_rate, 'quantity' => $this->quantity, 'donation' => $this->is_donation, 'no_shipping' => 0, 'custom_message' => $this->custom_message, 'files' => serialize($this->custom_file), 'meta' => NULL), array('%d', '%s', '%d', '%f', '%f', '%f', '%f', '%s', '%d', '%d', '%s', '%s', '%s'));
     $cart_id = $wpdb->get_var("SELECT " . $wpdb->insert_id . " AS `id` FROM `" . WPSC_TABLE_CART_CONTENTS . "` LIMIT 1");
     wpsc_update_cartmeta($cart_id, 'sku', $this->sku);
     $downloads = get_option('max_downloads');
     if ($this->is_downloadable == true) {
         $product_files = (array) get_posts(array('post_type' => 'wpsc-product-file', 'post_parent' => $this->product_id, 'numberposts' => -1, 'post_status' => 'inherit'));
         foreach ($product_files as $file) {
             // if the file is downloadable, check that the file is real
             $unique_id = sha1(uniqid(mt_rand(), true));
             $wpdb->insert(WPSC_TABLE_DOWNLOAD_STATUS, array('product_id' => $this->product_id, 'fileid' => $file->ID, 'purchid' => $purchase_log_id, 'cartid' => $cart_id, 'uniqueid' => $unique_id, 'downloads' => $downloads, 'active' => 0, 'datetime' => date('Y-m-d H:i:s')), array('%d', '%d', '%d', '%d', '%s', '%s', '%d', '%s'));
             $download_id = $wpdb->get_var("SELECT " . $wpdb->insert_id . " AS `id` FROM `" . WPSC_TABLE_DOWNLOAD_STATUS . "` LIMIT 1");
             wpsc_update_meta($download_id, '_is_legacy', 'false', 'wpsc_downloads');
         }
     }
     do_action('wpsc_save_cart_item', $cart_id, $this->product_id);
 }
Example #3
0
 /**
  * save to database method
  * @access public
  *
  * @param integer purchase log id
  */
 function save_to_db($purchase_log_id)
 {
     global $wpdb, $wpsc_shipping_modules;
     $method = $this->cart->selected_shipping_method;
     $shipping = 0;
     if (!empty($method) && method_exists($wpsc_shipping_modules[$method], "get_item_shipping")) {
         $shipping = $wpsc_shipping_modules[$this->cart->selected_shipping_method]->get_item_shipping($this);
     }
     if ($this->cart->has_total_shipping_discount()) {
         $shipping = 0;
     }
     //initialize tax variables
     $tax = 0;
     $tax_rate = 0;
     //wpec_taxes - calculate product tax and add to total price
     $wpec_taxes_controller = new wpec_taxes_controller();
     if ($wpec_taxes_controller->wpec_taxes_isincluded() && $wpec_taxes_controller->wpec_taxes_isenabled()) {
         $taxes = $wpec_taxes_controller->wpec_taxes_calculate_included_tax($this);
         $tax_rate = $taxes['rate'];
         $tax = $taxes['tax'];
     }
     $wpdb->query($wpdb->prepare("INSERT INTO `" . WPSC_TABLE_CART_CONTENTS . "` (\n         `prodid`, `name`, `purchaseid`,  `price`, `pnp`,\n         `tax_charged`, `gst`, `quantity`, `donation`,\n         `no_shipping`, `custom_message`, `files`, `meta`\n      ) VALUES ('%d', '%s', '%d', '%s', '%s', '%s', '%s', '%s', '%d', '0', '%s', '%s', NULL)", $this->product_id, $this->product_name, $purchase_log_id, $this->unit_price, (double) $shipping, (double) $tax, (double) $tax_rate, $this->quantity, $this->is_donation, $this->custom_message, serialize($this->custom_file)));
     $cart_id = $wpdb->get_var("SELECT LAST_INSERT_ID() AS `id` FROM `" . WPSC_TABLE_CART_CONTENTS . "` LIMIT 1");
     wpsc_update_cartmeta($cart_id, 'sku', $this->sku);
     $downloads = get_option('max_downloads');
     if ($this->is_downloadable == true) {
         $product_files = (array) get_posts(array('post_type' => 'wpsc-product-file', 'post_parent' => $this->product_id, 'numberposts' => -1, 'post_status' => 'inherit'));
         foreach ($product_files as $file) {
             // if the file is downloadable, check that the file is real
             $unique_id = sha1(uniqid(mt_rand(), true));
             $wpdb->query("INSERT INTO `" . WPSC_TABLE_DOWNLOAD_STATUS . "` (\n               `product_id` , `fileid` ,\n               `purchid` , `cartid`,\n               `uniqueid`, `downloads`,\n               `active` , `datetime`\n            ) VALUES (\n               '{$this->product_id}', '{$file->ID}',\n               '{$purchase_log_id}', '{$cart_id}',\n               '{$unique_id}', '{$downloads}',\n               '0', NOW()\n            );");
             $download_id = $wpdb->get_var("SELECT LAST_INSERT_ID() AS `id` FROM `" . WPSC_TABLE_DOWNLOAD_STATUS . "` LIMIT 1");
             wpsc_update_meta($download_id, '_is_legacy', 'false', 'wpsc_downloads');
         }
     }
     do_action('wpsc_save_cart_item', $cart_id, $this->product_id);
 }
Example #4
0
 /**
  * cancel_subscription, cancels a subscription.
  * @access public
  */
 function cancel_subscription($cart_id, $subscription_id)
 {
     $arb_body = array('merchantAuthentication' => array('name' => get_option('authorize_login'), 'transactionKey' => get_option("authorize_password")), 'subscriptionId' => $subscription_id);
     $subscription_results = $this->do_soap_request('ARBCancelSubscription', $arb_body);
     if ($subscription_results['ARBCancelSubscriptionResult']['resultCode'] == "Ok") {
         wpsc_update_cartmeta($cart_id, 'is_subscribed', 0);
     }
 }
 /**
  * process_gateway_notification method, receives data from the payment gateway
  * @access public
  */
 function process_gateway_notification()
 {
     global $wpdb;
     $status = false;
     switch (strtolower($this->paypal_ipn_values['payment_status'])) {
         case 'pending':
             $status = 2;
             break;
         case 'completed':
             $status = 3;
             break;
         case 'denied':
             $status = 6;
             break;
     }
     do_action('wpsc_paypal_standard_ipn', $this->paypal_ipn_values, $this);
     $paypal_email = strtolower(get_option('paypal_multiple_business'));
     // Compare the received store owner email address to the set one
     if (strtolower($this->paypal_ipn_values['receiver_email']) == $paypal_email || strtolower($this->paypal_ipn_values['business']) == $paypal_email) {
         switch ($this->paypal_ipn_values['txn_type']) {
             case 'cart':
             case 'express_checkout':
             case 'web_accept':
                 // import shipping & billing details if this is from "Buy Now" button
                 if (isset($this->paypal_ipn_values['custom']) && $this->paypal_ipn_values['custom'] == 'buy_now') {
                     $this->import_ipn_data();
                 }
                 if ($status) {
                     $this->set_transaction_details($this->paypal_ipn_values['txn_id'], $status);
                 }
                 if (in_array($status, array(2, 3))) {
                     transaction_results($this->cart_data['session_id'], false);
                 }
                 break;
             case 'subscr_signup':
             case 'subscr_payment':
                 if (in_array($status, array(2, 3))) {
                     $this->set_transaction_details($this->paypal_ipn_values['subscr_id'], $status);
                     transaction_results($this->cart_data['session_id'], false);
                 }
                 foreach ($this->cart_items as $cart_row) {
                     if ($cart_row['is_recurring'] == true) {
                         do_action('wpsc_activate_subscription', $cart_row['cart_item_id'], $this->paypal_ipn_values['subscr_id']);
                         do_action('wpsc_activated_subscription', $cart_row['cart_item_id'], $this);
                     }
                 }
                 break;
             case 'subscr_cancel':
                 do_action('wpsc_paypal_standard_deactivate_subscription', $this->paypal_ipn_values['subscr_id'], $this);
             case 'subscr_eot':
             case 'subscr_failed':
                 foreach ($this->cart_items as $cart_row) {
                     $altered_count = 0;
                     if ((bool) $cart_row['is_recurring'] == true) {
                         $altered_count++;
                         wpsc_update_cartmeta($cart_row['cart_item_id'], 'is_subscribed', 0);
                     }
                 }
                 break;
             default:
                 break;
         }
     }
 }
 /**
  * process_gateway_notification method, receives data from the payment gateway
  * @access public
  */
 function process_gateway_notification()
 {
     $status = false;
     switch (strtolower($this->paypal_ipn_values['payment_status'])) {
         case 'pending':
             $status = 2;
             break;
         case 'completed':
             $status = 3;
             break;
         case 'denied':
             $status = 6;
             break;
     }
     do_action('wpsc_paypal_standard_ipn', $this->paypal_ipn_values, $this);
     $paypal_email = strtolower(get_option('paypal_multiple_business'));
     // Compare the received store owner email address to the set one
     if (strtolower($this->paypal_ipn_values['receiver_email']) == $paypal_email || strtolower($this->paypal_ipn_values['business']) == $paypal_email) {
         switch ($this->paypal_ipn_values['txn_type']) {
             case 'cart':
             case 'express_checkout':
                 if ($status) {
                     $this->set_transaction_details($this->paypal_ipn_values['txn_id'], $status);
                 }
                 if (in_array($status, array(2, 3))) {
                     transaction_results($this->cart_data['session_id'], false);
                 }
                 break;
             case 'subscr_signup':
             case 'subscr_payment':
                 if (in_array($status, array(2, 3))) {
                     $this->set_transaction_details($this->paypal_ipn_values['subscr_id'], $status);
                     transaction_results($this->cart_data['session_id'], false);
                 }
                 foreach ($this->cart_items as $cart_row) {
                     if ($cart_row['is_recurring'] == true) {
                         do_action('wpsc_activate_subscription', $cart_row['cart_item_id'], $this->paypal_ipn_values['subscr_id']);
                     }
                 }
                 break;
             case 'subscr_cancel':
             case 'subscr_eot':
             case 'subscr_failed':
                 foreach ($this->cart_items as $cart_row) {
                     $altered_count = 0;
                     if ((bool) $cart_row['is_recurring'] == true) {
                         $altered_count++;
                         wpsc_update_cartmeta($cart_row['cart_item_id'], 'is_subscribed', 0);
                     }
                 }
                 break;
             default:
                 break;
         }
     }
     $message = "\n\t\t{$this->paypal_ipn_values['receiver_email']} => " . get_option('paypal_multiple_business') . "\n\t\t{$this->paypal_ipn_values['txn_type']}\n\t\t{$this->paypal_ipn_values['mc_gross']} => {$this->cart_data['total_price']}\n\t\t{$this->paypal_ipn_values['txn_id']}\n\n\t\t" . print_r($this->cart_items, true) . "\n\t\t{$altered_count}\n\t\t";
 }