dimns/yandexmoneyhttpnotification

网站众多而钱包单一。PHP 库,用于接收来自 Яндекс.Деньги的 HTTP 通知并将其转发到目标网站。

1.0.0 2016-04-26 14:45 UTC

This package is auto-updated.

Last update: 2024-09-15 03:08:38 UTC


README

网站众多而钱包单一。PHP 库,用于接收来自 Яндекс.Деньги的 HTTP 通知并将其转发到目标网站。

不使用 YandexMoneyHttpNotification 库, Яндекс.Деньги 只允许从一个网站接收一个钱包的支付。

Без использования библиотеки YandexMoneyHttpNotification

使用 YandexMoneyHttpNotification 库,您可以为单个钱包接收来自任意数量不同网站的支付。

Используя библиотеку YandexMoneyHttpNotification

要求

  • PHP 5.3 或更高版本。

通过 Composer 安装

  1. 安装 Composer
  2. 使用以下命令将包添加到您的项目中:php composer.phar require dimns/yandexmoneyhttpnotificationcomposer require dimns/yandexmoneyhttpnotification(如果已全局安装 composer)。
  3. 在您的项目中连接自动加载(如果尚未执行):require 'vendor/autoload.php';

使用

// Клиентская часть на каждом вашем сайте, генерирует кнопки оплаты
$yamnotif = new \DimNS\YandexMoneyHttpNotification\Client('Номер кошелька', 'Секретный ключ');
echo $yamnotif->generateButton('mysite#123', 'Пополнение личного счёта', 500, 'http://mysite.tld/payments/success', 's');

// Серверная часть, которая будет обрабатывать запросы от всех сайтов
// Указывается здесь: https://money.yandex.ru/myservices/online.xml
// Это один из возможных вариантов обработки уведомлений
$yamnotif = new \DimNS\YandexMoneyHttpNotification\Server('Секретный ключ');
// Платёж успешно проведён, уведомление получено
if ($yamnotif->check($_POST) == '200 OK') {
    // Получаем метку, в которой указан сайт и номер заказа (или любая другая информация)
    $data = explode('#', $_POST['label']);
    switch ($data[0]) {
        // Уведомление для сайта
        case 'mysite':
            // Перенаправим информацию необходимому сайту
            $ch = curl_init();
            curl_setopt_array($ch, [
                CURLOPT_URL            => 'http://mysite.tld/payments/paid',
                CURLOPT_RETURNTRANSFER => true,
                CURLOPT_POST           => true,
                CURLOPT_POSTFIELDS     => [
                    'secretkey'    => 'Секретный ключ сайта',
                    'datetime'     => $_POST['datetime'],
                    'operation_id' => $_POST['operation_id'],
                    'user_id'      => $data[1], // ИД пользователя
                    'amount'       => $_POST['withdraw_amount'], // Сумма, списанная с плательщика
                ],
            ]);
            $return = json_decode(curl_exec($ch), true);
            curl_close($ch);
            break;
    }
}