Размер шрифта
Цвет фона и шрифта
Изображения
Озвучивание текста
Обычная версия сайта
«8 Ядер» - готовые сайты, интернет-магазины на 1С-Битрикс
Сертифицированный партнёр 1С-Битрикс
+7 495 788 88 03
+7 495 788 88 03
Заказать звонок
E-mail
customer@8cores.ru
Адрес
г. Москва, ул. Окская, 20к2, пом. 5/1
Режим работы
Пн. – Пт.: с 10:00 до 19:00 (мск)
Подать заявку
Продукты
  • Готовые сайты
    • Интернет-магазины
    • Корпоративные сайты
    • Отраслевые сайты
  • Лицензии 1С-Битрикс
  • Продления лицензий
  • Бизнес под ключ
    • Регистрация ИП/ООО
    • Расчётный счёт
    • Деньги на развитие бизнеса
Услуги
  • Разработка сайтов и приложений
    • Запуск сайта на готовом решении 1С-Битрикс
    • Хостинг. Регистрация доменов
    • Разработка сайтов
    • Перенос сайта на 1С-Битрикс
  • Интеграция
    • Интеграция сайта с 1С
    • Интеграция с CRM Битрикс24
    • ERP для Производственной компании
  • Поддержка
    • Техническая поддержка
    • Доработка существующего сайта
  • Дизайн
    • Разработка дизайна сайта
  • Информационная безопасность
    • Проверка сайта и удаление вирусов
  • Импорт/Парсинг
Блог
Компания
  • О компании
  • Как мы работаем
  • Сертификаты
  • Реквизиты
  • Документы
  • Партнёры
  • Вакансии
Контакты
Техподдержка
Москва
Ваш городГеленджик?
Да Изменить
«8 Ядер» - готовые сайты, интернет-магазины на 1С-Битрикс
Сертифицированный партнёр 1С-Битрикс
Продукты
  • Готовые сайты
    Готовые сайты
  • Лицензии 1С-Битрикс
    Лицензии 1С-Битрикс
  • Продления лицензий
    Продления лицензий
  • Бизнес под ключ
    Бизнес под ключ
Услуги
  • Разработка сайтов и приложений
    Разработка сайтов и приложений
  • Интеграция
    Интеграция
  • Поддержка
    Поддержка
  • Дизайн
    Дизайн
  • Информационная безопасность
    Информационная безопасность
  • Импорт/Парсинг
    Импорт/Парсинг
Блог
Компания
  • О компании
  • Как мы работаем
  • Сертификаты
  • Реквизиты
  • Документы
  • Партнёры
  • Вакансии
