/** * Check whether customer should be asked confirmation whether to sign a billing agreement * * @param Mage_Paypal_Model_Config $config * @param int $customerId * @return bool */ public function shouldAskToCreateBillingAgreement(Mage_Paypal_Model_Config $config, $customerId) { if (null === self::$_shouldAskToCreateBillingAgreement) { self::$_shouldAskToCreateBillingAgreement = false; if ($customerId && $config->shouldAskToCreateBillingAgreement()) { if (Mage::getModel('sales/billing_agreement')->needToCreateForCustomer($customerId)) { self::$_shouldAskToCreateBillingAgreement = true; } } elseif (!$customerId && $config->shouldAskToCreateBillingAgreement()) { self::$_shouldAskToCreateBillingAgreement = true; } } return self::$_shouldAskToCreateBillingAgreement; }
/** * Whether to ask customer to create billing agreements * Unilateral payments are incompatible with the billing agreements * * @return bool */ public function shouldAskToCreateBillingAgreement() { if ($this->getMethodCode() == Mage_Paypal_Model_Config::METHOD_WPP_PE_EXPRESS) { return $this->allow_ba_signup === Mage_Paypal_Model_Config::EC_BA_SIGNUP_ASK && $this->business_account; } return parent::shouldAskToCreateBillingAgreement(); }
/** * 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; }