/**
  * Creates a credit card 
  * @param parameters The parameters to be sent to the server
  * @param string $lang language of request see SupportedLanguages class
  * @return The response to the request sent
  * @throws PayUException
  * @throws InvalidArgumentException
  */
 public static function create($parameters, $lang = null)
 {
     PayUSubscriptionsRequestUtil::validateToken($parameters);
     $customerId = CommonRequestUtil::getParameter($parameters, PayUParameters::CUSTOMER_ID);
     if (!isset($customerId)) {
         throw new InvalidArgumentException(" The parameter customer id is mandatory ");
     }
     $request = PayUSubscriptionsRequestUtil::buildCreditCard($parameters);
     $urlSegment = PayUSubscriptionsUrlResolver::getInstance()->getUrlSegment(PayUSubscriptionsUrlResolver::CREDIT_CARD_ENTITY, PayUSubscriptionsUrlResolver::ADD_OPERATION, array($parameters[PayUParameters::CUSTOMER_ID]));
     $payUHttpRequestInfo = PayUSubscriptionsRequestUtil::buildHttpRequestInfo($urlSegment, $lang, RequestMethod::POST);
     return PayUApiServiceUtil::sendRequest($request, $payUHttpRequestInfo);
 }
 /**
  * Creates a customer with credit card information
  * @param parameters The parameters to be sent to the server
  * @param string $lang language of request see SupportedLanguages class
  * @return The response to the request sent
  * @throws PayUException
  * @throws InvalidArgumentException
  */
 public static function createCustomerWithCreditCard($parameters, $lang = null)
 {
     PayUSubscriptionsRequestUtil::validateCustomer($parameters);
     PayUSubscriptionsRequestUtil::validateToken($parameters);
     $customer = PayUSubscriptionsRequestUtil::buildCustomer($parameters);
     $creditCard = PayUSubscriptionsRequestUtil::buildCreditCard($parameters);
     $creditCards = array($creditCard);
     $customer->creditCards = $creditCards;
     $urlSegment = PayUSubscriptionsUrlResolver::getInstance()->getUrlSegment(PayUSubscriptionsUrlResolver::CUSTOMER_ENTITY, PayUSubscriptionsUrlResolver::ADD_OPERATION);
     $payUHttpRequestInfo = PayUSubscriptionsRequestUtil::buildHttpRequestInfo($urlSegment, $lang, RequestMethod::POST);
     return PayUApiServiceUtil::sendRequest($customer, $payUHttpRequestInfo);
 }
 /**
  * Creates a subscription
  * @param parameters The parameters to be sent to the server
  * @param string $lang language of request see SupportedLanguages class
  * @return The response to the request sent
  * @throws PayUException
  * @throws InvalidArgumentException
  */
 public static function createSubscription($parameters, $lang = null)
 {
     $planCode = CommonRequestUtil::getParameter($parameters, PayUParameters::PLAN_CODE);
     $tokenId = CommonRequestUtil::getParameter($parameters, PayUParameters::TOKEN_ID);
     if (!isset($planCode)) {
         PayUSubscriptionsRequestUtil::validateSubscriptionPlan($parameters);
     }
     PayUSubscriptionsRequestUtil::validateCustomerToSubscription($parameters);
     PayUSubscriptionsRequestUtil::validateToken($parameters);
     $request = PayUSubscriptionsRequestUtil::buildSubscription($parameters);
     $urlSegment = PayUSubscriptionsUrlResolver::getInstance()->getUrlSegment(PayUSubscriptionsUrlResolver::SUBSCRIPTIONS_ENTITY, PayUSubscriptionsUrlResolver::ADD_OPERATION);
     $payUHttpRequestInfo = PayUSubscriptionsRequestUtil::buildHttpRequestInfo($urlSegment, $lang, RequestMethod::POST);
     return PayUApiServiceUtil::sendRequest($request, $payUHttpRequestInfo);
 }