Демоверсія

Посібник із платіжного шлюзу

Інтеграція Razorpay API для сайтів бронювання подорожей

Razorpay — платіжний шлюз для Індії: він приймає картки, UPI, інтернет-банкінг і гаманці в рупіях. У цьому посібнику розібрано, як проходить платіж Razorpay під час бронювання авіаквитка, готелю чи туру, і чесно описано статус у PHPTRAVELS: Razorpay поки не готовий конектор, але його можна додати як індивідуальну інтеграцію до вихідного коду, який належить вам.

  • Картки, UPI, інтернет-банкінг, гаманці
  • Замовлення, Checkout, списання
  • Перевірка підпису та вебхуків
  • Повні й часткові повернення

Razorpay коротко

Що таке Razorpay і яке місце він посідає в PHPTRAVELS

Razorpay — індійський платіжний шлюз. Туристичний бізнес, що продає клієнтам в Індії, використовує його, щоб приймати під час оплати звичні для них способи: дебетові й кредитні картки, UPI, інтернет-банкінг та популярні гаманці. Платежі й розрахунки йдуть в індійських рупіях на власний акаунт Razorpay мерчанта.

PHPTRAVELS — платформа бронювання подорожей для самостійного розміщення з повним вихідним кодом. Готові платіжні шлюзи беруться з живого списку, і ви вмикаєте їх зі своїми даними мерчанта. Razorpay у цьому списку зараз немає, тому перемикача для нього в адмінці поки що немає.

Це не означає, що ним не можна користуватися. Оскільки код належить вам, Razorpay можна додати як Індивідуальна інтеграція API, а для Індії вже є готовий шлюз: Cashfree. Усі шлюзи, які можна ввімкнути просто зараз, наведено на сторінці Інтеграція платіжних шлюзів.

Ілюстрація онлайн-оплати подорожі: сторінка оформлення броні передає карткову оплату платіжному шлюзу й повертає результат у систему бронювання

Довідка про Razorpay

Що це
Платіжний шлюз для бізнесу в Індії
Способи оплати
Картки, UPI, інтернет-банкінг і гаманці
Валюта
Списання й розрахунки в INR; суми передаються в пайсах
API-ключі
Key ID і Key Secret, окремі для тестового та бойового режиму
Статус у PHPTRAVELS
Не готовий конектор. Доступний як індивідуальна інтеграція у вихідний код, що входить до поставки
Готово для Індії сьогодні
Cashfree, вмикається в адмінці з вашим акаунтом Cashfree
Посібник із налаштування Cashfree

Процес оплати

Один платіж Razorpay за бронювання, крок за кроком

Інтеграція Razorpay ділить роботу між браузером мандрівника та вашим сервером. Браузер показує Checkout; сервер створює замовлення, перевіряє результат і вирішує, коли бронювання вважати підтвердженим.

  1. 01

    Ваш сервер

    Створення замовлення

    Коли мандрівник натискає «Сплатити», ваш сервер викликає Orders API із сумою в пайсах, валютою та receipt, що дорівнює номеру бронювання. Razorpay повертає order_id.

  2. 02

    Браузер

    Відкриття Razorpay Checkout

    Сторінка бронювання відкриває Checkout з вашим Key ID і цим order_id, тож мандрівник платить саме ту суму, яку зафіксував сервер.

  3. 03

    Браузер

    Оплата мандрівником

    Мандрівник обирає картку, UPI, інтернет-банкінг або гаманець і проходить усі кроки, яких вимагає його банк. Тепер платіж авторизовано.

  4. 04

    Браузер

    Checkout повертає три значення

    У разі успіху Checkout віддає razorpay_payment_id, razorpay_order_id і razorpay_signature, а сторінка надсилає їх на ваш сервер.

  5. 05

    Ваш сервер

    Перевірка підпису

    Ваш сервер заново обчислює підпис за order_id і payment_id за допомогою Key Secret. Справжнім платежем вважається лише платіж зі збіжним підписом.

  6. 06

    Ваш сервер

    Списання платежу

    За автоматичного списання Razorpay списує кошти сам. За ручного списання ваш сервер списує їх після підтвердження від авіакомпанії, готелю чи постачальника туру, тож за невдале бронювання нікого не заряджають.

  7. 07

    Ваш сервер

    Підтвердження бронювання

    Бронювання переходить у статус «сплачено», видається квиток або ваучер, а payment_id Razorpay зберігається разом із номером бронювання.

  8. 08

    Ваш серверСервер — сервер

    Отримання вебхука

    Razorpay також надсилає події, як-от payment.captured, на ваш URL вебхука. Це рятує, якщо мандрівник закрив вкладку, не дочекавшись, поки сторінка повідомить результат.

