定制 noith/tbank-bridge 二次开发

按需修改功能、优化性能、对接业务系统,提供一站式技术支持

邮箱:yvsm@zunyunkeji.com | QQ:316430983 | 微信:yvsm316

noith/tbank-bridge

Composer 安装命令:

composer require noith/tbank-bridge

包简介

Laravel payment-core bridge for T-Bank acquiring

README 文档

README

Мост (bridge) между noith/payment-core и эквайрингом T‑Bank (Тинькофф) для Laravel. Пакет подключает платёжные «рельсы» T‑Bank к ядру payment-core: создание счетов, синхронизация статусов, приём вебхуков и рекуррентные платежи.

Под капотом используется HTTP‑клиент noith/tbank.

Возможности

  • Карты (tbank) — оплата картой с редиректом, рекуррентные платежи (rebill).
  • СБП (tbank-sbp) — оплата через Систему быстрых платежей, привязка счёта (account binding).
  • T‑Pay (tbank-tpay).
  • Mir Pay (tbank-mir).
  • Синхронизация статусов (GetState) и сверка (reconciliation).
  • Приём вебхуков-уведомлений на готовый маршрут.
  • Фискализация чеков через фискальный профиль продавца из payment-core.
  • Валюта: RUB.

Требования

  • PHP ^8.3
  • Laravel (через noith/payment-core ^1.0.6)
  • noith/tbank ^1.1

Установка

composer require noith/tbank-bridge

Пакет использует Laravel package discovery — TbankServiceProvider подключается автоматически. Он регистрирует платёжные системы в PaymentSystemRegistry и добавляет маршрут вебхука.

(Опционально) опубликуйте конфиг:

php artisan vendor:publish --tag=tbank-config

Конфигурация

После публикации появится config/tbank.php. Все значения берутся из env:

return [
    // Базовые URL эквайринга (можно переопределить per-seller, см. ниже).
    'api_url'      => env('TBANK_API_URL', 'https://securepay.tinkoff.ru/v2/'),
    'cashbox_url'  => env('TBANK_CASHBOX_URL', 'https://securepay.tinkoff.ru/cashbox/'),

    // Маршрут для приёма вебхуков от T-Bank.
    'webhook_path'       => env('TBANK_WEBHOOK_PATH', 'payment/tbank/webhook'),
    'webhook_middleware' => [],
];

В .env:

# Боевые значения по умолчанию уже стоят в конфиге — переопределяйте только при необходимости
# (например, для теста подставьте sandbox-URL T-Bank).
TBANK_API_URL=https://securepay.tinkoff.ru/v2/
TBANK_CASHBOX_URL=https://securepay.tinkoff.ru/cashbox/
TBANK_WEBHOOK_PATH=payment/tbank/webhook

⚠️ Терминальные ключи (terminal_key / secret_key) не хранятся в этом конфиге. Они задаются per‑seller в payment-core (см. раздел «Учётные данные продавца»).

Учётные данные продавца

Ключи терминала хранятся per‑seller в payment-corecredentials записи payment_credentials). TbankCredentials::fromArray() ожидает:

КлючОбязательныйОписание
terminal_keyдаTerminal Key терминала T‑Bank.
secret_keyдаПароль терминала (также принимается алиас password).
api_urlнетПереопределение api_url для конкретного продавца.
cashbox_urlнетПереопределение cashbox_url для конкретного продавца.

Так разные продавцы могут работать на разных терминалах (и при необходимости — на разных окружениях), а сами ключи никогда не попадают в код или репозиторий.

Вебхуки

Сервис‑провайдер регистрирует POST‑маршрут:

  • путь: webhook_path (по умолчанию payment/tbank/webhook);
  • имя: tbank.webhook;
  • middleware: из webhook_middleware.

Этот URL по умолчанию подставляется в NotificationURL при создании платежа (если не задан кастомный резолвер, см. ниже). Укажите его в настройках терминала в личном кабинете T‑Bank или положитесь на значение, отправляемое в Init.

Return / Notification URL

URL'ы, отправляемые в Init (SuccessURL, FailURL, NotificationURL), часто зависят от конкретного счёта (подписанные ссылки, параметры маршрута), поэтому их нельзя задать статикой. Зарегистрируйте резолверы в boot() своего сервис‑провайдера:

use Noith\Payment\Models\PaymentInvoice;
use Noith\PaymentTbank\Support\TbankUrls;

public function boot(): void
{
    TbankUrls::successUrlUsing(fn (PaymentInvoice $i) => route('shop.paid', $i->uuid));
    TbankUrls::failUrlUsing(fn (PaymentInvoice $i) => route('shop.failed', $i->uuid));

    // Необязательно: по умолчанию NotificationURL = route('tbank.webhook').
    TbankUrls::notificationUrlUsing(fn (PaymentInvoice $i) => route('tbank.webhook'));
}

Резолвер может вернуть null — тогда значение не отправляется и применяются настройки самого терминала. NotificationURL по умолчанию указывает на встроенный маршрут вебхука пакета.

Использование

Платёжные системы регистрируются в payment-core под кодами:

КодКлассНазначение
tbankTbankCardPaymentSystemКарты (+ рекуррент)
tbank-sbpTbankSbpPaymentSystemСБП (+ привязка счёта)
tbank-tpayTbankTPayPaymentSystemT‑Pay
tbank-mirTbankMirPayPaymentSystemMir Pay

Создание счёта и работа с ним выполняются через API payment-core — выбирайте нужный код платёжной системы. Бридж сам формирует Init‑запрос, возвращает RedirectInvoiceResult со ссылкой на оплату и проставляет provider_invoice_id.

Рекуррентные платежи

  • Карты: при save_payment_method на счёте отправляется Recurrent, а RebillId из вебхука сохраняется как токен метода оплаты и используется для последующих списаний.
  • СБП: используется привязка счёта (AccountToken).

Тесты

composer test

Лицензия

MIT.

统计信息

  • 总下载量: 0
  • 月度下载量: 0
  • 日度下载量: 0
  • 收藏数: 0
  • 点击次数: 0
  • 依赖项目数: 0
  • 推荐数: 0

GitHub 信息

  • Stars: 0
  • Watchers: 0
  • Forks: 0
  • 开发语言: PHP

其他信息

  • 授权协议: MIT
  • 更新时间: 2026-06-28

承接程序开发

PHP开发

VUE

Vue开发

前端开发

小程序开发

公众号开发

系统定制

数据库设计

云部署

网站建设

安全加固