/** * Pretypovani datoveho typu boolean pro webovou sluzbu * * @param boolean $boolean * * @return integer (0|1), v pripade nevalidniho zadani se vraci "" */ public static function castBooleanForWS($boolean) { $boolean = GopayHelper::castString2Boolean($boolean); if ($boolean === FALSE) { return 0; } else { if ($boolean === TRUE) { return 1; } else { return ""; } } }
/** * Vytvoreni platby s udaji o zakaznikovi pomoci WS z eshopu * * @param string $targetGoId - identifikator prijemce - GoId * @param string $productName - popis objednavky zobrazujici se na platebni brane * @param int $totalPriceInCents - celkova cena objednavky v halerich * @param string $currency - mena, ve ktere platba probiha * @param string $orderNumber - identifikator objednavky * @param string $successURL - URL stranky, kam je zakaznik presmerovan po uspesnem zaplaceni * @param string $failedURL - URL stranky, kam je zakaznik presmerovan po zruseni platby / neuspesnem zaplaceni * @param boolean $preAuthorization - jedna-li se o predautorizovanou platbu * @param boolean $recurrentPayment - jedna-li se o opakovanou platbu * @param string $recurrenceDateTo - datum, do nehoz budou provadeny opakovane platby. Jedna se textovy retezec ve formatu yyyy-MM-dd. * @param string $recurrenceCycle - zakladni casovou jednotku opakovani. Nabyva hodnot [DAY, WEEK, MONTH], pro opakování od CS a.s. lze pouzit pouze hodnotu DAY. * @param int $recurrencePeriod - definuje periodu opakovane platby. Napr. při konfiguraci DAY,5 bude platba provadena kazdy 5. den * @param string $paymentChannels - pole platebnich kanalu, ktere se zobrazi na platebni brane * @param string $defaultPaymentChannel - platebni kanal, ktery se zobrazi (predvybere) na platebni brane po presmerovani * @param string $secureKey - kryptovaci klic prideleny prijemci * * Informace o zakaznikovi * @param string $firstName - Jmeno zakaznika * @param string $lastName - Prijmeni * * Adresa * @param string $city - Mesto * @param string $street - Ulice * @param string $postalCode - PSC * @param string $countryCode - Kod zeme. Validni kody jsou uvedeny ve tride CountryCode * @param string $email - Email zakaznika * @param string $phoneNumber - Tel. cislo * * @param string $p1 - $p4 - volitelne parametry (max. 128 znaku). * @param $p2 * @param $p3 * @param $p4 * @param string $lang - jazyk plat. brany * Parametry jsou vraceny v nezmenene podobe jako soucast volani dotazu na stav platby $paymentStatus (viz metoda isPaymentDone) * @return string paymentSessionId * @throws \Exception */ public static function createBasePayment($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) { try { ini_set("soap.wsdl_cache_enabled", "0"); $go_client = GopayConfig::createSoapClient(); $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); $customerData = array("firstName" => $firstName, "lastName" => $lastName, "city" => $city, "street" => $street, "postalCode" => $postalCode, "countryCode" => $countryCode, "email" => $email, "phoneNumber" => $phoneNumber); $paymentCommand = 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" => $customerData, "p1" => $p1, "p2" => $p2, "p3" => $p3, "p4" => $p4, "lang" => $lang); /* * Vytvareni platby na strane GoPay prostrednictvim WS */ $paymentStatus = $go_client->__call('createPayment', array('paymentCommand' => $paymentCommand)); /* * Kontrola stavu platby - musi byt ve stavu CREATED, kontrola parametru platby */ if ($paymentStatus->result == GopayHelper::CALL_COMPLETED && $paymentStatus->sessionState == GopayHelper::CREATED && $paymentStatus->paymentSessionId > 0) { return $paymentStatus->paymentSessionId; } else { throw new \Exception("Create payment failed: " . $paymentStatus->resultDescription); } } catch (\SoapFault $f) { /* * Chyba pri komunikaci s WS */ throw new \Exception("Communication with WS failed"); } }