Use yookassa client ошибка

Уровень сложности
Средний

Время на прочтение
8 мин

Количество просмотров 4K

В статье-инструкции расскажу, как начал монетизировать telegram бота, который присылает уведомления о необходимости продлить домен, тем самым делает напоминание, чтобы пользователь продлил домен во время и не потерял его. За 2 часа, добавил кнопку доната и настроил интеграцию с ЮKassa. Через 1 день уже начал принимать донаты.

Оглавление:

  • Зачем становиться самозанятым?

  • Становимся самозанятым.

  • Открытие счета в ЮKassa.

  • Добавляем автоматическую отправку чеков в налоговую.

  • Сколько в итоге потеряю на налогах и комиссиях?

  • Интеграция ЮKassa в телеграм-бота.

Наверное каждый хочет начать монетизацию своего telegram бота, но могут отталкивать технические сложности, или не хочется заниматься регистрацией ООО или ИП.

На практике, не так все сложно, с помощью этой статьи-инструкции можно стать самозанятым, открыть счет, интегрировать платежную систему в telegram бота и начать принимать платежи, при этом автоматически отчитываться перед налоговой.

Зачем становиться самозанятым?

Преимущества, которые дает самозанятость:

  • Позволяет работать легально и не получить штраф или судебное разбирательство за неуплату налогов и незаконную предпринимательскую деятельность;

  • Не требуется оформление юридического лица;

  • Сам плачу за себя налоги, от заказчика требуется только оплатить услуги или товар;

  • Можно официально подтвердить свои доходы, например для получения визы, кредита или ипотеки;

  • Предоставление чеков клиентам поможет повысить их доверие к продукту;

  • Предприниматели-одиночки без наемного персонала могут снизить налоговую нагрузку;

  • Юрлица — компании и ИП — могут пользоваться услугами и покупать товары напрямую у самозанятых граждан, не исполняя обязанности налогового агента.

Становимся самозанятым.

Становимся самозанятым, для того, чтобы могли заключить договор с ЮKassa и открыть счет для принятия платежей, а так же ЮKassa могла делать вывод средств на наш счет в банке. Самозанятые платят самый маленький налог:

  • 4% за доходы от физических лиц — наши донаты и платежи.

  • 6% за доходы от юридических лиц, например когда к нам придет рекламодатель и захочет оплатить интеграцию или рекламный пост.

Для оформления самозанятости необходимо наличие карты Tinkoff. Если счета нет, то его нужно открыть в банке Тинькофф.

Оформляем самозанятость через мобильное приложение Тинькофф. Откройте «Главная» → «Открыть новый продукт» → «Самозанятость» → кнопка «Оформить самозанятость».

Оформление самозанятости в мобильном приложении Тинькофф.

Оформление самозанятости в мобильном приложении Тинькофф.

Не могу сказать, можно ли оформить самозанятость через приложения других банков. Но встать на учет самозанятому можно в приложении «Мой налог» по учетной записи Госуслуг. Если у вас есть банковский счет в другом банке, вы можете подать заявление на самозанятого, в приложении «Мой налог».

Тинькофф сам подает заявление в налоговую службу. Самозанятость оформляется за 5–10 минут, хотя в моем случае постановка на учет в налоговую заняла 4 часа.

Уведомление о подаче заявления в приложении «Мой налог»

Уведомление о подаче заявления в приложении «Мой налог»

Уведомление об успешном постановлении на учет в приложении «Мой налог»

Уведомление об успешном постановлении на учет в приложении «Мой налог»

Пока ждем решения налоговой, скачиваем приложение «Мой налог». После каждой оплаты или доната, нужно заявлять наш доход и оплачивать налоги. Позже настроим автоматическую отправку чеков в налоговую из личного кабинета ЮKassa. Если у вас небольшое количество операций, то можно заявлять доход в ручную, в приложении «Мой налог».

Скачиваем приложение «Мой налог»:

  • GooglePlay

  • App Store

Скриншот бонуса из приложения «Мой налог»

Скриншот бонуса из приложения «Мой налог»

