Beispiel #1
0
 public function ipnPostSubmit()
 {
     // Give PAP access to the data so it can handle any needed commissions
     try {
         $papModel = Mage::getModel('pap/pap');
         $postData = $this->getIpnFormData();
         $customdata = explode('~~~a469ccb0-767c-4fed-96de-99427e1783aa~~~', $postData['custom']);
         $saleData = isset($customdata[0]) ? $customdata[0] : null;
         $cookieValue = isset($customdata[1]) ? $customdata[1] : null;
         // Convert the JSON data into a usable array
         $saleData = json_decode($saleData);
         $saleData = $this->ForceArray($saleData);
         $sReq = '';
         foreach ($this->getIpnFormData() as $k => $v) {
             $sReq .= '&' . $k . '=' . urlencode(stripslashes($v));
         }
         //append ipn commdn
         $sReq .= "&cmd=_notify-validate";
         $sReq = substr($sReq, 1);
         $http = new Varien_Http_Adapter_Curl();
         $http->write(Zend_Http_Client::POST, $this->getPaypalUrl(), '1.1', array(), $sReq);
         $response = $http->read();
         $response = preg_split('/^\\r?$/m', $response, 2);
         $response = trim($response[1]);
         if ($response == 'VERIFIED') {
             $papModel->registerSaleDetails($saleData, isset($cookieValue) ? $cookieValue : null);
         }
     } catch (Exception $e) {
         Mage::log('Caught exception while trying to log PayPal sale: ' . $e->getMessage() . "\n");
     }
     // let the base class go on to do whatever processing it was going to do
     parent::ipnPostSubmit();
 }
Beispiel #2
0
 /**
  * Appends Sweet Tooth information 
  * @note: As of Sweet Tooth 1.5.0.3, this rewrite has been replaced with the TBT_Rewards_Model_Paypal_Observer observer for 
  *        all versions of Magento greater than or equal to 1.4.1.  Previous versions do not dispatch the paypal_prepare_line_items 
  *        event
  * @deprecated for Magento 1.4.1+ as of  Sweet Tooth 1.5.0.3
  *
  * @return array paypal checkout fields
  */
 public function getStandardCheckoutFormFields()
 {
     $scf = parent::getStandardCheckoutFormFields();
     // Only run for Magento 1.4.0.x and lower; newer versions use thew paypal_prepare_line_items event obsrever in the TBT_Rewards_Model_Paypal_Observer class
     if (Mage::helper('rewards/version')->isBaseMageVersionAtLeast('1.4.1')) {
         return $scf;
     }
     $items = $this->_getQuote()->getAllItems();
     //@nelkaake -a 16/11/10: There are two major things we need to do here:
     // 1. If the balance is 0, make sure there is at least 1 penny in the subtotal so PayPal lets us checkout.
     // 2. Gather all of our catalog points redemption discounts and add them to the final cart discount total.
     Mage::getSingleton('rewards/redeem')->refactorRedemptions($items);
     $disc_attr = 'discount_amount';
     if (isset($scf[$disc_attr])) {
         $discountAmount = (double) $scf[$disc_attr];
         if ($discountAmount >= $this->_getQuote()->getSubtotal()) {
             //@nelkaake Sunday April 25, 2010 : We're discounting the whole amount, so we need to add a premium in order for PayPal to see the output.
             $scf[$disc_attr] = (double) $scf[$disc_attr] - $this->getPaypalZeroCheckoutFee();
             $scf[$disc_attr] = (string) $scf[$disc_attr];
         }
     } else {
         $scf[$disc_attr] = 0;
     }
     $scf[$disc_attr] = (double) $scf[$disc_attr];
     //@nelkaake -a 16/11/10: Figure out the accumulated difference in price so we can add to the discount amount
     //TODO @nelkaake: Can we calculate the discount amount another way, perhaps using the new getCatalogDiscount method in the Redeem singleton?
     $acc_diff = $this->getDiscountDisplacement();
     $scf[$disc_attr] += $acc_diff;
     //@nelkaake Added on Monday October 4, 2010: Uncomment this if you want to see what's being sent to PayPal standard checkout
     //Mage::helper('rewards/debug')->dd(array($scf, Mage::helper('rewards/debug')->getSimpleBacktrace() ));
     return $scf;
 }
