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
}
const checkout = new window.YandexCheckout({
confirmation_token: 'confirmation_token', //Токен, который перед проведением оплаты нужно получить от Яндекс.Кассы
return_url: '', //Ссылка на страницу завершения оплаты
error_callback(error) {
//Обработка ошибок инициализации
}
});
//Отображение платежной формы в контейнере
checkout.render('payment-form');
**
* @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;
}