Из приятного. Каждому налогоплательщику, который впервые регистрируется в качестве самозанятого, предоставляется налоговый вычет в размере 10 000 рублей (бонус). Бонус — это сумма, которая уменьшает налог. Он предоставляется государством единожды и расходуется постепенно. Бонус уменьшает налоговую ставку на 1% по вознаграждениям, полученным от физических лиц, и на 2% — по вознаграждениям от юридических лиц или индивидуальных предпринимателей.

Открытие счета в ЮKassa.

Регистрируемся в ЮKassa. Сразу после регистрации можно указать данные для договора и заполнить настройки. Это можно делать одновременно, но лучше сначала отправить данные — пока менеджеры их проверяют, вы сможете разобраться с настройками. На сайте ЮKassa есть инструкция по заполнению и подписанию договора.

Бот будет принимать платежи без сайта, будем выставлять счет на оплату и отправлять его пользователю. Все остальные данные договора заполняем по инструкции и отправляем на проверку. Если в заполненном договоре не будет ошибок, то мы получим уведомление на почту, что договор готов и его необходимо подписать.

Письмо на почту, после проверки данных договора.

Письмо на почту, после проверки данных договора.

После того, как мы подпишем договор и загрузим его в личном кабинете ЮKassa, можно перейти к написанию кода и интеграции платежной системы в бота. Проверка данных может занимать от одного до трех рабочих дней. После проверки мы сможем принимать платежи.

В ЮKassa есть возможность использовать тестовые данные, для разработки и тестирования, которые позволяют нам начать интеграцию платежной системы прямо сейчас. Перейдем в тестовый магазин, нам необходимы будут следующие данные, для интеграции с ЮKassa API:

YOOKASSA_SHOP_ID
YOOKASSA_SECRET_KEY

Личный кабинет ЮKassa. Тестовый YOOKASSA_SHOP_ID.

Личный кабинет ЮKassa. Тестовый YOOKASSA_SHOP_ID.

Личный кабинет ЮKassa. Тестовый YOOKASSA_SECRET_KEY.

Личный кабинет ЮKassa. Тестовый YOOKASSA_SECRET_KEY.

Когда нам откроют счет, мы сможем заменить тестовые данные на реальные и начать принимать платежи.

Добавляем автоматическую отправку чеков в налоговую.

По данной инструкции, делаем автоматическую отправку чеков в налоговую, чтобы зафиксировать доход и оплатить налог на прибыль. ЮKassa берет комиссию за отправку чека 1,2% от суммы платежа. Если на начальном этапе, у вас мало оплат, можно делать отправку чеков в ручном режиме, через приложение «Мой налог».

Запрос разрешения от ЮKassa в приложении Мой налог, для отправки чеков.

Запрос разрешения от ЮKassa в приложении Мой налог, для отправки чеков.

Сколько в итоге потеряю на налогах и комиссиях?

Комиссия ЮKassa с каждой операции 3.5% и за отправку чека 1.2% (НДС уже включён). Налог в федеральную налоговую службу составляет 4%.

Допустим наш донат 100 рублей. Со 100 рублей в ЮKassa уходит 4 рубля 70 копеек, в федеральную налоговую службу уходит 4 рубля.

Итого, от 100 рублей у нас остается 91 рубля 30 копеек. Таким образом, с каждой транзакции мы отдаем 9,7% от суммы платежа.

Интеграция ЮKassa в телеграм-бота

Устанавливаем клиент для работы с платежами по API ЮKassa

composer require yoomoney/yookassa-sdk-php

Telegram бот отправляет уведомления об истечении срока регистрации домена, под сообщением располагается кнопка доната. У меня это делается в очереди сообщений, у вас может быть любая другая реализация, например определенное событие, которое срабатывает в конкретный момент времени. Например, по расписанию в 12:00 запускается скрипт.

TrackDomainJob.php

namespace App\Jobs;

use App\Telegram;
use App\Models\Keyboard;
use App\Models\TrackDomain;

/**
 * Job, которая отправляет уведомление о необходимости продлить домен.
 */
class TrackDomainJob implements ShouldQueue
{
	/**
     * @throws Exception
     */
    public function handle(): void
	{
        // Отправляем пользователю сообщение и кнопку доната
        Telegram::sendKeyboard($message, Keyboard::getDonateButton(100), $this->trackDomain->user)
	}
}

