public function testPrepareAddressInfo() { $this->_profile->setData('billing_address_info', array('city' => 'Los Angeles')); $this->_block->prepareAddressInfo(); $info = $this->_block->getRenderedInfo(); $this->assertContains('Los Angeles', $info[0]->getValue()); }
/** * Register recurring payment notification, create and process order */ protected function _registerRecurringProfilePaymentCapture() { $price = $this->getRequestData('mc_gross') - $this->getRequestData('tax') - $this->getRequestData('shipping'); $productItemInfo = new Varien_Object(); $type = trim($this->getRequestData('period_type')); if ($type == 'Trial') { $productItemInfo->setPaymentType(Mage_Sales_Model_Recurring_Profile::PAYMENT_TYPE_TRIAL); } elseif ($type == 'Regular') { $productItemInfo->setPaymentType(Mage_Sales_Model_Recurring_Profile::PAYMENT_TYPE_REGULAR); } $productItemInfo->setTaxAmount($this->getRequestData('tax')); $productItemInfo->setShippingAmount($this->getRequestData('shipping')); $productItemInfo->setPrice($price); /** @var $order Mage_Sales_Model_Order */ $order = $this->_recurringProfile->createOrder($productItemInfo); $payment = $order->getPayment(); $payment->setTransactionId($this->getRequestData('txn_id'))->setCurrencyCode($this->getRequestData('mc_currency'))->setPreparedMessage($this->_createIpnComment(''))->setIsTransactionClosed(0); $order->save(); $this->_recurringProfile->addOrderRelation($order->getId()); $payment->registerCaptureNotification($this->getRequestData('mc_gross')); $order->save(); $invoice = $payment->getCreatedInvoice(); if ($invoice) { // notify customer $message = Mage::helper('paypal')->__('Notified customer about invoice #%s.', $invoice->getIncrementId()); $order->queueNewOrderEmail()->addStatusHistoryComment($message)->setIsCustomerNotified(true)->save(); } }
/** * Render self only if needed, also render info tabs group if needed * * @return string */ protected function _toHtml() { if (!$this->_profile || $this->_shouldRenderInfo && !$this->_info) { return ''; } if ($this->hasShouldPrepareInfoTabs()) { foreach ($this->getChildGroup('info_tabs') as $block) { $block->setViewUrl($this->getUrl("*/*/{$block->getViewAction()}", array('profile' => $this->_profile->getId()))); } } return parent::_toHtml(); }
/** * Render self only if needed, also render info tabs group if needed * * @return string */ protected function _toHtml() { if (!$this->_profile || $this->_shouldRenderInfo && !$this->_info) { return ''; } if ($this->hasShouldPrepareInfoTabs()) { $layout = $this->getLayout(); foreach ($this->getGroupChildNames('info_tabs') as $name) { $block = $layout->getBlock($name); if (!$block) { continue; } $block->setViewUrl($this->getUrl("*/*/{$block->getViewAction()}", array('profile' => $this->_profile->getId()))); } } return parent::_toHtml(); }
/** * Getter for period unit options with "Please Select" label * * @return array */ protected function _getPeriodUnitOptions($emptyLabel) { return array_merge(array('' => $emptyLabel), $this->_profile->getAllPeriodUnits()); }
protected function isInitialProfileOrder(Mage_Sales_Model_Recurring_Profile $profile) { if (count($profile->getChildOrderIds()) && current($profile->getChildOrderIds()) == "-1") { return true; } return false; }
<?php /** * Magento * * NOTICE OF LICENSE * * This source file is subject to the Open Software License (OSL 3.0) * that is bundled with this package in the file LICENSE.txt. * It is also available through the world-wide-web at this URL: * http://opensource.org/licenses/osl-3.0.php * If you did not receive a copy of the license and are unable to * obtain it through the world-wide-web, please send an email * to license@magentocommerce.com so we can send you a copy immediately. * * DISCLAIMER * * Do not edit or add to this file if you wish to upgrade Magento to newer * versions in the future. If you wish to customize Magento for your * needs please refer to http://www.magentocommerce.com for more information. * * @category Magento * @package Mage_Paypal * @subpackage integration_tests * @copyright Copyright (c) 2012 Magento Inc. (http://www.magentocommerce.com) * @license http://opensource.org/licenses/osl-3.0.php Open Software License (OSL 3.0) */ $recurringProfile = new Mage_Sales_Model_Recurring_Profile(); $recurringProfile->addData(array('store_id' => 1, 'method_code' => Mage_Paypal_Model_Config::METHOD_WPP_EXPRESS, 'reference_id' => 'I-C76MC3FM2HBX', 'internal_reference_id' => '5-33949e201adc4b03fbbceafccba893ce', 'schedule_description' => 'Recurring Profile', 'start_date_is_editable' => '0', 'period_unit' => 'day', 'period_frequency' => '1', 'period_max_cycles' => '3', 'trial_period_unit' => 'day', 'trial_period_frequency' => '1', 'trial_period_max_cycles' => '3', 'trial_billing_amount' => '100.0000', 'init_amount' => '100.0000', 'billing_amount' => '100.0000', 'currency_code' => 'USD', 'order_info' => array('base_currency_code' => 'USD'), 'order_item_info' => serialize('item info'), 'billing_address_info' => serialize('billing address info'))); $recurringProfile->save();
/** * Checks the status of the recurring profile against the system configuration value * @param Mage_Sales_Model_Recurring_Profile $recurringProfile * @return mixed */ protected function _customerRecurringProfileCanBecomeVip($recurringProfile) { return Mage::helper('meanbee_vipmembership')->isRecurringProfileStatusAllowed($recurringProfile->getState()); }
/** * @param Mage_Sales_Model_Recurring_Profile $profile * @param bool $bool * @return bool * * check Maximum Payment Failures * Maximum Payment Failures <= 0 -> run forever * Maximum Payment Failures > 0 -> save countFailures into additional Info * if isset countFailures -> countFailures - 1 * if countFailures = 0 -> profile is suspended * if Maximum Payment Failures = null -> run forever */ public function checkMaxPaymentFailures(Mage_Sales_Model_Recurring_Profile $profile, $bool = true) { $additional = $profile->getAdditionalInfo(); switch (true) { // Maximum Payment Failures <= 0 or = null -> run forever case (int) $profile->getSuspensionThreshold() <= 0: break; // Maximum Payment Failures > 0 -> save countFailures into additional Info // if countFailures = 0 -> profile is suspended // Maximum Payment Failures > 0 -> save countFailures into additional Info // if countFailures = 0 -> profile is suspended case $profile->getSuspensionThreshold() && !isset($additional['paymentFailures']): $additional['paymentFailures'] = (int) $profile->getSuspensionThreshold() - 1; $profile->setAdditionalInfo($additional); $profile->save(); if ($additional['paymentFailures'] == 0) { $profile->suspend(); $bool = false; } break; // Maximum Payment Failures > 0 -> save countFailures into additional Info // if isset countFailures -> countFailures - 1 // if countFailures = 0 -> profile is suspended // Maximum Payment Failures > 0 -> save countFailures into additional Info // if isset countFailures -> countFailures - 1 // if countFailures = 0 -> profile is suspended case $profile->getSuspensionThreshold() && $additional['paymentFailures'] > 0: $additional['paymentFailures'] -= 1; $profile->setAdditionalInfo($additional); $profile->save(); if ($additional['paymentFailures'] == 0) { $profile->suspend(); $bool = false; } break; default: $profile->suspend(); $bool = false; break; } return $bool; }
/** * Test processIpnRequest() currency check for recurring profile * * @param string $currencyCode * @dataProvider currencyProvider * @magentoDataFixture Mage/Paypal/_files/recurring_profile.php * @magentoConfigFixture current_store payment/paypal_direct/active 1 * @magentoConfigFixture current_store payment/paypal_express/active 1 * @magentoConfigFixture current_store paypal/general/merchant_country US * @magentoConfigFixture current_store sales_email/order/enabled 0 */ public function testProcessIpnRequestRecurringCurrency($currencyCode) { $ipnData = (require __DIR__ . '/../_files/ipn_recurring_profile.php'); $ipnData['mc_currency'] = $currencyCode; $this->_model->processIpnRequest($ipnData, $this->_createMockedHttpAdapter()); $recurringProfile = new Mage_Sales_Model_Recurring_Profile(); $recurringProfile->loadByInternalReferenceId('5-33949e201adc4b03fbbceafccba893ce'); $orderIds = $recurringProfile->getChildOrderIds(); $this->assertEquals(1, count($orderIds)); $order = new Mage_Sales_Model_Order(); $order->load($orderIds[0]); $this->_assertOrder($order, $currencyCode); }