Платежи для travel-софта
интеграция Paddle API: когда merchant of record подходит туристическому бизнесу
Paddle продаёт программное обеспечение, SaaS и цифровые продукты от своего имени, выступая как merchant of record. Поэтому он хорошо подходит travel-tech компании, которая выставляет счета за собственные подписки, и обычно не подходит для приёма оплаты за авиабилеты, отели и туры. На этой странице разобрана разница, показано, как устроена интеграция с Paddle и как подключить её к PHPTRAVELS, если ваш случай подходит.
- Merchant of record, а не шлюз
- Создан для софта и подписок
- Вебхуки с подписью
- Подключается как индивидуальная интеграция
Две разные модели
Merchant of record и платёжный шлюз
Платёжный шлюз проводит деньги за вас: продавец — вы, платёжная компания обрабатывает карту, а налоги, счета, возвраты и споры остаются вашей зоной ответственности. Merchant of record идёт дальше и становится продавцом в глазах покупателя и налоговых органов. Когда кто-то покупает через Paddle, продаёт ему именно Paddle: он собирает и перечисляет налог с продаж или НДС, выставляет счёт, разбирает чарджбэки и затем выплачивает вам вашу долю.
Такая модель избавляет софтверную компанию от большого объёма налоговой работы и комплаенса, но и означает, что Paddle сам решает, что он готов перепродавать. Его платформа создана для софта, SaaS и цифровых продуктов, а не для туристических услуг, которые оказывают авиакомпании, отели и туроператоры. Общая механика карточных платежей описана на странице API платёжного шлюза.