Telegram.php Класс реализующий методы Telegram API. Статический метод Telegram::sendKeyboard() отправляет пользователю сообщение $message с набором кнопок Keyboard::getDonateButton(100) — возвращает массив набора кнопок inline_keyboard.

Telegram.php

namespace App;

use App\Models\User;
use Illuminate\Http\Client\Response;
use Illuminate\Support\Facades\Http;

/**
 * Класс реализующий методы Telegram API.
 */
class Telegram
{

  /**
   * Отправить сообщение с кнопками клавиатуры
   *
   * @param string $message
   * @param array $keyboard
   * @param User $user
   * @return Response
   */
  public static function sendKeyboard(string $message, array $keyboard, User $user): Response
  {
  	$method = 'sendMessage';
      $url =(new Telegram)->getTelegramBotApiUrl() . $method;
  
      return Http::post($url,[
        'chat_id' => $user->telegram_user_id,
        'parse_mode' => 'HTML',
        'text' => $message,
        'reply_markup' => json_encode($keyboard)
      ]);
  }

  /**
    * Возвращает URL API телеграм бота
    *
    * @return string
    */
  private function getTelegramBotApiUrl(): string
  {
    return env('TELEGRAM_BOT_API_URL') . env('TELEGRAM_BOT_API_ACCESS_TOKEN') . '/';
  }
}

Keyboard.php

Класс, который отвечает за формирования и получения набора кнопок. Статический метод Keyboard::getDonateButton() возвращает кнопку доната со ссылкой на оплату выставленного счета.

namespace App\Models;

use App\Payment;
use YooKassa\Client;
use YooKassa\Common\Exceptions\ApiException;
use YooKassa\Common\Exceptions\BadApiRequestException;
use YooKassa\Common\Exceptions\ExtensionNotFoundException;
use YooKassa\Common\Exceptions\ForbiddenException;
use YooKassa\Common\Exceptions\InternalServerError;
use YooKassa\Common\Exceptions\NotFoundException;
use YooKassa\Common\Exceptions\ResponseProcessingException;
use YooKassa\Common\Exceptions\TooManyRequestsException;
use YooKassa\Common\Exceptions\UnauthorizedException;

/**
 * Класс для работы с клавиатурой бота.
 */
class Keyboard
{
/**
     * Возвращает кнопку для доната.
     *
     * @param int $price
     *
     * @return array
     *
     * @throws ApiException
     * @throws BadApiRequestException
     * @throws ExtensionNotFoundException
     * @throws ForbiddenException
     * @throws InternalServerError
     * @throws NotFoundException
     * @throws ResponseProcessingException
     * @throws TooManyRequestsException
     * @throws UnauthorizedException
     */
    public static function getDonateButton(int $price): array
    {
        $payment = (new Payment())
            ->setPrice($price)
            ->setDescription('Донат от пользователя');

        $client = new Client();
        $client->setAuth(env('YOOKASSA_SHOP_ID'), env('YOOKASSA_SECRET_KEY'));

        $YooKassaPayment = $client->createPayment(
            $payment->data,
            uniqid('', true)
        );

        return [
            'inline_keyboard' => [
                [
                    [
                        'text' => "👍 Спасибо, бот. Держи " . $price . " руб.",
                        'url' => $YooKassaPayment->getConfirmation()->getConfirmationUrl()
                    ],
                ]
            ],
        ];
    }
}

Payment.php

Класс для работы с данными платежа. Создает и формирует данные платежа, чтобы дальше передать их для создания счета в ЮKassa.

namespace App;


class Payment
{
  /**
    * @var string $fullName Имя и фамилия пользователя.
    */
  private string $fullName = 'Drobushevskiy Aleksandr';

  /**
    * @var string $email Email пользователя.
    */
  private string $email = 'useremail@gmail.com';

  /**
    * @var string $phone Телефон пользователя.
    */
  private string $phone = '7905*******';

  /**
    * @var int $price Сумма платежа.
    */
  private int $price = 100;

  /**
    * @var string $currency Валюта платежа.
    */
  private string $currency = 'RUB';

  /**
    * @var string $description Описание платежа.
    */
  private string $description = 'Донат от пользователя';

  /**
    * @var array $data Данные платежа.
    */
  public array $data;

