Проверка статуса платежа Юкасса
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), который будет получать уведомления об изменении статуса платежа
Если нет времени и желания разбираться самостоятельно – обращайтесь