@My_ReVeReNce

Получение сonfirmation_token в Яндекс.Кассе?

Доброго времени суток всем! В back-end я чайник, на сайт подключаю Кассу через API. Вопрос следующий: через данный код я создаю запрос к Кассе, через который получаю лог ответа (чуть ниже), откуда мне необходимо вытащить confirmation_token, чтобы он сам постился в js-скрипт (расположу ниже)
use YandexCheckout\Client;
$client = new Client();
$client->setAuth('shop-id', 'Api-token');
$client->createPayment(
    array(
        'amount' => array(
            'value' => 'Цена',
            'currency' => 'RUB',
        ),
        'confirmation' => array(
            'type' => 'embedded'
        ),
        'capture' => true,
        'description' => 'Описание',
    ),
    uniqid('', true)
    );
$idempotenceKey = uniqid('', true);


Лог ответа:
{
	"id": "айдишник",
	"status": "pending",
	"paid": false,
	"amount": {
		"value": "Цена",
		"currency": "RUB"
	},
	"confirmation": {
		"type": "embedded",
		"confirmation_token": "ТУТ НЕОБХОДИМЫЙ ТОКЕН"
	},
	"created_at": "2020-08-20T17:40:09.629Z",
	"description": "Описание",
	"metadata": {
		"scid": "***"
	},
	"recipient": {
		"account_id": "скрыл",
		"gateway_id": "скрыл"
	},
	"refundable": false,
	"test": false
}

js-скрипт
const checkout = new window.YandexCheckout({
    confirmation_token: 'confirmation_token', //Токен, который перед проведением оплаты нужно получить от Яндекс.Кассы
    return_url: '', //Ссылка на страницу завершения оплаты
    error_callback(error) {
        //Обработка ошибок инициализации
    }
});

//Отображение платежной формы в контейнере
checkout.render('payment-form');
  • Вопрос задан
  • 379 просмотров
Пригласить эксперта
Ответы на вопрос 1
part_os
@part_os
Сложное в простом
Вот мой метод подтверждения и сбор подтверждающего токена
**
     * @param YandexMoneyConfirmationPayRequest $yandexRequest
     * @return Order|null
     */
    public function confirmationPay(YandexMoneyConfirmationPayRequest $yandexRequest): ?Order
    {
        $request = $yandexRequest->getRequest();

        $notificationType = $request->post('notification_type');
        $operationId = $request->post('operation_id');
        $amount = $request->post('amount');
        $currency = $request->post('currency');
        $datetime = $request->post('datetime');
        $sender = $request->post('sender');
        $codepro = $request->post('codepro');
        $sha1HashRequest = $request->post('sha1_hash');

        $label = $request->post('label');
        Log::info('Сообщение о подтверждение оплаты orderId: ' . $label);
        Log::info('Сообщение о подтверждение оплаты amount: ' . $amount);
        Log::info('Сообщение о подтверждение оплаты withdraw_amount: ' . $request->post('withdraw_amount'));
        Log::info('Сообщение о подтверждение оплаты datetime: ' . $datetime);


        $notificationSecret = config('app.YANDEX_SECRET');

        Log::info('Сообщение о подтверждение оплаты собираем строку');
        $confirmationPayString = $notificationType . '&' .
            $operationId . '&' .
            $amount . '&' .
            $currency . '&' .
            $datetime . '&' .
            $sender . '&' .
            $codepro . '&' .
            $notificationSecret. '&' .
            $label;

        $sha1 = hash('sha1', $confirmationPayString);

        if ($sha1HashRequest === $sha1) {
            Log::info('Сообщение о подтверждение оплаты hashValid: true');

            if (!is_null($label))  {

                try {
                    $order = $this->orderRepository->findByOrderId($label);
                    $order->payment = true;
                    $order->save();

                    return $order;
                }  catch (ModelNotFoundException $e) {
                    Log::critical('При подтверждение оплаты не найден order by ID : ' . $label);
                    return null;
                }

            } else {
                Log::critical('Сообщение о подтверждение оплаты orderId is null');
            }

        } else {
            Log::info('Сообщение о подтверждение оплаты hashValid: false');
        }

        Log::info('Оплата не подтверждена');

        return null;
    }
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы