Доброго времени суток. Начну по порядку. В один прекрасный день у меня перестала работать оплата на сайте через Qiwi. Я написал в саппорт и они сказали следующее: Я нашел файлы, которые отвечают за функционал оплаты на сайте, но что там поменять, что бы формат даты был правильный я не знаю. Прошу у вас помощи. Я так понял дату функция получает от сервера или БД, возможно нужно менять формат даты перед передачей ее в lifetime= . Подскажите как и где это делать! Вот ссылки на файлы: http://yadi.sk/d/R1sb8wchAYubF http://yadi.sk/d/zski8UPuAYun8
А не подскажете куда вставить этот код? Код (Text): <?php /*************************************************************************** * * * (c) 2004 Vladimir V. Kalynyak, Alexey V. Vinokurov, Ilya M. Shalnev * * * * This is commercial software, only users who have purchased a valid * * license and accept to the terms of the License Agreement can install * * and use this program. * * * **************************************************************************** * PLEASE READ THE FULL TEXT OF THE SOFTWARE LICENSE AGREEMENT IN THE * * "copyright.txt" FILE PROVIDED WITH THIS DISTRIBUTION PACKAGE. * ****************************************************************************/ if ( !defined('AREA') ) { die('Access denied'); } function cancelBill($txn_id, &$service) { $params = new cancelBill(); $params->login = LOGIN; $params->password = PASSWORD; $params->txn = $txn_id; $res = $service->cancelBill($params); print($res->cancelBillResult); } function createBill($data, &$service) { $params = new createBill(); $params->login = $data['login']; $params->password = $data['password']; $params->user = $data['phone']; $params->amount = $data['amount']; $params->comment = $data['comment']; $params->txn = $data['txn_id']; $params->lifetime = $data['lifetime']; $params->alarm = $data['alarm']; $params->create = $data['create']; $res = $service->createBill($params); $rc = $res->createBillResult; return $rc; } ?>
Код (Text): $params->lifetime = $data['lifetime']; наверн место нее это ставим Код (Text): $params->lifetime = date('d.F.Y H:i:s', time());
Появилась такая ошибка значит не там, или не совсем там или так. Есть соображения? Содержание файла IShopServerWSService.php: Код (Text): <?php class checkBill { public $login; // string public $password; // string public $txn; // string } class checkBillResponse { public $user; // string public $amount; // string public $date; // string public $lifetime; // string public $status; // int } class getBillList { public $login; // string public $password; // string public $dateFrom; // string public $dateTo; // string public $status; // int } class getBillListResponse { public $txns; // string public $count; // int } class cancelBill { public $login; // string public $password; // string public $txn; // string } class cancelBillResponse { public $cancelBillResult; // int } class createBill { public $login; // string public $password; // string public $user; // string public $amount; // string public $comment; // string public $txn; // string public $lifetime; // string public $alarm; // int public $create; // boolean } class createBillResponse { public $createBillResult; // int } /** * IShopServerWSService class * * * * @author {author} * @copyright {copyright} * @package {package} */ class IShopServerWSService extends SoapClient { private static $classmap = array( 'checkBill' => 'checkBill', 'checkBillResponse' => 'checkBillResponse', 'getBillList' => 'getBillList', 'getBillListResponse' => 'getBillListResponse', 'cancelBill' => 'cancelBill', 'cancelBillResponse' => 'cancelBillResponse', 'createBill' => 'createBill', 'createBillResponse' => 'createBillResponse', ); public function IShopServerWSService($wsdl = "./payments/qiwi_files/IShopServerWS.wsdl", $options = array()) { foreach(self::$classmap as $key => $value) { if(!isset($options['classmap'][$key])) { $options['classmap'][$key] = $value; } } parent::__construct($wsdl, $options); } /** * * * @param checkBill $parameters * @return checkBillResponse */ public function checkBill(checkBill $parameters) { return $this->__soapCall('checkBill', array($parameters), array( 'uri' => 'https://ishop.qiwi.ru/services/ishop', 'soapaction' => '' ) ); } /** * * * @param getBillList $parameters * @return getBillListResponse */ public function getBillList(getBillList $parameters) { return $this->__soapCall('getBillList', array($parameters), array( 'uri' => 'https://ishop.qiwi.ru/services/ishop', 'soapaction' => '' ) ); } /** * * * @param cancelBill $parameters * @return cancelBillResponse */ public function cancelBill(cancelBill $parameters) { return $this->__soapCall('cancelBill', array($parameters), array( 'uri' => 'https://ishop.qiwi.ru/services/ishop', 'soapaction' => '' ) ); } /** * * * @param createBill $parameters * @return createBillResponse */ public function createBill(createBill $parameters) { return $this->__soapCall('createBill', array($parameters), array( 'uri' => 'https://ishop.qiwi.ru/services/ishop', 'soapaction' => '' ) ); } } ?> Добавлено спустя 18 минут 44 секунды: На другом форуме мне подсказали Код (Text): $params->lifetime = date( 'd.m.Y H:i:s', strtotime( str_replace( '.', '-', $data['lifetime'] ) ) ); Правда сказали, что это костыль и лучше это решить до вызова createBill. Я правда в этом не понимаю ничего. Добавлено спустя 7 минут 20 секунд: Забыл написать, что последний вариант работает!
lifetime=2013.10.02 00:10:04 По документации надо: lifetime=02.10.2013 00:10:04 Собственно сама дата будет выглядеть: Код (PHP): echo date('d.m.Y H:i:s'); Код (PHP): date( 'd.m.Y H:i:s', strtotime( str_replace( '.', '-', $data['lifetime'] ) ) ) Эм, а разве будет работать?) Что приходит в $data['lifetime'] ?