Как сделать автоматическую выгрузку транзакций из CloudPayments в CSV-файл

Я перенёс эту заметку из GitHub Gist-файла

Что происходит

Есть прекрасный CloudPayments для приёма платежей. Он умеет в выгрузку списка транзакций из интерфейса. В разделе «Транзакции» (в меню слева) над списком есть кнопка «Экспорт транзакций», по клику вам отправят на почту *.csv-файл за месяц.

Это такой ручной вариант: надо авторизоваться в личном кабинете, запросить файл, забрать его из почты, куда-то там загрузить. Долго и сложно. И это нужно делать бухгалтерии, им итак несладко, а тут ещё это.

Хочется автоматического варианта. Чаще для автоматизации 1С (или любого интегратора) + CloudPayments.

Тезисно, идеальный вариант работы

  1. Есть csv-файл (он прост, с ним легко работать и его понимают все), надо его как-то создавать
  2. Файл создаётся по расписанию
  3. Кладётся куда-то на сервер
  4. Есть FTP-доступ на этот сервер
  5. Доступ указывается где-то в 1С
  6. Бухгалтерия получает актуальную информацию по транзакциям, всё происходит автоматически
  7. Все радуются, занимаются другими полезными делами (считают деньги?)

Как сделать автоматическую выгрузку транзакций из CloudPayments

Через API от CloudPayments, конечно. Документация прекрасна. То, что нам нужно описано тут: https://developers.cloudpayments.ru/#vygruzka-spiska-tranzaktsiy

/**
 * Выгрузка списка транзакций
 *
 * https://developers.cloudpayments.ru/#vygruzka-spiska-tranzaktsiy
 *
 * API Lib: https://github.com/flowwow/cloudpayments-php-client
 */
$today    = date('Y-m-d');
$publicId = '';
$pass     = '';
$apiClient = new \Flowwow\Cloudpayments\Library($publicId, $pass);

$response = $apiClient->getListPayment(
    new \Flowwow\Cloudpayments\Request\PaymentsList(
        '2021-06-05',
        'MSK'
    )
);

$list = $response->model;

$publicId и $pass — ваши «секреты» из настроек сайта в личном кабинете.

В общем-то, это всё. Спасибо за лёгкость библиотеке для работы с API. Люблю прям опенсорс за такое.

Вы получите json со списком транзакций за сутки.

Дальше нужно из этого ответа собрать csv-файл. По пути можно чего-то там отфильтровать (например, собрать формат только сумма + название платежа, всё остальное неинтересно). Так вот, собрать файл и его куда-то положить. Ещё настроить автозапуск скрипта, чтобы файл создавался каждый день.