Beispiel #3
0
 /**
  * Appends Sweet Tooth information 
  * @note: As of Sweet Tooth 1.5.0.3, this rewrite has been replaced with the TBT_Rewards_Model_Paypal_Observer observer for 
  * all versions of Magento greater than or equal to 1.4.2.  Previous versions do not dispatch the paypal_prepare_line_items 
  * event
  * There are two major things we need to do here: 
  * 1. If the balance is 0, make sure there is at least 1 penny in the subtotal so PayPal lets us checkout.  
  * 2. Gather all of our catalog points redemption discounts and add them to the final cart discount total.
  * @deprecated for Magento 1.4.2+ as of  Sweet Tooth 1.5.0.3
  *
  * @return array paypal checkout fields
  */
 public function getStandardCheckoutFormFields()
 {
     $scf = parent::getStandardCheckoutFormFields();
     // Only run for Magento 1.4.0.x and lower; newer versions use thew paypal_prepare_line_items event obsrever in the TBT_Rewards_Model_Paypal_Observer class
     if (Mage::helper('rewards/version')->isBaseMageVersionAtLeast('1.4.2')) {
         return $scf;
     }
     $items = $this->_getQuote()->getAllItems();
     //@nelkaake -a 16/11/10:
     Mage::getSingleton('rewards/redeem')->refactorRedemptions($items);
     // In Magento 1.4.1 - 1.4.1.1 for some reason discount_amount_cart is used instead of discount_amount
     if (Mage::helper('rewards/version')->isBaseMageVersionAtLeast('1.4.1')) {
         $disc_attr = 'discount_amount_cart';
     } else {
         $disc_attr = 'discount_amount';
     }
     // Init discount amount field
     if (!isset($scf[$disc_attr])) {
         $scf[$disc_attr] = 0;
     }
     $scf[$disc_attr] = (double) $scf[$disc_attr];
     //@nelkaake -a 16/11/10: Figure out the accumulated difference in price so we can add to the discount amount
     $acc_diff = $this->getDiscountDisplacement();
     $scf[$disc_attr] += $acc_diff;
     //@nelkaake Added on Monday October 4, 2010: Uncomment this if you want to see what's being sent to PayPal standard checkout
     //Mage::helper('rewards/debug')->dd(array($scf, Mage::helper('rewards/debug')->getSimpleBacktrace() ));
     return $scf;
 }
 private function _getAggregatedCartSummary()
 {
     if (!Mage::helper('imagecc')->isActive()) {
         return parent::_getAggregatedCartSummary();
     }
     if ($this->_config->lineItemsSummary) {
         return $this->_config->lineItemsSummary;
     }
     return Mage::app()->getStore($this->getStore())->getFrontendName();
 }
 public function getStandardCheckoutFormFields()
 {
     if (Mage::helper('sarp')->extensionEnabled('AW_Points') && Mage::helper('points')->magentoLess14()) {
         if ($this->getQuote()->getIsVirtual()) {
             $a = $this->getQuote()->getBillingAddress();
             $b = $this->getQuote()->getShippingAddress();
         } else {
             $a = $this->getQuote()->getShippingAddress();
             $b = $this->getQuote()->getBillingAddress();
         }
         //getQuoteCurrencyCode
         $currency_code = $this->getQuote()->getBaseCurrencyCode();
         /*
         //we validate currency before sending paypal so following code is obsolete
         
         if (!in_array($currency_code,$this->_allowCurrencyCode)) {
             //if currency code is not allowed currency code, use USD as default
             $storeCurrency = Mage::getSingleton('directory/currency')
                 ->load($this->getQuote()->getStoreCurrencyCode());
             $amount = $storeCurrency->convert($amount, 'USD');
             $currency_code='USD';
         }
         */
         $sArr = array('charset' => self::DATA_CHARSET, 'business' => Mage::getStoreConfig('paypal/wps/business_account'), 'return' => Mage::getUrl('paypal/standard/success', array('_secure' => true)), 'cancel_return' => Mage::getUrl('paypal/standard/cancel', array('_secure' => false)), 'notify_url' => Mage::getUrl('paypal/standard/ipn'), 'invoice' => $this->getCheckout()->getLastRealOrderId(), 'currency_code' => $currency_code, 'address_override' => 1, 'first_name' => $a->getFirstname(), 'last_name' => $a->getLastname(), 'address1' => $a->getStreet(1), 'address2' => $a->getStreet(2), 'city' => $a->getCity(), 'state' => $a->getRegionCode(), 'country' => $a->getCountry(), 'zip' => $a->getPostcode(), 'bn' => 'Varien_Cart_WPS_US');
         $logoUrl = Mage::getStoreConfig('paypal/wps/logo_url');
         if ($logoUrl) {
             $sArr = array_merge($sArr, array('cpp_header_image' => $logoUrl));
         }
         if ($this->getConfigData('payment_action') == self::PAYMENT_TYPE_AUTH) {
             $sArr = array_merge($sArr, array('paymentaction' => 'authorization'));
         }
         $transaciton_type = $this->getConfigData('transaction_type');
         /*
         O=aggregate cart amount to paypal
         I=individual items to paypal
         */
         if ($transaciton_type == 'O') {
             $businessName = Mage::getStoreConfig('paypal/wps/business_name');
             $storeName = Mage::getStoreConfig('store/system/name');
             $amount = $a->getBaseSubtotal() + $b->getBaseSubtotal() - ($a->getBaseDiscountAmount() + $b->getBaseDiscountAmount());
             $session = Mage::getSingleton('checkout/session');
             if ($session->getData('use_points')) {
                 if ($a->getBaseGrandTotal() || $b->getBaseGrandTotal()) {
                     $pointsAmountUsed = $session->getData('points_amount');
                     $rate = Mage::getModel('points/rate')->loadByDirection(AW_Points_Model_Rate::POINTS_TO_CURRENCY);
                     $moneyBaseCurrencyForPoints = $rate->exchange($pointsAmountUsed);
                     $amount -= $moneyBaseCurrencyForPoints;
                     if ($amount <= 0) {
                         $amount = 0;
                     }
                 }
             }
             $sArr = array_merge($sArr, array('cmd' => '_ext-enter', 'redirect_cmd' => '_xclick', 'item_name' => $businessName ? $businessName : $storeName, 'amount' => sprintf('%.2f', $amount)));
             $_shippingTax = $this->getQuote()->getShippingAddress()->getBaseTaxAmount();
             $_billingTax = $this->getQuote()->getBillingAddress()->getBaseTaxAmount();
             $tax = sprintf('%.2f', $_shippingTax + $_billingTax);
             if ($tax > 0) {
                 $sArr = array_merge($sArr, array('tax' => $tax));
             }
         } else {
             $sArr = array_merge($sArr, array('cmd' => '_cart', 'upload' => '1'));
             //TODO: Individual items discount
             $session = Mage::getSingleton('checkout/session');
             if ($session->getData('use_points')) {
                 if ($a->getBaseGrandTotal() || $b->getBaseGrandTotal()) {
                     $pointsAmountUsed = $session->getData('points_amount');
                     $rate = Mage::getModel('points/rate')->loadByDirection(AW_Points_Model_Rate::POINTS_TO_CURRENCY);
                     $moneyBaseCurrencyForPoints = $rate->exchange($pointsAmountUsed);
                     $sArr = array_merge($sArr, array('discount_amount_cart' => sprintf('%.2f', $moneyBaseCurrencyForPoints)));
                 }
             }
             $items = $this->getQuote()->getAllItems();
             if ($items) {
                 $i = 1;
                 $summaryTax = 0;
                 foreach ($items as $item) {
                     if ($item->getParentItem()) {
                         continue;
                     }
                     //echo "<pre>"; print_r($item->getData()); echo"</pre>";
                     $sArr = array_merge($sArr, array('item_name_' . $i => $item->getName(), 'item_number_' . $i => $item->getSku(), 'quantity_' . $i => $item->getQty(), 'amount_' . $i => sprintf('%.2f', $item->getBaseCalculationPrice() - $item->getBaseDiscountAmount())));
                     if ($item->getBaseTaxAmount() > 0) {
                         $summaryTax += $item->getBaseTaxAmount() / $item->getQty();
                     }
                     $i++;
                 }
             }
         }
         $totalArr = $a->getTotals();
         $shipping = sprintf('%.2f', $this->getQuote()->getShippingAddress()->getBaseShippingAmount());
         if ($shipping > 0 && !$this->getQuote()->getIsVirtual()) {
             if ($transaciton_type == 'O') {
                 $sArr = array_merge($sArr, array('shipping' => $shipping));
             } else {
                 $shippingTax = $this->getQuote()->getShippingAddress()->getBaseShippingTaxAmount();
                 $sArr = array_merge($sArr, array('item_name_' . $i => $totalArr['shipping']->getTitle(), 'quantity_' . $i => 1, 'amount_' . $i => sprintf('%.2f', $shipping)));
                 $summaryTax += $shippingTax;
                 $i++;
             }
         }
         if ($transaciton_type != 'O') {
             $sArr = array_merge($sArr, array('tax_cart' => sprintf('%.2f', $summaryTax)));
         }
         $sReq = '';
         $sReqDebug = '';
         $rArr = array();
         foreach ($sArr as $k => $v) {
             /*
             replacing & char with and. otherwise it will break the post
             */
             $value = str_replace("&", "and", $v);
             $rArr[$k] = $value;
             $sReq .= '&' . $k . '=' . $value;
             $sReqDebug .= '&' . $k . '=';
             if (in_array($k, $this->_debugReplacePrivateDataKeys)) {
                 $sReqDebug .= '***';
             } else {
                 $sReqDebug .= $value;
             }
         }
         if ($this->getDebug() && $sReq) {
             $sReq = substr($sReq, 1);
             $debug = Mage::getModel('paypal/api_debug')->setApiEndpoint($this->getPaypalUrl())->setRequestBody($sReq)->save();
         }
         return $rArr;
     }
     return parent::getStandardCheckoutFormFields();
 }