raiffeisen-ecom / payment-sdk
Ecommerce payment API SDK
Installs: 38 285
Dependents: 2
Suggesters: 0
Security: 0
Stars: 2
Watchers: 3
Forks: 1
Open Issues: 1
pkg:composer/raiffeisen-ecom/payment-sdk
Requires
- php: >=5.6.0
- ext-curl: *
- ext-json: *
Requires (Dev)
- php-mock/php-mock-phpunit: ^1.1
- phpdocumentor/phpdocumentor: 2.8.*
- phpunit/phpunit: 5.7.27
- squizlabs/php_codesniffer: 3.5.*
README
SDK модуль для внедрения эквайринга Райффайзенбанка.
Установка и подключение
Установка с помощью composer:
$ composer require raiffeisen-ecom/payment-sdk
Документация
**Raiffeisenbank e-commerce API: https://pay.raif.ru/doc/ecom.html
Генерация авто-документации composer run docs.
Клиент API
Для использования SDK требуется секретный ключ $secretKey и идентификатор мерчанта $publicId, подробности в документации и на сайте банка.
<?php $secretKey = '***'; $publicId = '***'; $ecomClient = new \Raiffeisen\Ecom\Client($secretKey, $publicId); ?>
Параметры конструктора и свойства клиента:
- $secretKey- секретный ключ, обязательный, доступ только на запись;
- $publicId- идентификатор мерчанта, обязательный, доступ на чтение и запись;
- $host- хост api, по умолчанию- https://e-commerce.raiffeisen.ru, доступ на чтение и запись;
- $options- дополнительные параметры запроса, доступ только на чтение.
Примеры
Пользователь совершает следующие действия в процессе платежа:
- Выбирает товары/услуги в корзину магазина и нажимает кнопку “Оплатить”;
- Партнер открывает платежную форму;
- Клиент вводит реквизиты на платежной форме и подтверждает платеж.
Настройка URL для приема событий
Метод postCallbackUrl устанавливает адресс приема событий.
В параметрах нужно указать:
- $callbackUrl- невый URL.
<?php $callbackUrl = 'http://test.ru/'; /** @var \Raiffeisen\Ecom\Client $client */ $client->postCallbackUrl($callbackUrl); ?>
Платежная форма
Метод getPayUrl возвращает ссылку на платежную форму.
В параметрах нужно указать:
- $amount- сумма заказа;
- $orderId- идентификатор заказа;
- $query- дополнительные параметры запроса.
<?php $amount = 10; $orderId = 'testOrder'; $query = [ 'successUrl' => 'http://test.ru/', ]; /** @var \Raiffeisen\Ecom\Client $client */ $link = $client->getPayUrl($amount, $orderId, $query); echo $link; ?>
Вывод:
https://e-commerce.raiffeisen.ru/pay/?publicId=***&amount=10&orderId=testOrder&successUrl=http%3A%2F%2Ftest.ru%2F
Получение информации о статусе транзакции
Метод getOrderTransaction возвращает информацию о статусе транзакции.
В параметрах нужно указать:
- $orderId- идентификатор заказа.
<?php $orderId = 'testOrder'; /** @var \Raiffeisen\Ecom\Client $client */ $response = $client->getOrderTransaction($orderId); print_r($response); ?>
Вывод:
Array
(
    [code] => SUCCESS
    [transaction] => Array
    (
        [id] => 120059
        [orderId] => testOrder
        [status] => Array
        (
            [value] => SUCCESS
            [date] => 2019-07-11T17:45:13+03:00
        )
        [paymentMethod] => acquiring
        [paymentParams] => Array
        (
            [rrn] => 935014591810
            [authCode] => 25984
        )
        [amount] => 12500.5
        [comment] => Покупка шоколадного торта
        [extra] => Array
        (
            [additionalInfo] => Sweet Cake
        )
    )
)
Оформление возврата по платежу
Метод postOrderRefund создает возврат по заказу.
В параметрах нужно указать:
- $orderId- идентификатор заказа;
- $refundId- идентификатор заказа;
- $amount- сумма возврата.
<?php $orderId = 'testOrder'; $refundId = 'testRefund'; $amount = 150; /** @var \Raiffeisen\Ecom\Client $client */ $response = $client->postOrderRefund($orderId, $refundId, $amount); print_r($response); ?>
Вывод:
Array
(
    [code] => SUCCESS
    [amount] => 150
    [refundStatus] => IN_PROGRESS
)
Статус возврата
Метод getOrderRefund возвращает статус возврата.
В параметрах нужно указать:
- $orderId- идентификатор заказа;
- $refundId- идентификатор заказа.
<?php $orderId = 'testOrder'; $refundId = 'testRefund'; /** @var \Raiffeisen\Ecom\Client $client */ $response = $client->getOrderRefund($orderId, $refundId); print_r($response); ?>
Вывод:
Array
(
    [code] => SUCCESS
    [amount] => 150
    [refundStatus] => COMPLETED
)
Получение информации о заказе
Метод getOrder возвращает данные о заказе.
В параметрах нужно указать:
- $orderId- идентификатор заказа.
<?php $orderId = 'testOrder'; /** @var \Raiffeisen\Ecom\Client $client */ $response = $client->getOrder($orderId); print_r($response); ?>
Вывод:
Array
(
    [amount] => 12500.5
    [comment] => Покупка шоколадного торт
    [extra] => Array
    (
        [additionalInfo] => sweet cake
    )
    [status] => Array
    (
        [value] => NEW
        [date] => 2019-08-24T14:15:22+03:00
    )
    [expirationDate] => 2019-08-24T14:15:22+03:00
)
Отмена выставленного заказа
Метод deleteOrder удаляет заказ, если он не был оплачен.
В параметрах нужно указать:
- $orderId- идентификатор заказа.
<?php $orderId = 'testOrder'; /** @var \Raiffeisen\Ecom\Client $client */ $client->deleteOrder($orderId); ?>
Получение списка чеков
Метод getOrderReceipts возвращает список чеков.
В параметрах нужно указать:
- $orderId- идентификатор заказа.
- $receiptType- необязательное, тип чека:- sell – чек прихода;
- refund – чек возврата.
 