Підписи та вебхуки

Дві перевірки, що роблять інтеграцію Razorpay надійною

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

verify-razorpay.php · приклад
 1// 1. After Checkout: verify the payment signature 2$orderId   = $booking["razorpay_order_id"];  // from your own record 3$paymentId = $_POST["razorpay_payment_id"]; 4$signature = $_POST["razorpay_signature"]; 5$expected  = hash_hmac("sha256", $orderId . "|" . $paymentId, $keySecret); 6if (!hash_equals($expected, $signature)) { rejectPayment(); } 7markPaid($booking["ref"], $paymentId); 8 9// 2. Webhook: verify X-Razorpay-Signature over the raw body10$body    = file_get_contents("php://input");11$header  = $_SERVER["HTTP_X_RAZORPAY_SIGNATURE"] ?? "";12$expect  = hash_hmac("sha256", $body, $webhookSecret);13if (!hash_equals($expect, $header)) { http_response_code(400); exit; }14$event = json_decode($body, true);15if (alreadyHandled($event)) exit;          // repeat delivery16switch ($event["event"]) {17  case "payment.captured": confirmBooking($event); break;18  case "refund.processed": markRefunded($event);   break;19}

Орієнтовний псевдокод для ілюстрації логіки, а не готовий файл. Точні виклики дивіться в документації та SDK Razorpay.

  • Підпис платежу

    HMAC SHA256 від order_id, символу вертикальної риски та payment_id з ключем Key Secret має збігатися з razorpay_signature. Порівнюйте функцією зі сталим часом виконання.

  • Підпис вебхука

    Кожен вебхук містить заголовок X-Razorpay-Signature: це HMAC SHA256 від необробленого тіла запиту з ключем — секретом вебхука, заданим у панелі Razorpay.

  • Повторні доставки

    Вебхуки можуть надходити повторно або в іншому порядку. Фіксуйте ідентифікатори подій і платежів та ігноруйте подію, яку вже застосовано до бронювання.

  • Секрети залишаються на сервері

    У браузер іде лише Key ID. Key Secret і секрет вебхука зберігаються в конфігурації сервера, але не у вихідному коді сторінки й не в мобільному застосунку.

Повернення й скасування

Повернення за подорож рідко буває повним

Штрафи за скасування, правила щодо неявки та частково скасовані маршрути означають, що повернення за подорож часто буває частковим. Refunds API Razorpay підтримує обидва варіанти, а суму повернення інтеграція визначає за вашими правилами бронювання.

  • Повне повернення

    Безкоштовне скасування повертає всю списану суму тим способом, яким платив мандрівник.

  • Часткове повернення

    Після утримання штрафу за скасування сервер повертає лише залишок. Суму передають у пайсах, як і в початковому замовленні.

  • Частина маршруту

    Скасуйте одну ніч у готелі чи одного пасажира й поверніть цю частину; нові часткові повернення можливі аж до списаної суми.

  • refund.processed

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

  • Зберігається разом із бронюванням

    Ідентифікатор кожного повернення зберігається з номером бронювання та початковим payment_id для вашої бухгалтерії.

  • Приклад: скасування зі штрафом

    Списано
    ₹12,500.00 amount: 1250000
    Штраф за скасування
    ₹1,500.00 amount: 150000
    Сума повернення
    ₹11,000.00 amount: 1100000

    Лише орієнтовні цифри. Razorpay приймає суми в мінімальній одиниці валюти, тому 100 пайсів — це одна рупія.

