function start($iAccountId) { $this->checkTrialAllowed(array('type' => 'id', 'value' => $iAccountId)); $oBADetails = new BillingAgreementDetailsType(); $oBADetails->BillingType = 'RecurringPayments'; $oBADetails->BillingAgreementDescription = $this->sDescription; $oBAReqDetails = new SetCustomerBillingAgreementRequestDetailsType(); $oBAReqDetails->BillingAgreementDetails = $oBADetails; $oBAReqDetails->ReturnURL = $this->sUrlReturn; $oBAReqDetails->CancelURL = $this->sUrlCancel; $oBARequest = new SetCustomerBillingAgreementRequestType(); $oBARequest->SetCustomerBillingAgreementRequestDetails = $oBAReqDetails; $oBAReq = new SetCustomerBillingAgreementReq(); $oBAReq->SetCustomerBillingAgreementRequest = $oBARequest; $oPaypalService = new PayPalAPIInterfaceServiceService(); try { $oBAResponse = $oPaypalService->SetCustomerBillingAgreement($oBAReq); } catch (Exception $oException) { $this->_logException($oException); exit; } if (!isset($oBAResponse)) { $sLog = "---\n"; $sLog .= "--- Get Token: {date}\n"; $sLog .= "--- Request: " . $oPaypalService->getLastRequest() . "\n"; $sLog .= "--- Response: " . $oPaypalService->getLastResponse() . "\n"; $sLog .= "---\n"; $this->_logError($sLog); return; } $sLog = "---\n"; $sLog .= "--- Get Token: {date}\n"; $sLog .= "--- Status: " . $oBAResponse->Ack . "\n"; $sLog .= "--- Token: " . $oBAResponse->Token; $this->_logNote($sLog); $this->_logNote($oBAResponse); $this->_logNote("---\n"); if ($oBAResponse->Ack == 'Success') { $sToken = $oBAResponse->Token; $oAccount = $this->_oModule->getObject('Account'); $oAccount->onTokenReceived($sToken, $iAccountId); $sUrl = $this->bDemo ? 'https://www.sandbox.paypal.com/' : 'https://www.paypal.com/'; return $sUrl . 'webscr?cmd=_customer-billing-agreement&token=' . $sToken; } }