  /**
    * @var array $receiptData Данные чека.
    */
  public array $receiptData;

    /**
     * Payment constructor.
     */
    public function __construct()
    {
        $this->receiptData = [
            'customer' => [
                'full_name' => $this->fullName,
                'email' => $this->email,
                'phone' => $this->phone,
            ],
            'items' => [
                [
                    'description' => $this->description,
                    'quantity' => '1.00',
                    'amount' => [
                        'value' => $this->price,
                        'currency' => $this->currency
                    ],
                    'vat_code' => '2',
                ],
            ]
        ];

        $this->data = [
            'amount' => [
                'value' => $this->price,
                'currency' => $this->currency,
            ],
            'confirmation' => [
                'type' => 'redirect',
                'return_url' => env('TELEGRAM_BOT_URL'),
            ],
            'capture' => true,
            'description' => $this->description,
            'metadata' => [
                'order_id' => '1',
            ],
            'receipt' => $this->receiptData,
        ];
    }

    /**
     * Установить размер платежа.
     *
     * @param int $price
     * @return $this
     */
    public function setPrice(int $price): self
    {
        $this->receiptData['items']['amount']['value'] = $price;
        $this->data['amount']['value'] = $price;
        $this->price = $price;

        return $this;
    }

    /**
     * Установить описание платежа.
     *
     * @param string $description
     * @return $this
     */
    public function setDescription(string $description): self
    {
        $this->data['description'] = $description;
        $this->description = $description;

        return $this;
    }
}

Все переменные окружения добавляем в .env

# YooKassa
YOOKASSA_SHOP_ID=ВАШ_YOOKASSA_SHOP_ID
YOOKASSA_SECRET_KEY=ВАШ_YOOKASSA_SECRET_KEY

# Телеграм бот
TELEGRAM_BOT_URL=ВАШ_TELEGRAM_BOT_URL
TELEGRAM_BOT_API_URL=https://api.telegram.org/bot
TELEGRAM_BOT_API_ACCESS_TOKEN=ВАШ_TELEGRAM_BOT_API_ACCESS_TOKEN
TELEGRAM_CHAT_ID=ВАШ_TELEGRAM_CHAT_ID

Результат

В результате telegram бот будет отправлять уведомление о необходимости продлить домен, а под сообщением будет кнопка, со ссылкой на выставленный счет. Если пользователь захочет отблагодарить, за вовремя присланное напоминание, что необходимо продлить домен, чтобы не потерять его.

Уведомление о необходимости продления домена в telegram боте YourDomainBot

Уведомление о необходимости продления домена в telegram боте YourDomainBot

Мой Telegram-канал, где я делюсь идеями и процессом работы над пет-проектами.

Если вам необходимо организовать прием платежей на сайте, то Яндекс Касса будет отличным решением. Простота подключения, легкость в освоении личного кабинета и низкие проценты – это то, что отличает Яндекс кассу (сегодня уже ЮКассу) от других агрегаторов платежей.

UPDATE: Скрипт полностью рабочий и совместим с ЮKassa.

Помимо этого, Яндекс касса дарит подарки своим клиентам:

  • 5 000 рублей на контекстную рекламу;
  • 8 000 рублей на Яндекс облако;
  • 3 месяца рекламы на Яндекс картах;
  • Скидка 20% на Яндекс трекер;
  • 1 500 рублей на такси и доставку.

Я считаю что для бизнеса это реально лучшее предложение.

Подготовительные работы

В данной статье мы рассмотрим как настроить прием платежей через Яндекс кассу на своем сайте с помощью PHP.

  1. Подготавливаем сайт к подключению Яндекс кассы: как подготовить сайт к подключению;
  2. Переходим на сайт Яндекс кассы (ЮKassa) и регистрируемся: https://yookassa.ru/ процесс регистрации простой и понятный;
  3. Заполняем анкету подключения магазина;
  4. Переходим в раздел интеграция -> ключи API и копируем секретный ключ;
  5. В шапке кабинета копируем SHOP ID

Теперь у нас есть данные для подключения по API к Яндекс кассе. Существует несколько методов приема оплаты на сайте, мы рассмотрим самый распространенный.