Як підключити Razorpay

Три способи приймати платежі — з Razorpay або без нього

Оберіть варіант, що пасує вашій команді та даті запуску. У всіх трьох гроші залишаються на вашому власному мерчант-акаунті; PHPTRAVELS не бере участі в розрахунках.

  1. Варіант 1

    Додають ваші розробники

    PHPTRAVELS постачається з повним вихідним кодом, тож ваші розробники можуть додати Razorpay як новий шлюз поруч з наявними: створення замовлення, Checkout на кроці оплати, перевірка підпису, списання, вебхуки та повернення.

    • Розробка й тести на тестових ключах Razorpay
    • Номер бронювання використовується як receipt замовлення
    • Перехід на бойові ключі після успішних тестових бронювань
  2. Варіант 2

    Робить PHPTRAVELS

    Наші розробники можуть створити для вас конектор Razorpay як Індивідуальна інтеграція API. Ви надсилаєте вимоги, до початку робіт отримуєте вартість і строки, а наприкінці — протестований вихідний код.

    • Оцінка до початку робіт
    • Розробка в тестовому режимі Razorpay
    • Постачання у вигляді вихідного коду, що належить вам
  3. Варіант 3

    Готовий шлюз просто зараз

    Якщо потрібно спершу запуститися, увімкніть шлюз, що вже є на платформі. Для Індії це Cashfree. Сьогодні готові шлюзи охоплюють:

Готові шлюзи

Платіжні шлюзи, які можна ввімкнути сьогодні

Цей список підтягується з каталогу шлюзів PHPTRAVELS у реальному часі. Кожен вмикається в адмінці з вашим акаунтом і ключами.

Хочете зрозуміти, які виклики стоять за будь-яким із них? Прочитайте посібник із API платіжного шлюзу, порівняйте посібники з Платежі через Stripe і Платежі PayPal або подивіться, як агенти платять із B2B-гаманець агента на B2B-порталі.

Запитання про Razorpay

Razorpay і PHPTRAVELS: відповіді

Відділ продажів

Не як готовий конектор. Razorpay зараз немає у списку шлюзів PHPTRAVELS, тому ввімкнути його в адмінці не можна. Оскільки повний вихідний код входить до поставки, його можна додати як індивідуальну інтеграцію платіжного шлюзу — силами ваших розробників або наших.

Cashfree — готовий шлюз у PHPTRAVELS, посібник із налаштування є на docs.phptravels.com/payments/cashfree. Ви вмикаєте його в адмінці зі своїм акаунтом Cashfree. Інші готові шлюзи, як-от Stripe і PayPal, наведено на сторінці платіжних шлюзів.

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

Razorpay приймає суми в мінімальній одиниці валюти, тому підсумок бронювання в рупіях множиться на 100 перед створенням замовлення. Суму повернення передають так само.

Checkout повертає ідентифікатор платежу, ідентифікатор замовлення та підпис. Ваш сервер обчислює HMAC SHA256 від ідентифікатора замовлення й ідентифікатора платежу з вашим Key Secret і приймає платіж, лише якщо результат збігається з підписом.

Автоматичне списання простіше. Ручне дає змогу списати гроші лише після того, як авіакомпанія, готель чи постачальник туру підтвердить бронювання, тож невдале бронювання можна звільнити, а не повертати. Вибір залежить від ваших продуктів і постачальників.

Так. Refunds API Razorpay підтримує повні й часткові повернення, тож штраф за скасування можна утримати, а залишок повернути. Вебхук refund.processed повідомляє серверу, коли повернення завершено.

Так. Мерчант-акаунт, його Key ID і Key Secret, а також розрахунки належать вам. PHPTRAVELS ніколи не надає облікових даних шлюзу й не обробляє ваші кошти. Розробляйте на тестових ключах і переходьте на бойові під час запуску.

Це залежить від потрібного обсягу: Checkout, ручне списання, повернення, платежі агентів. PHPTRAVELS називає ціну індивідуальних робіт до їх початку. Сама платформа — одноразова ліцензія від.