| Вопрос | Paddle (merchant of record) | Платёжный шлюз |
|---|---|---|
| Кто продавец? | Продавец — Paddle. Чек покупателя и выписка по карте приходят со стороны Paddle. | Продавец — вы. Шлюз лишь проводит платёж через ваш мерчант-аккаунт. |
| Кто отвечает за налог с продаж и НДС? | Paddle рассчитывает, собирает и перечисляет налог с продаж и НДС в тех регионах, где продаёт. | Вы сами: через собственные налоговые регистрации, бухгалтера и выставление счетов. |
| Кто выставляет счёт? | Счёт или квитанцию покупателю выставляет Paddle. | Ваша собственная система, например счёт по бронированию в админке. |
| Кто занимается чарджбэками? | Споры и чарджбэки ведёт Paddle как продавец. | Вы отвечаете на споры с доказательствами через панель или API шлюза. |
| Что можно продавать? | ПО, SaaS, подписки и цифровые продукты в рамках правил допустимого использования Paddle. | Товары и услуги, одобренные шлюзом, в том числе туристические бронирования у многих турмерчантов. |
| Как вы получаете деньги? | Paddle выплачивает вашу выручку за вычетом комиссии по своему графику выплат. | Списанные платежи зачисляются на ваш мерчант-аккаунт или банковский счёт за вычетом комиссии шлюза. |
Комиссии, поддерживаемые страны и точный перечень разрешённых продуктов определяет Paddle, и со временем они меняются. Прежде чем строить планы, изучите собственные условия Paddle.
Помощник в выборе
Подходит ли Paddle для того, что вы продаёте?
Исходите из того, за что платит клиент. Выберите сценарий, который ближе всего к вашему бизнесу.
01
Путешественники оплачивают авиабилеты, отели и туры
Клиент покупает поездку, которую выполняет авиакомпания, отель или туроператор. Для таких платежей часто нужна сначала авторизация, а списание позже, частичные возвраты после штрафов за отмену и оформление заказа в нескольких валютах.
Наше мнение
Используйте платёжный шлюз
Прежде чем применять Paddle для туристических бронирований, изучите его правила допустимого использования. Большинство турбизнесов принимают оплату бронирований через платёжный шлюз, например Stripe, PayPal, Adyen или региональный шлюз.
02
Вы продаёте собственное travel-ПО или SaaS
Вы поставщик туристических технологий, и агентства платят вам ежемесячную или годовую подписку за инструмент бронирования, доступ к API, плагин или white-label портал.
Наше мнение
Paddle может подойти
Именно для таких продаж и создан merchant of record: Paddle выставляет счёт по подписке, берёт на себя налоги в каждой стране и выплачивает вам деньги, так что регистрироваться по НДС везде, где живут ваши клиенты, не нужно.
03
Вы продаёте и бронирования, и софт
Ваше агентство ведёт сайт бронирования для путешественников и одновременно лицензирует платформу или инструменты другим агентствам.
Наше мнение
Используйте оба, но раздельно
Платежи за бронирования принимайте через готовый шлюз в процессе бронирования, а подписки на софт выставляйте через Paddle. Два потока, два набора записей, и для каждого свой правильный налоговый режим.
Как это работает
Как устроена интеграция с Paddle от начала до конца
Paddle Billing работает с продуктами и ценами, которые вы создаёте в Paddle, с чекаутом, который открывает Paddle.js, и с вебхуками, сообщающими вашему серверу о происходящем.
01
Продукты и цены
Каждый тариф вы создаёте в Paddle один раз, например месячную и годовую цену, а идентификаторы цен храните в своей системе.
pri_…02
Чекаут Paddle.js
Ваша страница загружает Paddle.js и открывает чекаут как оверлей или встроенный фрейм, передавая идентификатор цены и вашу ссылку на клиента.
Paddle.Checkout.open()03
Транзакция завершена
Покупатель платит, Paddle списывает средства с карты или кошелька, применяет налог и создаёт транзакцию, а если цена повторяющаяся, то и подписку.
txn_…04
Вебхук с подписью
Paddle отправляет на ваш эндпоинт событие, например transaction.completed, подписанное в заголовке Paddle-Signature.
transaction.completed05
Ваша система действует
Ваш сервер проверяет подпись, а затем активирует аккаунт, продлевает тариф или фиксирует платёж.
200 OK
Храните API-ключ только на своём сервере. Браузер использует отдельный клиентский токен, а у песочницы и боевой среды свои ключи, цены и секреты вебхуков.
Безопасность вебхуков
Проверка заголовка Paddle-Signature
Вебхук может подделать любой, кто знает URL вашего эндпоинта. Именно проверка подписи каждого события делает безопасной активацию аккаунта по вебхуку.
1$raw = file_get_contents("php://input"); 2$header = $_SERVER["HTTP_PADDLE_SIGNATURE"] ?? ""; // ts=…;h1=… 3parse_str(str_replace(";", "&", $header), $sig); 4 5$expected = hash_hmac("sha256", $sig["ts"] . ":" . $raw, $endpointSecret); 6if (!hash_equals($expected, $sig["h1"] ?? "")) { 7 http_response_code(400); exit; // not from Paddle 8} 9if (time() - (int) $sig["ts"] > $tolerance) exit; // too old1011$event = json_decode($raw, true);12if (alreadyHandled($event["event_id"])) exit; // repeat delivery13if ($event["event_type"] === "transaction.completed") {14 activatePlan($event["data"]["custom_data"]["account_id"]);15}16http_response_code(200);
Пояснительный пример на чистом PHP. Точный формат смотрите в актуальной документации Paddle или в его официальном SDK.
- 01
Берите сырое тело запроса
Подпись считается по телу запроса в том виде, в каком оно получено, поэтому читайте его до того, как разбор JSON что-либо изменит.
- 02
Метка времени и хеш
В заголовке передаются метка времени и хеш HMAC-SHA256, созданный секретным ключом эндпоинта. Пересчитайте его и сравните за постоянное время.
- 03
Отклоняйте старые и повторные события
Отклоняйте события со слишком старой меткой времени и сохраняйте идентификатор каждого события, чтобы повторная доставка не обработалась дважды.
- 04
Сначала песочница
Разрабатывайте и тестируйте в песочнице Paddle с тестовыми картами, а затем переключите ключи, цены и секрет на боевые.
PHPTRAVELS и Paddle
Подключение Paddle к PHPTRAVELS
Сначала честный ответ, затем варианты.
Paddle не входит в готовые коннекторы
Paddle нет в списке платёжных шлюзов PHPTRAVELS, и опубликованного руководства по настройке тоже нет. Готовые шлюзы, показанные ниже, созданы именно для приёма оплаты за бронирования.
Для оплаты бронирований: готовый шлюз
Включите в админке готовый шлюз, например Платежи через Stripe или Платежи PayPal, со своим мерчант-аккаунтом. Чекаут, возвраты и номер бронирования уже встроены в процесс бронирования, как описано на странице Интеграция платёжных шлюзов.
Для продажи софта: Paddle как индивидуальная интеграция
Если ваш случай укладывается в правила Paddle, наши разработчики подключат его как Индивидуальная интеграция API: чекаут Paddle.js на вашей странице, проверяемый эндпоинт для вебхуков и платежи, привязанные к вашим клиентам. Стоимость согласуется до начала работ.
Или разработайте сами на исходном коде
PHPTRAVELS разворачивается на вашем сервере и поставляется с полным исходным кодом, поэтому ваши разработчики могут добавить Paddle для подписок рядом с движком бронирования. Что входит в каждую лицензию, указано на странице Цены.
Готовы для оплаты бронирований
Платёжные шлюзы, уже подключённые к PHPTRAVELS
Для платежей путешественников и агентов эти шлюзы готовы к работе: вы открываете аккаунт у провайдера, вводите ключи в админке, тестируете и запускаетесь. Список актуальный, из нашего каталога интеграций.
StripeРуководство по интеграцииPayPalРуководство по интеграции
xMoney
Fawaterk
Cashfree
Paystack
Flutterwave
Adyen
MyFatoorah
SSLcommerz
Razorpay- Все интеграции
Субагенты также могут платить с предоплаченного баланса или в рамках кредитного лимита через B2B-кошелек агента, и для этого шлюз не нужен вовсе.
Не как готовый коннектор. Paddle нет в списке платёжных шлюзов PHPTRAVELS. Если ваш случай укладывается в правила Paddle, например продажа подписок на собственный софт, его можно добавить как индивидуальную интеграцию или реализовать силами ваших разработчиков на входящем в поставку исходном коде.
Paddle — это merchant of record для софта, SaaS и цифровых продуктов, поэтому для авиабилетов, отелей и туров он, как правило, не подходит. Прежде чем применять его для туристических бронирований, изучите правила допустимого использования Paddle: большинство турбизнесов принимают оплату бронирований через платёжный шлюз, например Stripe, PayPal, Adyen или региональный шлюз.
Компания, которая юридически продаёт товар покупателю. Она отвечает за сбор и перечисление налога с продаж или НДС, выставление счетов, возвраты и чарджбэки и указывается в выписке клиента. С Paddle эту роль берёт на себя Paddle, а затем выплачивает деньги вам.
Шлюз обрабатывает платежи за вас, а продавцом остаётесь вы, вместе с налогами и спорами. Paddle сам становится продавцом, что снимает эту работу при продаже софта, но ограничивает круг того, что можно продавать через него.
Когда вы продаёте собственный софт, а не поездки: инструмент бронирования, API, плагин или white-label портал, за которые агентства платят по подписке. Тогда Paddle выставит им счёт и возьмёт на себя налоги в каждой стране.
Paddle отправляет такие события, как завершённая транзакция или продлённая подписка, на зарегистрированный вами URL. Каждый запрос содержит заголовок Paddle-Signature с меткой времени и хешем, и ваш сервер проверяет его секретным ключом эндпоинта, прежде чем действовать.
Да. У Paddle есть отдельная песочница со своим аккаунтом, API-ключами, ценами и тестовыми картами. Разрабатывайте и тестируйте там, а затем перенесите конфигурацию в боевую среду.
Да, как два отдельных потока: движок бронирования принимает платежи путешественников через готовый шлюз, а Paddle выставляет счета за подписки на ваш софт. Ведите их учёт раздельно, чтобы к каждой продаже применялся правильный налоговый режим.
Узнайте больше
Ещё о платформе
- Интеграция платёжных шлюзовОплата, 3D Secure, возвраты и вебхуки
- API платёжного шлюзаКак работают карточные платежи, 3-D Secure, списание и возвраты через API
- Индивидуальная интеграция APIПодключите любой API поставщика или партнёра к PHPTRAVELS
- Платежи через StripeОплата картой и кошельком, возвраты и выплаты
- Платежи PayPalОплата через PayPal для авиа, отелей и туров
- Цены
