Пример #1
0
 /**
  * Create billing plan at paypal
  *
  * @param $name
  * @param $description
  * @param $amount
  * @param string $returnUrl
  * @param string $returnCancel
  * @param int $setupFee
  * @param bool $isTrial
  * @param string $currency
  * @param string $planType
  * @param string $definitionName
  * @param string $definitionType
  * @param string $definitionFrequency
  * @param string $definitionFrequencyInterval
  * @param string $definitionCycles
  * @param string $trialDefinitionName
  * @param string $trialDefinitionType
  * @param string $trialDefinitionFrequency
  * @param string $trialDefinitionFrequencyInterval
  * @param string $trialDefinitionCycles
  * @param string $trialDefinitionAmount
  * @return string
  */
 function create($name, $description, $amount, $returnUrl = '', $returnCancel = '', $setupFee = 0, $isTrial = false, $currency = 'USD', $planType = 'fixed', $definitionName = 'Regular Payments', $definitionType = 'REGULAR', $definitionFrequency = 'Month', $definitionFrequencyInterval = '1', $definitionCycles = '12', $trialDefinitionName = 'Trial Period', $trialDefinitionType = 'TRIAL', $trialDefinitionFrequency = '0', $trialDefinitionFrequencyInterval = '0', $trialDefinitionCycles = '0', $trialDefinitionAmount = '0')
 {
     $plan = new Plan();
     $plan->setName($name)->setDescription($description)->setType($planType);
     $paymentDefinition = new PaymentDefinition();
     $paymentDefinition->setName($definitionName)->setType($definitionType)->setFrequency($definitionFrequency)->setFrequencyInterval($definitionFrequencyInterval)->setCycles($definitionCycles)->setAmount(new Currency(array('value' => $amount, 'currency' => $currency)));
     $plan->setPaymentDefinitions(array($paymentDefinition));
     if ($isTrial) {
         $paymentDefinitionTrial = new PaymentDefinition();
         $paymentDefinitionTrial->setName($trialDefinitionName)->setType($trialDefinitionType)->setFrequency($trialDefinitionFrequency)->setFrequencyInterval($trialDefinitionFrequencyInterval)->setCycles($trialDefinitionCycles)->setAmount(new Currency(array('value' => $trialDefinitionAmount, 'currency' => $currency)));
         $plan->addPaymentDefinition($paymentDefinitionTrial);
     }
     $merchantPreferences = new MerchantPreferences();
     $merchantPreferences->setReturnUrl($returnUrl)->setCancelUrl($returnCancel)->setAutoBillAmount("yes")->setInitialFailAmountAction("CONTINUE")->setMaxFailAttempts("0")->setSetupFee(new Currency(array('value' => $setupFee, 'currency' => $currency)));
     $plan->setPaymentDefinitions(array($paymentDefinition));
     $plan->setMerchantPreferences($merchantPreferences);
     $result = $plan->create($this->getAdapter()->getApiContext());
     if ($result) {
         return ['plan' => $result, 'id' => $result->getId(), 'state' => $result->getState(), 'created' => $result->getCreateTime()];
     }
     return $result;
 }