/**
  * Update a subscription
  * @param parameters The parameters to be sent to the server
  * @return The response to the request sent
  * @throws PayUException
  * @throws InvalidArgumentException
  */
 public static function update($parameters, $lang = null)
 {
     $required = array(PayUParameters::SUBSCRIPTION_ID);
     CommonRequestUtil::validateParameters($parameters, $required);
     $subscriptionId = CommonRequestUtil::getParameter($parameters, PayUParameters::SUBSCRIPTION_ID);
     //validates in edition mode
     PayUSubscriptionsRequestUtil::validateCustomerToSubscription($parameters, TRUE);
     $existParamBankAccount = PayUBankAccounts::existParametersBankAccount($parameters);
     $existParamCreditCard = PayUCreditCards::existParametersCreditCard($parameters);
     //Validate in edition mode
     self::validatePaymentMethod($parameters, $existParamBankAccount, $existParamCreditCard, TRUE);
     //Build request in edition mode
     $request = PayUSubscriptionsRequestUtil::buildSubscription($parameters, $existParamBankAccount, $existParamCreditCard, TRUE);
     $urlSegment = PayUSubscriptionsUrlResolver::getInstance()->getUrlSegment(PayUSubscriptionsUrlResolver::SUBSCRIPTIONS_ENTITY, PayUSubscriptionsUrlResolver::EDIT_OPERATION, array($subscriptionId));
     $payUHttpRequestInfo = PayUSubscriptionsRequestUtil::buildHttpRequestInfo($urlSegment, $lang, RequestMethod::PUT);
     return PayUApiServiceUtil::sendRequest($request, $payUHttpRequestInfo);
 }