Имеется мобильная версия сайта с возможностью проведения оплаты услуги через ЮКассу, форма оплаты загружается на самом сайте, варианты оплаты предлагаются следующие - ввод банковской карты, либо по СБП. При оплате по банковской карте проблем не возникает и после успешной оплаты пользователь перенаправляется на страницу result с получением информации, а вот при оплате по СБП, бывает две ситуации - первая, когда пользователь возвращается в мобильный браузер из приложения банка после проведения оплаты, его также редиректит на страницу result, вторая ситуация, пользователь проводит операцию в приложении банка, деньги списываются, но возвращаясь в браузер у него страница перезагружается и возвращается на главную страницу с выбором услуги, при этом деньги списаны, а нужной информации он не видит. На странице result при этом реализована функция отправки смс и email клиенту, но они отрабатывают на странице result только если платеж перешел в статус success. Я же хочу в данном случае, в независимости от того, что пользователь вернулся из приложения банка в браузер или нет, чтобы при успешном проведении платежа на странице продолжили выполняться функции и если будет событие success, то стразу же отправлять смс и емайл. На текущей странице формирования платежа payment, есть функция Юкассы для получения статуса - $paymentStatus, но при переходе на страницу она имеет статус pending, что в принципе правильно, так как платеж еще не проведен, но я бы хотел, чтобы именно после формирования и оплаты платежа выполнялась функция по проверке статуса success и выполнялись определенные действия в независимости от того, вернулся пользователь на страницу или нет.
Route::get('payment.json',
['before' => 'json_referer', 'main' => function () use ($kassa) {
extract(filter_var_array(
Input::get(['amount', 'type_id', 'phone', 'email']), [
'amount' => FILTER_VALIDATE_INT,
'type_id' => [
'filter' => FILTER_VALIDATE_INT,
'options' => ['default' => 0]
],
'phone' => FILTER_VALIDATE_INT,
'email' => FILTER_VALIDATE_EMAIL,
]
));
$kassa->oauth($kassa::OAUTH_TOKEN);
//http-уведомления Юкассы об изменении статуса платежа
$kassa->addWebhooks();
// формирование объекта платежа Юкассы - createPayment
$embedded = $kassa->embedded($amount, [
'type_id' => $type_id,
'phone' => $phone,
'email' => $email
], 'ru_RU');
if ( ! $embedded) return Response::create('#404:Error', 404);
$payment = $kassa->payment_info($embedded->getId());
if (!$payment) return Response::redirect('/');
$paymentStatus = $payment->getStatus();
return Response::json([
'token' => $embedded->getConfirmation()->getConfirmationToken(),
'return_url' => Uri::full('/result?paymentId=' . $embedded->getId())
], 200);
}]
);