Предлагаем вашему вниманию очередную подборку с ссылками на новости и материалы.
Приятного чтения!
Читать полностью »
Предлагаем вашему вниманию очередную подборку с ссылками на новости и материалы.
Приятного чтения!
Читать полностью »
Предлагаем вашему вниманию очередную подборку с ссылками на новости и материалы.
Приятного чтения!
Читать полностью »
Предлагаем вашему вниманию очередную подборку с ссылками на новости и материалы.
Приятного чтения!
Читать полностью »
Предлагаем вашему вниманию очередную подборку с ссылками на новости и материалы.
Приятного чтения!
Читать полностью »
Предлагаем вашему вниманию очередную подборку с ссылками на новости и материалы.
Приятного чтения!
Читать полностью »
Всем доброго времени суток.
Посвящается тем, кто использует Composer, но столкнулся с тем, что при выборе пакета для установки (require) нужно вписать версию этого пакета. Не очень удобно постоянно ее где-то искать, даже используя * не всегда удается все правильно установить.
Таким образом, я решил опубликовать скрипт автоподстановки.
На данный момент о него требуется подстановка имен пакетов, а в случае если пакет уже подставлен, то версию этого пакета, лишь для команды require.
Предлагаем вашему вниманию очередную подборку с ссылками на новости и материалы.
Приятного чтения!
Читать полностью »
Новогодние праздники подходят к финишу, и мы снова в строю со свежей порцией новостей и материалов из мира PHP.
Приятного чтения!
Читать полностью »
Следуя традиции, мы решили подвести итоги уходящего года и выделить самые значимые события в мире PHP, которых, к счастью, было немало. И, конечно же, подборка с ссылками на свежие материалы.
Приятного чтения!
Читать полностью »
Так уж получилось, что мы решили у себя подключить прием платежей через QIWI. Сказано — сделано! Вот только в процессе разработки пришлось столкнуться с убогостью примеров кода от разработчиков киви:
<?php
/**
* На этот скрипт приходят уведомления от QIWI Кошелька.
* SoapServer парсит входящий SOAP-запрос, извлекает значения тегов login, password, txn, status,
* помещает их в объект класса Param и вызывает функцию updateBill объекта класса TestServer.
*
* Логика обработки магазином уведомления должна быть в updateBill.
*/
$s = new SoapServer('IShopClientWS.wsdl', array('classmap' => array('tns:updateBill' => 'Param', 'tns:updateBillResponse' => 'Response')));
// $s = new SoapServer('IShopClientWS.wsdl');
$s->setClass('TestServer');
$s->handle();
class Response {
public $updateBillResult;
}
class Param {
public $login;
public $password;
public $txn;
public $status;
}
class TestServer {
function updateBill($param) {
// Выводим все принятые параметры в качестве примера и для отладки
$f = fopen('c:\phpdump.txt', 'w');
fwrite($f, $param->login);
fwrite($f, ', ');
fwrite($f, $param->password);
fwrite($f, ', ');
fwrite($f, $param->txn);
fwrite($f, ', ');
fwrite($f, $param->status);
fclose($f);
// проверить password, login
// В зависимости от статуса счета $param->status меняем статус заказа в магазине
if ($param->status == 60) {
// заказ оплачен
// найти заказ по номеру счета ($param->txn), пометить как оплаченный
} else if ($param->status > 100) {
// заказ не оплачен (отменен пользователем, недостаточно средств на балансе и т.п.)
// найти заказ по номеру счета ($param->txn), пометить как неоплаченный
} else if ($param->status >= 50 && $param->status < 60) {
// счет в процессе проведения
} else {
// неизвестный статус заказа
}
// формируем ответ на уведомление
// если все операции по обновлению статуса заказа в магазине прошли успешно, отвечаем кодом 0
// $temp->updateBillResult = 0
// если произошли временные ошибки (например, недоступность БД), отвечаем ненулевым кодом
// в этом случае QIWI Кошелёк будет периодически посылать повторные уведомления пока не получит код 0
// или не пройдет 24 часа
$temp = new Response();
$temp->updateBillResult = 0;
return $temp;
}
}
?>
Я конечно понимаю, пример исчерпывающий, но можно ведь было что-нибудь «поготовее» выложить? Поскольку система популярна, как и язык PHP — я решил сразу вынести библиотеку в публичный репозитарий, дабы упростить жизнь тем, кому только предстоит подключать эту систему. Так как в недавнем моем вопросе никто против поста не возражал — выкладываю ее тут.
Читать полностью »