Skip to content

bushev/php-realtypult-partner-lib

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

php-realtypult-partner-lib Build Status

API библиотека для интеграции с RealtyPult. Подключение портала недвижимости к партнерской программе.

Нужна версия для NodeJS?

https://github.com/bushev/nodejs-realtypult-partner-lib

Как установить

Вы можете скачать последнюю версию библиотеки по ссылке:

https://github.com/bushev/php-realtypult-partner-lib/archive/master.zip

Скопируйте файл realtypult-importer.php в ваш PHP проект и подключите его в коде:

require_once 'realtypult-importer.php';

Если вы используете Composer для управления зависимостями проекта, вы можете установить библиотеку для RealtyPult напрямую из репозитория.

Обновите ваш файл composer.json (добавьте новую зависимость):

{
  "require": {
    "bushev/php-realtypult-partner-lib": "^1.0"
  }
}

После чего выполните установку:

php composer.phar install

Как пользоваться

require_once 'realtypult-importer.php';

/**
 * Обработчик одного объявления
 *
 * Требуется реализовать алгоритм:
 *
 * 1. Проверить (по $item->id) размещали ли вы это объявления ранее
 *
 * Если не размещали:
 *      2.1 Сохраните объявление в вашей базе данных (не забудьте скачать себе изображения объекта)
 *      2.2 Верните объект (sdtClass) со ссылкой на объявление на вашем сайте
 *          Например:
 *              $result->url = 'http://your-site.ru/item-123';
 *              return $result;
 *
 *
 * Если размещали:
 *      2.1 Проверьте, изменилось ли обновление, если да то обновите его в вашей базе данных
 *          (не забудьте про изображения)
 *      2.2 Получите из вашей базы данных количество просмотров этого объявления (рекомендуется)
 *      2.2 Верните объект (sdtClass) со ссылкой на объявление на вашем сайте,
 *          и количеством просмотров (рекомендуется)
 *          Например:
 *              $result->url   = 'http://your-site.ru/item-123';
 *              $result->views = 15;
 *              return $result;
 *
 *
 * В случае если на каком-либо этапе вы понимаете что это объявление не может быть
 * обработано корректно, верните объект (sdtClass) с сообщением об ошибке
 * Например:
 *      $result->error = 'Произошел технический сбой';
 *      return $result;
 *
 *
 * Помните, что сообщение о об ошибке увидит конечный пользователь!
 *
 * Примеры частых ошибок:
 *
 * > Произошел технический сбой (проблема с базой данных, нет места на диске, и тп.)
 * > Не удалось определить адрес объекта
 * > И тп.
 *
 * В случае если в вашей базе данных есть очень похожее объявление, верните
 * объект (sdtClass) со ссылкой на это объявление (размещать это объявление не нужно)
 * Например:
 *      $result->similarUrl = 'http://your-site.ru/item2';
 *      return $result;
 *
 *
 * В случае если вы не можете разместить объявление в силу нарушений ваших правил,
 * верните объект (sdtClass) с сообщением пользователю
 * Например:
 *      $result->rejectReason = 'Номер телефона заблокирован';
 *      return $result;
 *
 * Примеры частых ошибок:
 *
 * > Номер телефона заблокирован
 * > Слишком низкая цена для этого объявления
 * > И тп.
 *
 * Помните, что сообщение об отклонении объявления увидит конечный пользователь!
 *
 *
 * @param $item - объект содержащий всю информацию об объявлении
 * @return stdClass - результат обработки
 */
$onItem = function ($item) {

    echo "Обрабатываем объявление #" . $item->id . "\r\n";

    print_r($item);

    $result = new \stdClass();

    // Успешно размещено
    // $result->url = 'http://your-site.ru/item-123';
    // $result->views = 15;

    // ИЛИ

    // Проблема с доступом к базе данных / Недостаточно памяти
    // $result->error = 'Произошел технический сбой';

    // ИЛИ

    // Объявление дубликат
    // $result->similarUrl = 'http://your-site.ru/item2';

    // ИЛИ

    // Не соответствует правилам вашего портала
    // $result->rejectReason = 'Номер телефона заблокирован';

    return $result;
};

/**
 * Обработчик конца импорта
 *
 * Здесь нужно удалить из вашей базы данных все объявления которые отсутствовали в
 * XML фиде (не забудьте удалить изображения)
 *
 * @param $report
 * @param $report ->location            - Путь до файла с готовым отчетом (ссылку на него нужно
 *                                        вставить в личный кабинет партнера)
 * @param $report ->statistics.total    - Общее число объявление в фиде
 * @param $report ->statistics.success  - Число объявление обработанных успешно
 * @param $report ->statistics.rejected - Число объявление отклоненных от публикации
 * @param $report ->statistics.errors   - Число объявление обработанных с ошибками
 */
$onEnd = function ($report) {

    echo "Обработка XML фида завершена!\r\n";

    var_dump($report);
};

/**
 * Обработчик ошибки обработки XML фида
 *
 * @param $error
 */
$onError = function ($error) {

    echo "Произошла ошибка " . $error . "\r\n";

    $this->assertEquals('I\'m here!', 'Should not be here!');
};

$options = new \stdClass();

// Ссылка на XML фид из личного кабинета партнера
$options->xmlFeedUrl = 'https://realtypult.ru/api/xml/export/partner/FORMAT/TOKEN';

// Путь к файлу отчета, файл будет создаваться автоматически
$options->reportFileLocation = '/var/www/my-site/public/rm-report.xml';

// Формат XML фида ('realtypult' или 'yandex')
$options->format = 'realtypult';

// Функция будет вызвана для каждого объявления из XML фида
$options->onItem = $onItem;

// Функция будет вызвана когда весь XML фид будет обработан
$options->onEnd = $onEnd;

// Функция будет вызвана в случае непредвиденной критической ошибки
$options->onError = $onError;

$importer = new \RealtyPultImporter($options);

// Запускаем импорт
$importer->run();

Код этого примера находится тут.

About

API библиотека для интеграции с RealtyPult

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages