/** * Set create billing agreement flag to api call * * @return Mage_Paypal_Model_Express_Checkout */ protected function _setBillingAgreementRequest() { if (!$this->_customerId || $this->_quote->hasNominalItems()) { return $this; } $isRequested = $this->_isBARequested || $this->_quote->getPayment()->getAdditionalInformation(self::PAYMENT_INFO_TRANSPORT_BILLING_AGREEMENT); if (!($this->_config->allow_ba_signup == Mage_Paypal_Model_Config::EC_BA_SIGNUP_AUTO || $isRequested && $this->_config->shouldAskToCreateBillingAgreement())) { return $this; } if (!Mage::getModel('sales/billing_agreement')->needToCreateForCustomer($this->_customerId)) { return $this; } $this->_api->setBillingType($this->_api->getBillingAgreementType()); return $this; }
/** * Reserve order ID for specified quote and start checkout on PayPal * * @return mixed */ public function start() { $this->_quote->collectTotals(); if (!$this->_quote->getGrandTotal() && !$this->_quote->hasNominalItems()) { Mage::throwException(Mage::helper('payone_core')->__('PayPal does not support processing orders with zero amount. To complete your purchase, proceed to the standard checkout process.')); } $this->_quote->reserveOrderId()->save(); $service = $this->getFactory()->getServicePaymentGenericpayment($this->_config); $mapper = $service->getMapper(); $request = $mapper->mapExpressCheckoutParameters($this->_quote); $response = $this->getFactory()->getServiceApiPaymentGenericpayment()->request($request); if ($response instanceof Payone_Api_Response_Genericpayment_Redirect) { $this->_redirectUrl = $response->getRedirecturl(); $this->_workorderid = $response->getWorkorderId(); } }
/** * Reserve order ID for specified quote and start checkout on PayPal * * @param string * @param string * @param bool|null $button specifies if we came from Checkout Stream or from Product/Cart directly * @return mixed */ public function start($returnUrl, $cancelUrl, $button = null) { $this->_quote->collectTotals(); if (!$this->_quote->getGrandTotal() && !$this->_quote->hasNominalItems()) { Mage::throwException($this->_helper->__(self::EBAYENTERPRISE_PAYPAL_ZERO_CHECKOUT_NOT_SUPPORTED)); } $this->_quote->reserveOrderId()->save(); $this->_getApi(); $setExpressCheckoutReply = $this->_api->setExpressCheckout($returnUrl, $cancelUrl, $this->_quote); if ($button) { // mark the payment to indicate express checkout was initiated from // outside the normal checkout flow // (e.g. clicked paypal checkout button from product page) $setExpressCheckoutReply[self::PAYMENT_INFO_BUTTON] = 1; } $this->_quote->getPayment()->importData($setExpressCheckoutReply); $this->_quote->getPayment()->save(); return $setExpressCheckoutReply; }
/** * Check if the quote has zero grandtotal. * @param Mage_Sales_Model_Quote $quote * @return bool */ protected function _hasZeroGrandTotal(Mage_Sales_Model_Quote $quote) { return !$quote->validateMinimumAmount() || !$quote->getGrandTotal() && !$quote->hasNominalItems(); }