Проверка статуса платежа Юкасса

30 сентября 2023

Платеж Юкасса имеет статус который показывает состояние платежа.
Сразу после создания объекта “платеж” в системе yookassa он будет иметь статус pending
После перенаправления пользователя на страницу оплаты Юkassa возможно 2 варианта
удачный платеж – статус succeeded
пользователь отказался от оплаты, или что-то пошло не так – статус canceled

Для проверки статуса платежа нужно знать его id в системе Юкасса, типа такого – 22d6d597-000f-5000-9000-145f6df21d6f

<?php
function check_yookassa_payment_result( $transaction ) {
  // возвращает ассоциативный массив
  // $result['status'] - статус платежа
  // $result['errorinfo'] - описание ошибки, если статус 'canceled' 
  
  $plugin_path = $_SERVER['DOCUMENT_ROOT'] . '/vh-payment/';

  $yookassalib = 'yookassa-sdk-php-master' . DIRECTORY_SEPARATOR . 'lib' . DIRECTORY_SEPARATOR . 'autoload.php';
  require( $plugin_path . $yookassalib );

  $yookassaShopId = get_option( 'yookassa_shop_id' );
  $yookassaSecretKey = get_option( 'yookassa_secret_key' );

  // require( $plugin_path . 'yookassa-config.php' );

  $yookassaClient = new YooKassa\Client();

  $yookassaClient->setAuth( $yookassaShopId, $yookassaSecretKey );

  try {
    $response = $yookassaClient->getPaymentInfo( $transaction );
    $result = Array( 'status' => $response->getStatus(), );
    if( $response->getStatus() == 'canceled' ) {
      $result['errorinfo'] = $response->getCancellationDetails()->getReason();
    }
    return( $result );
  } catch (\Exception $e) {
    return( $e );
  }
}

Важный момент – авторизация в Юкасса

// Можно так
$yookassaClient->setAuth( 'Здесь ShopId', 'Здесь SecretKey' );

// Можно положить в файл $yookassaShopId, $yookassaSecretKey
require( $plugin_path . 'yookassa-config.php' );
$yookassaClient->setAuth( $yookassaShopId, $yookassaSecretKey );

// Если вся платежная система оформлена плагином
// тогда $yookassaShopId, $yookassaSecretKey 
// удобно вынести в настройку плагина
// тогда будет так 
$yookassaShopId = get_option( 'yookassa_shop_id' );
$yookassaSecretKey = get_option( 'yookassa_secret_key' );

Вместо периодических обращений с запросом можно зарегистрировать в ЮKassa обработчик (webhook), который будет получать уведомления об изменении статуса платежа

Если нет времени и желания разбираться самостоятельно – обращайтесь

Наверх