<?php $orderId = 'testOrder'; /** @var \Raiffeisen\Ecom\Client $client */ $response = $client->getOrderReceipts($orderId); print_r($response); ?>
Вывод:
Array
(
    [0] => Array
    (
        [receiptNumber] => 3000827351831
        [receiptType] => REFUND
        [status] => DONE
        [orderNumber] => testOrder
        [total] => 1200
        [customer] => Array
        (
            [email] => customer@test.ru
            [name] => Иванов Иван Иванович
        )
        [items] => Array
        (
            [0] => Array
            (
                [name] => Шоколадный торт
                [price] => 1200
                [quantity] => 1
                [amount] => 1200
                [paymentObject] => COMMODITY
                [paymentMode] => FULL_PREPAYMENT
                [measurementUnit] => шт
                [nomenclatureCode] => 00 00 00 01 00 21 FA 41 00 23 05 41 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 12 00 AB 00
                [vatType] => VAT20
                [agentType] => ANOTHER
                [supplierInfo] => Array
                (
                    [phone] => +79991234567
                    [name] => ООО «Ромашка»
                    [inn] => 1234567890
                )
            )
        )
    )
)
Получение чека возврата
Метод getOrderRefundReceipt возвращает чек возврата.
В параметрах нужно указать:
- $orderId- идентификатор заказа;
- $refundId- идентификатор возврата.
<?php $orderId = 'testOrder'; $refundId = 'testRefund'; /** @var \Raiffeisen\Ecom\Client $client */ $response = $client->getOrderRefundReceipt($orderId, $refundId); print_r($response); ?>
Вывод:
Array
(
    [receiptNumber] => 3000827351831
    [receiptType] => REFUND
    [status] => DONE
    [orderNumber] => testOrder
    [total] => 1200
    [customer] => Array
    (
        [email] => customer@test.ru
        [name] => Иванов Иван Иванович
    )
    [items] => Array
    (
        [0] => Array
        (
            [name] => Шоколадный торт
            [price] => 1200
            [quantity] => 1
            [amount] => 1200
            [paymentObject] => COMMODITY
            [paymentMode] => FULL_PREPAYMENT
            [measurementUnit] => шт
            [nomenclatureCode] => 00 00 00 01 00 21 FA 41 00 23 05 41 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 12 00 AB 00
            [vatType] => VAT20
            [agentType] => ANOTHER
            [supplierInfo] => Array
            (
                [phone] => +79991234567
                [name] => ООО «Ромашка»
                [inn] => 1234567890
            )
        )
    )
)
Уведомление о платеже
Метод checkEventSignature проверяет подпись уведомления о платеже.
В параметрах нужно указать:
- $signature- содержимое заголовка- x-api-signature-sha256;
- $eventBody- разобранный JSON из тела запроса.
<?php $signature = '***'; $eventBody = [ 'event' => 'payment', 'transaction' => [ 'id' => 120059, 'orderId' => 'testOrder', 'status' => [ "value" => 'SUCCESS', "date" => '2019-07-11T17:45:13+03:00', ], 'paymentMethod' => 'acquiring', 'paymentParams' => [ 'rrn' => 935014591810, 'authCode' => 25984, ], 'amount' => 12500.5, 'comment' => 'Покупка шоколадного торта', 'extra' => [ 'additionalInfo': 'Sweet Cake', ], ], ]; /** @var \Raiffeisen\Ecom\Client $client */ $client->checkEventSignature($signature, $eventBody); // true or false ?>
Требования
- PHP v5.6.0 или выше
- расширение PHP json
- расширение PHP curl