Контакты
Техподдержка
    Москва
    Ваш городГеленджик?
    Да Изменить
    +7 495 788 88 03
    +7 495 788 88 03
    E-mail
    customer@8cores.ru
    Адрес
    г. Москва, ул. Окская, 20к2, пом. 5/1
    Режим работы
    Пн. – Пт.: с 10:00 до 19:00 (мск)
    «8 Ядер» - готовые сайты, интернет-магазины на 1С-Битрикс
    Продукты
    • Готовые сайты
      Готовые сайты
    • Лицензии 1С-Битрикс
      Лицензии 1С-Битрикс
    • Продления лицензий
      Продления лицензий
    • Бизнес под ключ
      Бизнес под ключ
    Услуги
    • Разработка сайтов и приложений
      Разработка сайтов и приложений
    • Интеграция
      Интеграция
    • Поддержка
      Поддержка
    • Дизайн
      Дизайн
    • Информационная безопасность
      Информационная безопасность
    • Импорт/Парсинг
      Импорт/Парсинг
    Блог
    Компания
    • О компании
    • Как мы работаем
    • Сертификаты
    • Реквизиты
    • Документы
    • Партнёры
    • Вакансии
    Контакты
    Техподдержка
      Москва
      Ваш городГеленджик?
      Да Изменить
      +7 495 788 88 03
      E-mail
      customer@8cores.ru
      Адрес
      г. Москва, ул. Окская, 20к2, пом. 5/1
      Режим работы
      Пн. – Пт.: с 10:00 до 19:00 (мск)
      «8 Ядер» - готовые сайты, интернет-магазины на 1С-Битрикс
      Телефоны
      +7 495 788 88 03
      «8 Ядер» - готовые сайты, интернет-магазины на 1С-Битрикс
      • Продукты
        • Продукты
        • Готовые сайты
          • Готовые сайты
          • Интернет-магазины
          • Корпоративные сайты
          • Отраслевые сайты
        • Лицензии 1С-Битрикс
        • Продления лицензий
        • Бизнес под ключ
          • Бизнес под ключ
          • Регистрация ИП/ООО
          • Расчётный счёт
          • Деньги на развитие бизнеса
      • Услуги
        • Услуги
        • Разработка сайтов и приложений
          • Разработка сайтов и приложений
          • Запуск сайта на готовом решении 1С-Битрикс
          • Хостинг. Регистрация доменов
          • Разработка сайтов
          • Перенос сайта на 1С-Битрикс
        • Интеграция
          • Интеграция
          • Интеграция сайта с 1С
          • Интеграция с CRM Битрикс24
          • ERP для Производственной компании
        • Поддержка
          • Поддержка
          • Техническая поддержка
          • Доработка существующего сайта
        • Дизайн
          • Дизайн
          • Разработка дизайна сайта
        • Информационная безопасность
          • Информационная безопасность
          • Проверка сайта и удаление вирусов
        • Импорт/Парсинг
      • Блог
      • Компания
        • Компания
        • О компании
        • Как мы работаем
        • Сертификаты
        • Реквизиты
        • Документы
        • Партнёры
        • Вакансии
      • Контакты
      • Техподдержка
      • +7 495 788 88 03
        • Телефоны
        • +7 495 788 88 03
      • г. Москва, ул. Окская, 20к2, пом. 5/1
      • customer@8cores.ru
      • Пн. – Пт.: с 10:00 до 19:00 (мск)
      Главная
      —
      Блог
      —
      PHP
      —Прием платежей на сайте через Юкассу

      Прием платежей на сайте через Юкассу

      прием платежей на сайте через юкассу
      PHP
      28 августа 2021
      Настройка магазина в ЮKassa, формирование ссылки на оплату и получение данных о платеже.

      Описан процесс оплаты через сервис ЮKassa с помощью прямых запросов к API через PHP cURL. Также есть уже готовый SDK (с установкой через Composer).

      Настройка магазина в ЮKassa

      В Юкассе потребуется создать два магазина, один основной, второй тестовый для проверки интеграции.

      Настройка магазина в ЮKassa

      Далее потребуется сгенерировать секретный ключ для доступа к API в разделе «Интеграция» – «Ключи API».​

      Формирование ссылки на оплату

      Для того чтобы направить пользователя на оплату, нужно получить ссылку, для этого отправляется запрос в API с данными платежа (сумма, ссылка для возврата после оплаты, комментарий и внутренний номер заказа).

      В запросе к API нужно передать значение идемпотентности, т.е. уникальное значение операции на стороне сайта. Без этого значения API возвращает ошибку, сгенерировать ключ можно с помощью функции:

      function gen_uuid() {
      	return sprintf( '%04x%04x-%04x-%04x-%04x-%04x%04x%04x',
      		mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff ),
      		mt_rand( 0, 0xffff ),
      		mt_rand( 0, 0x0fff ) | 0x4000,
      		mt_rand( 0, 0x3fff ) | 0x8000,
      		mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff ), mt_rand( 0, 0xffff )
      	);
      }

      Отправка платежных данных:

      $data = array(
      	'amount' => array(
       		'value' => 1000,
       		'currency' => 'RUB',
       	),
       	'capture' => true,
       	'confirmation' => array(
       		'type' => 'redirect',
       		'return_url' => 'https://example.com/success',
       	),
      	'description' => 'Заказ №1',
      	'metadata' => array(
       		'order_id' => 1,
       	)
      );
       
      $data = json_encode($data, JSON_UNESCAPED_UNICODE);
       	
      $ch = curl_init('https://api.yookassa.ru/v3/payments');
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
      curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
      curl_setopt($ch, CURLOPT_HEADER, false);
      curl_setopt($ch, CURLOPT_USERPWD, 'ЛОГИН:КЛЮЧ');
      curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'Idempotence-Key: ' . gen_uuid()));
      curl_setopt($ch, CURLOPT_POST, 1);
      curl_setopt($ch, CURLOPT_POSTFIELDS, $data); 	
      $res = curl_exec($ch);
      curl_close($ch);	
      	
      $res = json_decode($res, true);
      print_r($res);

      Ответ API:

      Array(
      	[id] => xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
          [status] => pending
          [paid] => 
          [amount] => Array(
          	[value] => 1000.00
              [currency] => RUB
      	) 
      	[confirmation] => Array(
             	[type] => redirect
      		[confirmation_url] => https://yoomoney.ru/checkout/payments/v2/contract?orderId=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
      	)
      	[created_at] => 2021-05-01T05:13:52.233Z
      	[description] => Заказ №1
      	[metadata] => Array (
      		[order_id] => 1
      	)
      	[recipient] => Array (
      		[account_id] => 123456
      		[gateway_id] => 12345678
      	)
      	[refundable] => [test] => 1
      )

      В ответе содержится номер заказа в Юкассе, его необходимо сохранить и ссылка на форму оплаты.

      Редиректим пользователя на форму оплаты:

      header('Location: ' . $res['confirmation']['confirmation_url'], true, 301);
      exit();

      Чтобы завершить платеж нужно ввести реквизиты тестовой карты. После чего, платежная система вернет пользователя на указанный return_url без параметра статуса оплаты.

      У Юкассы есть возможность уведомлений о платежах, подробнее на https://yookassa.ru/developers/using-api/webhooks

      Получение данных о платеже

      Получить данные платежа и его статус можно по его ID, отправив запрос:

      $order_id = 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx';
       
      $ch = curl_init('https://api.yookassa.ru/v3/payments/' . $order_id);
      curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
      curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
      curl_setopt($ch, CURLOPT_USERPWD, 'ЛОГИН:КЛЮЧ');
      curl_setopt($ch, CURLOPT_HEADER, false);
      curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json', 'Idempotence-Key: ' . gen_uuid()));
      $res = curl_exec($ch);
      curl_close($ch);
      	
      $res = json_decode($res, true);
      print_r($res);

      Результат:

      Array(
          [id] => xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
          [status] => succeeded
          [paid] => 1
          [amount] => Array(
      		[value] => 1000.00
      		[currency] => RUB
      	)
          [authorization_details] => Array(
      		[rrn] => 2494615456943
      		[auth_code] => 592673
      	)
          [captured_at] => 2021-05-01T11:36:41.750Z
          [created_at] => 2021-05-01T11:36:06.124Z
          [description] => Заказ №1
          [income_amount] => Array(
      		[value] => 1000.50
      		[currency] => RUB
      	)
          [metadata] => Array(
      		[order_id] => 1
      	)
          [payment_method] => Array(
      		[type] => bank_card
      		[id] => xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
      		[saved] => 
      		[card] => Array(
      			[first6] => 555555
      			[last4] => 4477
      			[expiry_month] => 11
      			[expiry_year] => 2023
      			[card_type] => MasterCard
      			[issuer_country] => US
      		)
       
      		[title] => Bank card *5555
      	)
       
          [recipient] => Array(
      		[account_id] => 123456
      		[gateway_id] => 12345678
      	)
       
          [refundable] => 1
          [refunded_amount] => Array(
      		[value] => 0.00
      		[currency] => RUB
      	)
          [test] => 1
      )

      Статусы платежа

      • pending – платеж создан и ожидает действий от пользователя.
      • waiting_for_capture – платеж оплачен, деньги авторизованы и ожидают списания (при двухстадийной оплате).
      • succeeded – платеж успешно завершен.
      • canceled – платеж отменен
      • Комментарии
      Загрузка комментариев...
      api curl php юkassa
      Назад к списку
      • 1С Администрирование 2
      • 1С-Битрикс 17
      • HTML/CSS 1
      • jQuery 1
      • PHP 2
      • Оптимизация 9
      1с 1С ajax apache api bitrix clean-param CRM cron curl etext get google htaccess html jivo jquery json market marketplace nginx openserver PageSpeed php php8 post robots robots.txt search seo web агенты администрирование артикул аспро битрикс боты вирус директория защита каталог композит кэш логи магазин маркетплейс метрика модальные окна настройка обмен онлайн консультант оптимизация ордер ошибки пагинация папка парсинг поиск покупка сервера склад скрипт спам страница тестирование троян ускорение установка ут цвета чпу юkassa яндекс
      Продукты
      Услуги
      Компания
      Блог
      Контакты
      +7 495 788 88 03
      +7 495 788 88 03
      E-mail
      customer@8cores.ru
      Адрес
      г. Москва, ул. Окская, 20к2, пом. 5/1
      Режим работы
      Пн. – Пт.: с 10:00 до 19:00 (мск)
      customer@8cores.ru
      г. Москва, ул. Окская, 20к2, пом. 5/1
      © 2010-2023 «8 Ядер» - веб-студия полного цикла
      Политика конфиденциальности