/**
  * @param $targetGoId
  * @param $productName
  * @param $totalPriceInCents
  * @param $currency
  * @param $orderNumber
  * @param $successURL
  * @param $failedURL
  * @param $preAuthorization
  * @param $recurrentPayment
  * @param $recurrenceDateTo
  * @param $recurrenceCycle
  * @param $recurrencePeriod
  * @param $paymentChannels array|string|null payment channels
  * @param $defaultPaymentChannel
  * @param $secureKey
  * @param $firstName
  * @param $lastName
  * @param $city
  * @param $street
  * @param $postalCode
  * @param $countryCode
  * @param $email
  * @param $phoneNumber
  * @param $p1
  * @param $p2
  * @param $p3
  * @param $p4
  * @param $lang
  * @return array
  */
 public static function createPaymentCommand($targetGoId, $productName, $totalPriceInCents, $currency, $orderNumber, $successURL, $failedURL, $preAuthorization, $recurrentPayment, $recurrenceDateTo, $recurrenceCycle, $recurrencePeriod, $paymentChannels, $defaultPaymentChannel, $secureKey, $firstName, $lastName, $city, $street, $postalCode, $countryCode, $email, $phoneNumber, $p1, $p2, $p3, $p4, $lang)
 {
     $paymentChannelsString = !empty($paymentChannels) ? join($paymentChannels, ",") : "";
     /*
      * Sestaveni pozadavku pro zalozeni platby
      */
     $encryptedSignature = GopayHelper::encrypt(GopayHelper::hash(GopayHelper::concatPaymentCommand((double) $targetGoId, $productName, (int) $totalPriceInCents, $currency, $orderNumber, $failedURL, $successURL, $preAuthorization, $recurrentPayment, $recurrenceDateTo, $recurrenceCycle, $recurrencePeriod, $paymentChannelsString, $secureKey)), $secureKey);
     return array("targetGoId" => (double) $targetGoId, "productName" => trim($productName), "totalPrice" => (int) $totalPriceInCents, "currency" => trim($currency), "orderNumber" => trim($orderNumber), "failedURL" => trim($failedURL), "successURL" => trim($successURL), "preAuthorization" => GopayHelper::castString2Boolean($preAuthorization), "recurrentPayment" => GopayHelper::castString2Boolean($recurrentPayment), "recurrenceDateTo" => $recurrenceDateTo, "recurrenceCycle" => trim($recurrenceCycle), "recurrencePeriod" => $recurrencePeriod, "paymentChannels" => $paymentChannelsString, "defaultPaymentChannel" => $defaultPaymentChannel, "encryptedSignature" => $encryptedSignature, "customerData" => array("firstName" => $firstName, "lastName" => $lastName, "city" => $city, "street" => $street, "postalCode" => $postalCode, "countryCode" => $countryCode, "email" => $email, "phoneNumber" => $phoneNumber), "p1" => $p1, "p2" => $p2, "p3" => $p3, "p4" => $p4, "lang" => $lang);
 }