Платежи мы будем принимать в качестве пополнения баланса личного кабинета с отправкой чеков через онлайн – кассу.

  1. Скачиваем библиотеку для работы с Яндекс кассой: https://github.com/yoomoney/yookassa-sdk-php , распаковываем и заливаем папку “lib” к себе на хостинг;
  2. На странице оплаты создаем форму оплаты:
<form class="form" method="POST" action="pay.php">
<input type="email" name="email" value="" placeholder="E-mail плательщика" required>
<input type="text" name="userid" value="" placeholder="ID плательщика" required>
<input type="text" name="sum" value="" placeholder="Сумма пополнения" required>
<button type="submit">Пополнить баланс</button>
</form>
  • name=”email” – для отправки чека;
  • name=”userid” – для идентификации плательщика;
  • name=”sum” – сумма пополнения.

Данные будут отправляться на обработчик pay.php

3. Создаем базу данных и импортируем следующую таблицу:

-- phpMyAdmin SQL Dump
-- version 4.6.6deb5
-- https://www.phpmyadmin.net/
--
-- Хост: localhost
-- Время создания: Май 06 2020 г., 11:45
-- Версия сервера: 5.7.28-0ubuntu0.18.04.4
-- Версия PHP: 7.2.24-0ubuntu0.18.04.1

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";


/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8mb4 */;

--
-- База данных: `yakassa_base`
--

-- --------------------------------------------------------

--
-- Структура таблицы `pay`
--

