Відкладені платежі Яндекс

  1. Як працює Яндекс.Касса з відкладеними платежами?
  2. З чого почати налаштування відкладених платежів?
  3. Реалізація протоколу HTTP-повідомлень
  4. Процедура обміну сертифікатами
  5. Реалізація функцій підтвердження та скасування платежів
  6. Загальні рекомендації по налаштуванню
  7. І на останок

Нещодавно переді мною постало завдання налаштувати відкладені (холдірованние) платежі для Яндекс.Касси. Сказати по чесному, раніше не доводилося стикатися з цим, хоча інтеграцію з Яндекс.Кассой штатними засобами 1С-Бітрікс, звичайно, налаштовував не раз.

Спочатку мені було незрозуміло що це таке, для чого потрібно, і чим відрізняється від звичайної оплати через Яндекс.Кассу. Але поступово все встало на свої місця.

Як працює Яндекс.Касса з відкладеними платежами?

Почну з короткого опису принципів роботи Яндекс.Касси. Спочатку користувач на сайті складає товар в корзину, потім переходить до оформлення замовлення, де вибирає спосіб оплати через Яндекс.Кассу, потім натискає кнопку оформлення замовлення. При цьому на сайті створюється замовлення, і виводиться повідомлення про те, що замовлення успішно оформлений. Залежно від настройки платіжної системи «Відкривати в окремому вікні» форма для оплати або буде виведена прямо на сторінці повідомлення про успішне замовленні, або буде відкрита в новій вкладці (майте на увазі, що за замовчуванням багато браузери блокують це вікно, хоча і показують повідомлення про блокування). У форму оплати вже підставлені всі дані на замовлення і по магазину (shopId і scid). При натисканні кнопки оплати в цій формі користувач переноситься на сторінку Яндекса з оплатою. Після оплати Яндекс відправляє службовий HTTP-запит на сайт про те, що замовлення або успішно виконаний, або що оплата не пройшла, і показує відповідне повідомлення із пропозицією повернутися на сайт.

Якщо ми хочемо використовувати, то принцип трохи змінюється: в разі успішної оплати по карті (відкладені платежі можливі тільки для банківських карт) у користувача гроші списуються, але як би поміщаються в буфер (тобто блокуються), і для подальшого управління ними потрібно виконати додатковий http-запит або для підтвердження (), або для відміни () платежу.

У разі необхідності переходу на систему оплати з холдірованіем платежів, необхідно зробити запит менеджеру Яндекс.Касси для отримання ідентифікаційних даних магазину (shopId і scid). Раніше видані shopId і scid не підходять тут, для відкладених платежів потрібні саме нові. І в підсумку виходить, що для холдірованних платежів ці два параметри будуть одні, а для всіх інших оплат в Яндекс.Кассу - інші. Також важливо розуміти, що при підключенні відкладених платежів все платежі через банківську карту будуть відкладені, тобто не можна зробити щоб частина платежів була звичайними платежами, а інші - відкладеними.

Технічні подробиці реалізації відкладених платежів можна знайти на сторінці «» допомоги Яндекс.Касси.

З чого почати налаштування відкладених платежів?

На початку спілкування з ТП при налаштуванні Яндекс.Касси менеджер Яндекса надсилає лист з таким алгоритмом дій:

  1. реалізувати наш протокол http повідомлень,
  2. пройти процедуру обміну сертифікатами,
  3. реалізувати функції confirmPayment і cancelPayment.

Реалізація протоколу HTTP-повідомлень

Перший пункт ( «реалізувати наш протокол http повідомлень») означає що необхідно налаштувати стандартну інтеграцію сайту з Яндекс.Кассой, коли сайт генерує форму для оплати, і після оплати обробляє http-запит від Яндекс.Касси. З цим все зрозуміло, більш докладно описувати не буду, тому що стаття не про це. Головне, що після інтеграції необхідно провести як мінімум один тестовий платіж, щоб менеджер в Яндекс побачив, що настройка проведена.

Процедура обміну сертифікатами

Другий пункт ( «пройти процедуру обміну сертифікатами») означає, що необхідно сформувати запит для отримання сертифіката, відправити його менеджеру Яндекса, і у відповідь отримати виданий Яндексом сертифікат для управління платежами. Повний алгоритм дій, необхідний для проходження цього пункту, описаний на в Яндексі.

