Giter VIP home page Giter VIP logo

php-tinkoff-payment's Introduction

Tinkoff Payment API client

Клиент для проведения платежей API Тинькофф Платежи.

Установка

composer require paveldanilin/php-tinkoff-payment

Реализованные API

Платежи

Автоплатежи

Примеры

Создание клиента

/** @var PaymentClientInterface $paymentClient */
$paymentClient = PaymentClient::create('<terminal_key>', '<password>');

Создание платежа

API создания платежа

Полный пример

$payment = newPayment()
    ->amount(1000)
    ->orderId('1234')
    ->oneStep()
->build();

/** @var NewPaymentResultInterface $result */
$result = $paymentClient->init($payment);

if ($result->isSuccess()) {
    print 'PaymentId: ' . $result->getPaymentId() . "\n";
    print 'PaymentURL: ' . $result->getPaymentURL() . "\n";
} else {
    print 'Error: ' . $result->getMessage() . "\n";
}

Создание платежа с чеком

Полный пример

$payment = newPayment()
    ->orderId('33101')
    ->oneStep()
    ->receipt(newReceipt()
        ->email('[email protected]')
        ->taxationOSN()
        ->addItem(newReceiptItem()
            ->name('Кружка')
            ->price(1000)
            ->quantity(1)
            ->taxNone()
            ->build())
        ->build())
    ->build();

/** @var NewPaymentResultInterface $result */
$result = $paymentClient->init($payment);

if ($result->isSuccess()) {
    print 'PaymentId: ' . $result->getPaymentId() . "\n";
    print 'PaymentURL: ' . $result->getPaymentURL() . "\n";
} else {
    print 'Error: ' . $result->getMessage() . "\n";
}

Отмена платежа

API отмена платежа

Полный пример

/** @var CancelResultInterface $result */
$result = $paymentClient->cancel(1645861116);

if ($result->isSuccess()) {
    print 'PaymentId: ' . $result->getPaymentId() . ' [' . $result->getStatus() . "]\n";
} else {
    print 'Error: ' . $result->getMessage() . "\n";
}

Получение текущего статуса платежа

API получение текущего статуса платежа

Полный пример

/** @var GetStateResultInterface $result */
$result = $paymentClient->getState(1645861116);

if ($result->isSuccess()) {
    print 'PaymentId: ' . $result->getPaymentId() . ' [' . $result->getStatus() . "]\n";
} else {
    print 'Error: ' . $result->getMessage() . "\n";
}

Получение статуса заказа

API получение статуса заказа

Полный пример

/** @var CheckOrderResultInterface $result */
$result = $paymentClient->checkOrder('333335556669');

if ($result->isSuccess()) {
    print 'OrderID: ' . $result->getOrderId() . "\n";
    print '-----' . "\n";
    foreach ($result->getPayments() as $payment) {
        print 'PaymentID: ' . $payment->getPaymentId() . "\n";
        print 'Status: ' . $payment->getStatus() . "\n";
        print 'Success: ' . $payment->getSuccess() . "\n";
        print 'RRN: ' . $payment->getRRN() . "\n";
        print '=====' . "\n";
    }
} else {
    print 'Error: ' . $result->getMessage() . "\n";
}

Повторить неуспешные нотификации

API повторной отправки неуспешных нотификаций

Полный пример

/** @var ResendResultInterface $result */
$result = $paymentClient->resendNotifications();

if ($result->isSuccess()) {
    print 'Count: ' . $result->getCount() . "\n";
} else {
    print 'Error: ' . $result->getMessage() . "\n";
}

Автоплатежи

Родительский платеж

Вызовите метод Init с параметрами Recurrent и CustomerKey Переадресуйте покупателя на страницу оплаты и дождитесь совершения платежа В нотификации AUTHORIZED или CONFIRMED получите и сохраните идентификатор RebillID

API проведения автоплатежа

$charge = new Charge();
$charge->setPaymentId(10063);
$charge->setRebillId(1234);
$result = $paymentClient->charge($charge);

if ($result->isSuccess()) {
    // Успех
} else {
    // Ошибка
}

Запуск тестов

composer test

php-tinkoff-payment's People

Contributors

paveldanilin avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

php-tinkoff-payment's Issues

Совместимость с Symfony ^6.4|^7.0

Павел, спасибо за прекрасный пакет!

Шикарный код, всё по уму!
Можно ли обновить Rest Client, чтобы была совместимость этой библиотеки с новыми версиями пакетов Symfony?

Заранее благодарю!

redirectDueDate

Добрый день!
Спасибо за труды!
Подскажите как мне создать платеж с redirectDueDate
Спасибо!

Ошибка при вызове метода charge

Здравствуйте!

Получаю ошибку при вызове метода charge (вызывал и так и так)

$charge = new Charge();
$charge->setPaymentId(10063);
$charge->setRebillId(1234);
$result = $paymentClient->charge($charge);

if ($result->isSuccess()) {
    // Успех
} else {
    // Ошибка
} 

и так

$charge = new Charge();
$charge->setTerminalKey('155525273208DEMO');
$charge->setPaymentId('2878431439');
$charge->setRebillId('1655752240416');
$charge->setToken('b580a209b486e22a8590465103dfe01538d3c12439078ebfd9027fdd2f15971c');

$result = $paymentClient->charge($charge);

В ответ получаю разные ошибки (при F5)
Pada\Tinkoff\Payment\Model\Charge\ChargeResult Object ( [success:Pada\Tinkoff\Payment\Model\AbstractResult:private] => [errorCode:Pada\Tinkoff\Payment\Model\AbstractResult:private] => 9999 [message:Pada\Tinkoff\Payment\Model\AbstractResult:private] => Неверные параметры. [details:Pada\Tinkoff\Payment\Model\AbstractResult:private] => Поле TerminalKey не должно быть пустым. [terminalKey:Pada\Tinkoff\Payment\Model\Charge\ChargeResult:private] => [amount:Pada\Tinkoff\Payment\Model\Charge\ChargeResult:private] => 0 [orderId:Pada\Tinkoff\Payment\Model\Charge\ChargeResult:private] => [status:Pada\Tinkoff\Payment\Model\Charge\ChargeResult:private] => [paymentId:Pada\Tinkoff\Payment\Model\Charge\ChargeResult:private] => 0 )
или
Pada\Tinkoff\Payment\Model\Charge\ChargeResult Object ( [success:Pada\Tinkoff\Payment\Model\AbstractResult:private] => [errorCode:Pada\Tinkoff\Payment\Model\AbstractResult:private] => 201 [message:Pada\Tinkoff\Payment\Model\AbstractResult:private] => Неверные параметры. [details:Pada\Tinkoff\Payment\Model\AbstractResult:private] => Поле PaymentId не должно быть пустым. [terminalKey:Pada\Tinkoff\Payment\Model\Charge\ChargeResult:private] => [amount:Pada\Tinkoff\Payment\Model\Charge\ChargeResult:private] => 0 [orderId:Pada\Tinkoff\Payment\Model\Charge\ChargeResult:private] => [status:Pada\Tinkoff\Payment\Model\Charge\ChargeResult:private] => [paymentId:Pada\Tinkoff\Payment\Model\Charge\ChargeResult:private] => 0 )

То есть жалуется то на одно, то на другое. Будто рандомно выдает ошибку по этим полям. Это может быть из-за того, что касса тестовая и карта тоже? (то есть я на этапе тестов)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.