CREATE TABLE `pay` (
  `id` int(11) NOT NULL,
  `user_id` text NOT NULL,
  `pay_sum` text NOT NULL,
  `pay_date` datetime NOT NULL,
  `pay_key` text NOT NULL,
  `pay_status` text NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

--
-- Индексы сохранённых таблиц
--

--
-- Индексы таблицы `pay`
--
ALTER TABLE `pay`
  ADD PRIMARY KEY (`id`);

--
-- AUTO_INCREMENT для сохранённых таблиц
--

--
-- AUTO_INCREMENT для таблицы `pay`
--
ALTER TABLE `pay`
  MODIFY `id` int(11) NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=41;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

4. Создаем обработчик pay.php для создания платежа:

<?
$pay_date = date("Y-m-d H:i:s"); // Получаем дату и время
$pay_status = "pending"; // Устанавливаем стандартный статус платежа

$connection = mysqli_connect('localhost', 'ЛОГИН', 'ПАРОЛЬ', 'БАЗА') or die(mysqli_error($connection)); // Подключаемся к базе данных

// Подключаем библиотеку Я.Кассы
require  $_SERVER['DOCUMENT_ROOT'].'/lib/autoload.php'; 

use YooKassa\Client;
$client = new Client();
$client->setAuth('ИД МАГАЗИНА', 'Секретный ключ API');

// Создаем платеж
$idempotenceKey = uniqid('', true); // Генерируем ключ идемпотентности
$payment = $client->createPayment(
        array(
            "amount" => array(
                "value" => $_POST['sum'], // Сумма платежа
                "currency" => "RUB" // Валюта платежа
            ),
            "confirmation" => array(
                "type" => "redirect",
                "return_url" => "https://site.com/money" // Куда отправлять пользователя после оплаты
            ),
            "capture" => true, // Платеж в один этап
            "receipt" => array(
                "customer" => array(
       				"email" => $_POST['email'],
                ),
                "items" => array(
                    array(
                        "description" => "Описание услуги",
                        "quantity" => "1.00", // Количество
                        "amount" => array(
                            "value" => $_POST['sum'],
                            "currency" => "RUB"
                        ),
                        "tax_system_code" => "2", // Налогообложение 
                        "vat_code" => "2",
                        "payment_mode" => "full_prepayment", // Полный платеж
                        "payment_subject" => "service" // Услуга
                    )
                )
            )
        ),
        uniqid('', true)
    );

// Получаем ссылку на оплату
$confirmationUrl = $payment->getConfirmation()->getConfirmationUrl();

// Получаем платежный ключ
$pay_key = $payment->getid();

// Сохраняем данные платежа в базу
$status_pay = mysqli_query($connection, "INSERT INTO `pay` (`user_id`, `pay_sum`, `pay_date`, `pay_key`, `pay_status`) VALUES ('".$_POST['userid']."', '".$_POST['sum']."', '".$pay_date."', '".$pay_key."', '".$pay_status."')");


// Отправляем пользователя на страницу оплаты
header('Location: '.$confirmationUrl);

?>

На данном этапе пользователь производит оплату и возвращается на страницу https://site.com/money. Теперь нам необходимо проверить статус оплаты и зачислить средства на его баланс.

5. Создаем файл check_pay.php для проверки статуса платежей:

<?
$connection = mysqli_connect('localhost', 'ЛОГИН', 'ПАРОЛЬ', 'БАЗА') or die(mysqli_error($connection)); // Подключаемся к базе данных

// Подключаем библиотеку Я.Кассы
require  $_SERVER['DOCUMENT_ROOT'].'/lib/autoload.php'; 

use YooKassa\Client;
$client = new Client();
$client->setAuth('ИД МАГАЗИНА', 'Секретный ключ API');

// Проверяем статус оплаты
$pay_status = mysqli_query($connection, "SELECT * FROM `pay` WHERE `pay_status` = 'pending'");

// Получаем список платежей циклом
while ($row = mysqli_fetch_assoc($pay_status)) {
	
  $paymentId = $row['pay_key']; // Получаем ключ платежа
  $payment = $client->getPaymentInfo($paymentId); // Получаем информацию о платеже
  $pay_check = $payment->getstatus(); // Получаем статус оплаты

// Если платеж прошел, то обновляем статус платежа
	if ($pay_check == 'waiting_for_capture' or $pay_check == 'succeeded') {

// Обновляем статус платежа
  		mysqli_query($connection, "UPDATE pay SET pay_status = '".$pay_check."'  WHERE pay_key = '".$row['pay_key']."'");	

// Обновляем баланс пользователя (настраивайте под свои нужды)
  		mysqli_query($connection, "UPDATE таблица_пользователей SET баланс_пользователя = баланс_пользователя + '".$row['pay_sum']."'  WHERE ИД_пользователя = '".$row['user_id']."'");	
	}  
}
?>

6. С помощью планировщика делаем проверку платежей раз в минуту:

wget -q -O - https://site.com/check_pay.php > /dev/null 2>&1

Теперь наш скрипт check_pay.php ежеминутно будет проверять статус платежей и при успешной транзакции пополнять баланс пользователя.

На этом техническая часть подключения к Яндекс кассе закончена, теперь вам необходимо отправить сайт на проверку и проверить работоспособность платежей на своем сайте.

Если у вас возникнут трудности с подключением Яндекс кассы к сайту, пишите мне в телеграм или в комментарии к данной статье.

Как исправить ошибку, не могу создать платеж в sdk yookassa для python, когда запускаю скрипт на удаленном сервере. ssl сертификат есть.

  File "/home/nikolay/tg_bot_predictor/PAYMENT.py", line 43, in 
create_pay
res = Payment.create(request)
File "/usr/local/lib/python3.8/dist-packages/yookassa/payment.py", 
line 58, in create
response = instance.client.request(HttpVerb.POST, path, None, headers, params_object)
File "/usr/local/lib/python3.8/dist-packages/yookassa/client.py", line 38, in request
raw_response = self.execute(body, method, path, query_params, request_headers)
File "/usr/local/lib/python3.8/dist-packages/yookassa/client.py", line 46, in execute
session = self.get_session()
File "/usr/local/lib/python3.8/dist-packages/yookassa/client.py", line 56, in get_session
retries = Retry(total=self.max_attempts,
TypeError: __init__() got an unexpected keyword argument 'allowed_methods'

Вот код модуля где выдает ошибку.

def get_session(self):
    session = requests.Session()
    retries = Retry(total=self.max_attempts,
                    backoff_factor=self.timeout / 1000,
                    allowed_methods=['POST'],
                    status_forcelist=[202])
    session.mount('https://', HTTPAdapter(max_retries=retries))
    return session

Код выдает ошибку ток при запуске на сервере. При запуске у себя на компьютере проблем нету

Добрый день. Перестала работать оплата на сайте через Юкасса (дополнение YandexKassa Gateway). Написал в поддержку, их ответ ниже. Подскажите пожалуйста, в чем может быть проблема и как ее можно решить? Спасибо!

На CheckOrder вы ответили корректно.

Вы не можете просматривать опубликованные ссылки

Сейчас мы ожидаем ответа от вашего сервера на запрос PaymentAviso,
согласно документации в рамках технического протокола на запрос PaymentAviso ваш сервер должен ответить так же успехом.
Пример ответа который мы ожидает от вас на наш запрос:

Подробнее:

Вы не можете просматривать опубликованные ссылки

Сейчас же на запрос Payment Aviso нет ответа, ниже лог ЮКасса , как видно в теле ответа пусто, с каждой итерацией время повторной попытки доставить PaymentAviso увеличивается,
[[CommonHttpRequestService] [] sendHttpRequestSync(): merchantResponse=

Вам необходимо скорректировать ответ вашего сервера, и при следующем запросе PaymentAviso получив от вашего сервера корректный ответ, платеж перейдет в статус успеха.

Вы можете обратиться в техническую поддержку вашего модуля, так же уточнить у хостинг провайдера все ли в порядке на их стороне. К сожалению, мы не можем проверить все ли в порядке на вашей стороне.

добрый день, ранее подключение работало нормально?

Андрей CS сказал(а)
добрый день, ранее подключение работало нормально?

Да, работало нормально. Недавно в плагине WP Recall отключились все дополнения (возможно после обновления версии Вордпресс, не заметил точный момент), подключил заново, оплата перестала проходить.

Андрей CS сказал(а)
добрый день, ранее подключение работало нормально?

Подскажите, в чем может быть проблема и как ее можно решить?

проверьте все настройки подключения, как на стороне плагина, так и на стороне платежной системы, если все настроено верно, то проблем быть не должно

Андрей CS сказал(а)
проверьте все настройки подключения, как на стороне плагина, так и на стороне платежной системы, если все настроено верно, то проблем быть не должно

Переподключил дополнение, проверил все настройки в в плагине и платежной системе — та же проблема.

Судя по ответу поддержки платежной системы нет ответа на запрос Payment Aviso, с чем это может быть связано?

какое дополнение вы точно используете? yandex-kassa или yookassa?
откройте файл index.php используемого дополнения, найдите метод result
допишите в начале метода строку
rcl_mail_payment_error();
пробуйте провести платеж, на эл. почту админа пришло письмо?
если пришло, то скидывайте его содержимое
если не пришло, значит запрос от платежной системы не может дойти до сервера вашего сайта, надо выяснять причину

Редакции сообщения

16.03.2022 18:02Андрей CSПричина: не указано

Андрей CS сказал(а)
какое дополнение вы точно используете? yandex-kassa или yookassa?
откройте файл index.php используемого дополнения, найдите метод result
допишите в начале метода строку
rcl_mail_payment_error();
пробуйте провести платеж, на эл. почту админа пришло письмо?
если пришло, то скидывайте его содержимое
если не пришло, значит запрос от платежной системы не может дойти до сервера вашего сайта, надо выяснять причину

Дополнение YandexKassa Gateway, он же раньше работал. Пробовал ставить ЮKassa Gateway, но он просто вылетает при попытке оплаты. Выглядит так:

Вы не можете просматривать опубликованные ссылки

В дополнениях папка commerce насколько я понимаю, других подходящих нет:

Вы не можете просматривать опубликованные ссылки

Нашел result, письмо не пришло, но не уверен, что правильно вставил код, вот так пробовал:
1)

Вы не можете просматривать опубликованные ссылки

2)

Вы не можете просматривать опубликованные ссылки

файлы дополнения находятся в папке /wp-content/wp-recall/add-on/

Андрей CS сказал(а)
файлы дополнения находятся в папке /wp-content/wp-recall/add-on/

Нашел, вставил:

Вы не можете просматривать опубликованные ссылки

Емейл не пришел

значит запрос от платежки не может попасть на ваш сервер, не может быть им обработан, проблема не в дополнении, а в чем то другом
возможные причины:
— указан неверный путь до страницы result
— ваш сервер закрыт для сторонних запросов

Если ранее все работало, значит настройки в порядке, возможно, что вы меняли сами, включали какие то плагины, вносили изменения в htaccess и тп. Вспоминайте.
Смотрите логи access на сервере, ищите там запросы от платежной системы.

Редакции сообщения

17.03.2022 15:03Андрей CSПричина: не указано

Проблема решена — разобрался с дополнением ЮКасса, ранее неправильно указывал настройки, из-за чего оно деактивировалось. После создание нового магазина в платежном сервисе и указания корректных настроек прием оплаты заработал.

Илья сказал(а)
Проблема решена — разобрался с дополнением ЮКасса, ранее неправильно указывал настройки, из-за чего оно деактивировалось. После создание нового магазина в платежном сервисе и указания корректных настроек прием оплаты заработал.

Закройте заявку

Вы не можете просматривать опубликованные ссылки

README

Latest Stable Version
Total Downloads
Monthly Downloads
License

Russian | English

Клиент для работы с платежами по API ЮKassa. Подходит тем, у кого способ подключения к ЮKassa называется API.

Документация по этому SDK

Требования

PHP 8.0 (и выше) с расширением libcurl

Установка

В консоли с помощью Composer

  1. Установите менеджер пакетов Composer.
  2. В консоли выполните команду:
    composer require yoomoney/yookassa-sdk-php
    

В файле composer.json своего проекта

  1. Добавьте строку "yoomoney/yookassa-sdk-php": "^3.0" в список зависимостей вашего проекта в файле composer.json:
    ...
     "require": {
         "php": ">=8.0",
         "yoomoney/yookassa-sdk-php": "^3.0"
    ...
    
  2. Обновите зависимости проекта. В консоли перейдите в каталог, где лежит composer.json, и выполните команду:
    composer update
    
  3. В коде вашего проекта подключите автозагрузку файлов нашего клиента:
    require __DIR__ . '/vendor/autoload.php';
    

Начало работы

  1. Импортируйте нужные классы:
    use YooKassa\Client;
    
  2. Создайте экземпляр объекта клиента, задайте идентификатор магазина и секретный ключ (их можно получить в личном кабинете ЮKassa). Как выпустить секретный ключ
    $client = new Client();
    $client->setAuth('shopId', 'secretKey');
    
  3. Вызовите нужный метод API.

    Подробнее в документации по API ЮKassa

    Подробнее в документации по SDK ЮKassa

Примеры использования SDK

Что нового в SDK версии 3.x

Настройки SDK API ЮKassa

  • Установка дополнительных настроек для Curl
  • Аутентификация
  • Статистические данные об используемом окружении
  • Получение информации о магазине
  • Работа с Webhook
  • Входящие уведомления

Работа с платежами

  • Запрос на создание платежа
  • Запрос на создание платежа через билдер
  • Запрос на частичное подтверждение платежа
  • Запрос на отмену незавершенного платежа
  • Получить информацию о платеже
  • Получить список платежей с фильтрацией

Работа с возвратами

  • Запрос на создание возврата
  • Запрос на создание возврата через билдер
  • Получить информацию о возврате
  • Получить список возвратов с фильтрацией

Работа с чеками

  • Запрос на создание чека
  • Запрос на создание чека через билдер
  • Получить информацию о чеке
  • Получить список чеков с фильтрацией

Работа с безопасными сделками

  • Запрос на создание сделки
  • Запрос на создание сделки через билдер
  • Запрос на создание платежа с привязкой к сделке
  • Получить информацию о сделке
  • Получить список сделок с фильтрацией

Работа с выплатами

  • Запрос на выплату продавцу
    • Проведение выплаты на банковскую карту
    • Проведение выплаты в кошелек ЮMoney
    • Проведение выплаты через СБП
    • Выплаты самозанятым
    • Проведение выплаты по безопасной сделке
  • Получить информацию о выплате

Работа с самозанятыми

  • Запрос на создание самозанятого
  • Получить информацию о самозанятом

Работа с персональными данными

  • Создание персональных данных
  • Получить информацию о персональных данных

Работа со списком участников СБП

  • Получить список участников СБП

Понравилась статья? Поделить с друзьями:
  • Vag ошибка 02427
  • Usbdk windows 7 ошибка при установке
  • Utorrent web статус ошибка
  • Utorrent не устанавливается на windows 10 вылазит ошибка
  • Utorrent web ошибка пользовательского интерфейса