Від себе додам, що даний алгоритм, хоч і описаний докладно, але все ж може викликати деякі труднощі. Саме тому я розробив спеціальну програму для Windows, яка все це зробить за вас. Сама програма важить менше одного мегабайта, інші майже 13 мегабайт - це утиліта OpenSSL і допоміжні утиліти. Також до архіву включені вихідні програми для Delphi (розроблено в Delphi Seattle). Програма не містить вірусів або іншого шкідливого або шпигунського ПЗ, не вимагає прав адміністратора, не вимагає доступу в інтернет. Користуватися програмою дуже просто: потрібно заповнити всі поля, вибрати папку для збереження файлів сертифіката, і натиснути «Готово!». Завантажити програму можна за цим засланні (5.89 МБ) .

Програма генерує чотири файли:

  1. request.csr - файл запиту,
  2. private.key - приватний ключ,
  3. sign.txt - електронний підпис запиту на сертифікат,
  4. sign_full.txt - додаткова інформація (ніде не потрібно).

Для продовження установки необхідно завантажити файл Запит на створення сертифіката (60.5 КБ) з заповненими демо-даними, замінити дані на свої (не забудьте замінити код електронного підпису з файлу sign.txt!), і відправити менеджеру Яндекс, приклавши до листа файл request.csr.


Також, щоб уникнути необхідності перевипуску сертифіката через неправильно введених даних, вводите тільки правильні дані, узгоджені з замовником. Інакше потім може з'ясуватися, що організація називається трохи по-іншому, або CN потрібен інший. Загалом, спочатку раджу все уточнити.

Реалізація функцій підтвердження та скасування платежів

Третій пункт ( «реалізувати функції confirmPayment і cancelPayment») полягає в реалізації функцій підтвердження та скасування платежу. Посилання для зазначених функцій дивіться по тексту вище. Додам, що також існують дуже корисні функції перегляду списку замовлень () і повернень (). Приклад PHP-класу для роботи з Яндекс.Кассой, а також приклад використання функцій підтвердження та скасування платежу можете завантажити в доданому файлі (3.05 КБ) .

Також додам, що в моєму випадку алгоритм підтвердження будувався на основі зміни статусу замовлення. Тобто при зміні статусу в «Доставлений» виконувалося підтвердження платежу, при зміні на «Скасовано» - скасування платежу. Для цього я використовував подія «OnSaleBeforeStatusOrder» модуля «Інтернет-магазин». Код також мається на посиланням вище по тексту.

Загальні рекомендації по налаштуванню

Процедура настройки функцій підтвердження та скасування досить складна, навіть якщо є всі описи, керівництва, коментарі і т.п. Перед початком реалізації головне:

  1. зрозуміти логіку роботи відкладених платежів,
  2. зв'язати цю логіку відкладених платежів з логікою роботи сайту,
  3. продумати, як ця зв'язка повинна працювати в коді.

Після завершення налаштування необхідно провести як мінімум одне успішне підтвердження платежу і одну успішну скасування платежу. Після цього необхідно знову написати менеджеру Яндекс для отримання налаштувань для бойового режиму.

В ході настройки виявилася проблема з SSL: якщо в phpinfo () в рядку «SSL Version» вказано NSS (напр., «NSS / 3.21 Basic ECC»), то всі запити до Яндексу намертво зависають. Якщо таке трапилося, необхідно замінити використовувану на сервері SSL-бібліотеку на OpenSSL, тоді в «SSL Version» буде щось на зразок «OpenSSL / 1.0.1e». Також необхідно перевірити, щоб запити до серверів Яндекса не блокувати на рівні файрволу на сервері.

І на останок

Як Ви вже встигли зрозуміти, спілкування з ТП досить багато, найчастіше спілкування проходить на тлі взаємного непорозуміння, деякі скаржаться, що ТП довго відповідає, або ж відповідають відписками і посиланнями на керівництва. Тому, перед тим як написати питання в ТП, уважно вивчіть всю документацію, потім правильно складіть питання, і тільки потім задавайте його.

У разі виникнення питань - звертайтеся , Постараюся допомогти.

PS: майте на увазі, ми не несемо відповідальності за будь-які дії, які Ви робите відповідно до цієї статті, в т.ч. при використанні програми генерації запиту на сертифікат. Дана стаття лише описує мій успішний досвід налаштування.

Касса з відкладеними платежами?
З чого почати налаштування відкладених платежів?
Касса з відкладеними платежами?
З чого почати налаштування відкладених платежів?

Дополнительная информация

rss
Карта