payselection / payselection-php-client
Payselection api client
Installs: 28 737
Dependents: 0
Suggesters: 0
Security: 0
Stars: 3
Watchers: 3
Forks: 5
Open Issues: 0
Requires
- php: >=7.4
- ext-json: *
- guzzlehttp/guzzle: >=7.5.1
- myclabs/php-enum: >=1.6
README
Оглавление
- Установка
- Начало работы
- Методы API
- Create Webpay
- Get Order Status
- Get Order Status (extended)
- Get transaction Status
- Get transaction Status (extended)
- Get transaction Status (by-dates)
- Paylink Create
- Paylink Void
- Create Payment
- Create Block
- Rebill Payment
- Confirm Payment
- Create Refund
- Cancel Payment
- Charge Payment
- Cancel Subscription
- Create Payout
- Get Balance
- Register Recurring
- Search Recurring
- Change Recurring
- Cancel Recurring
- Работа с webhooks
- Webhook для проверки платежа
Установка
Установить библиотеку можно с помощью composer:
composer require payselection/payselection-php-client
Начало работы
- Создайте экземпляр объекта клиента.
$apiClient = new \PaySelection\Library(); $apiClient->setConfiguration([ 'webpay_url' => 'https://webform.payselection.com', 'api_url' => 'https://gw.payselection.com', 'site_id' => '123', 'secret_key' => '###########', 'public_key' => '###########', 'site_url' => 'https://test.com' 'webhook_url' => 'https://webhook.site/notification/' ]);
Значение webhook_url
должно совпадать со значением WebhookUrl
из запросов.
Опциональное значение public_key
может использоваться в методах Paylink и Webpay.
При заполнении public_key
необходимо обязательное заполнение site_url
(его значение уточните у своего менеджера).
- Вызовите нужный метод API.
Методы API
Create Webpay
Создайте платёж, чтобы Покупатель смог оплатить его
try { $response = $apiClient->createWebPay([ 'MetaData' => [ 'PaymentType' => 'Pay' ], 'PaymentRequest' => [ 'OrderId' => 'a3a393d8-ac47-11ed-afa1-0242ac1200021', 'Amount' => '100.00', 'Currency' => 'RUB', 'Description' => 'Order description', 'RebillFlag' => true, 'ExtraData' => [ 'WebhookUrl' => 'https://webhook.site/f2bea4b3-e85c-40e9-9587-b588cfda84d3' ], ], 'ReceiptData' => [ 'timestamp' => '2023-01-11T13:38+0000', 'external_id' => '12345678', 'receipt' => [ 'client' => [ 'name' => 'Inan Ivanov', 'email' => 'ivan@example.com', ], 'company' => [ 'email' => 'company@example.com', 'inn' => '12345', 'payment_address' => 'company address', ], 'items' => [ [ 'name' => 'Product title 1', 'price' => 123.00, 'quantity' => 1, 'sum' => 123.00, 'payment_method' => 'full_prepayment', 'payment_object' => 'commodity', 'vat' => [ 'type' => 'vat0' ] ], [ 'name' => 'Product title 2', 'price' => 10.00, 'quantity' => 2, 'sum' => 20.00, 'payment_method' => 'full_prepayment', 'payment_object' => 'commodity', 'vat' => [ 'type' => 'vat0' ] ], ], 'payments' => [ [ 'type' => 1, 'sum' => 143.00 ] ], 'total' => 143.00 ] ], 'CustomerInfo' => [ 'ZIP' => '222410', 'Language' => 'ru' ], 'RecurringData' => [ 'Amount' => '100.00', 'Currency' => 'RUB', 'Description' => 'Recurring description', 'WebhookUrl' => 'https://webhook.site/f2bea4b3-e85c-40e9-9587-b588cfda84d3', 'AccountId' => 'order63', 'Email' => 'user@example.com', 'StartDate' => '2023-05-11T13:38+0000', 'Interval' => '5', 'Period' => 'day', 'MaxPeriods' => '3', 'ReceiptData' => [ 'timestamp' => '2023-01-11T13:38+0000', 'external_id' => '12345678', 'receipt' => [ 'client' => [ 'name' => 'Inan Ivanov', 'email' => 'ivan@example.com', ], 'company' => [ 'email' => 'company@example.com', 'inn' => '12345', 'payment_address' => 'company address', ], 'items' => [ [ 'name' => 'Product title 1', 'price' => 123.00, 'quantity' => 1, 'sum' => 123.00, 'payment_method' => 'full_prepayment', 'payment_object' => 'commodity', 'vat' => [ 'type' => 'vat0' ] ], [ 'name' => 'Product title 2', 'price' => 10.00, 'quantity' => 2, 'sum' => 20.00, 'payment_method' => 'full_prepayment', 'payment_object' => 'commodity', 'vat' => [ 'type' => 'vat0' ] ], ], 'payments' => [ [ 'type' => 1, 'sum' => 143.00 ] ], 'total' => 143.00 ] ] ] ]); } catch (\Exception $e) { $response = $e->getMessage(); } var_dump($response);
Paylink Create
Метод позволяет создать ссылку для перехода на платежный виджет.
try { $response = $apiClient->createPaylink([ 'MetaData' => [ 'PaymentType' => 'Pay', 'TypeLink' => 'Reusable', 'PreviewForm' => true, 'SendSMS' => true, 'OfferUrl' => 'string', 'SendBill' => true ], 'PaymentRequest' => [ 'OrderId' => 'string', 'Amount' => '123.45', 'Currency' => 'RUB', 'Description' => 'string', 'RebillFlag' => false, 'ExtraData' => [ 'ReturnUrl' => 'https://api.payselection.com/', 'SuccessUrl' => 'string', 'DeclineUrl' => 'string', 'WebhookUrl' => 'https://webhook.site/94a06b69', 'ShortDescription' => 'string', 'DynamicAmount' => true ] ], 'ReceiptData' => [ 'timestamp' => 'string', 'external_id' => 'string', 'receipt' => [ 'client' => [ 'name' => 'string', 'inn' => 'string', 'email' => 'string', 'phone' => 'string' ], 'company' => [ 'email' => 'string', 'sno' => 'osn', 'inn' => 'string', 'payment_address' => 'string' ], 'agent_info' => [ 'type' => 'bank_paying_agent', 'paying_agent' => [ 'operation' => 'string', 'phones' => [ 'string' ] ], 'receive_payments_operator' => [ 'phones' => [ 'string' ] ], 'money_transfer_operator' => [ 'phones' => [ 'string' ], 'name' => 'string', 'address' => 'string', 'inn' => 'string' ] ], 'supplier_info' => [ 'phones' => [ 'string' ] ], 'items' => [ [ 'name' => 'string', 'price' => 42949673, 'quantity' => 99999.999, 'sum' => 42949672.95, 'measurement_unit' => 'string', 'payment_method' => 'full_prepayment', 'payment_object' => 'commodity', 'nomenclature_code' => 'string', 'vat' => [ 'type' => 'none', 'sum' => 99999999.99 ], 'agent_info' => [ 'type' => 'bank_paying_agent', 'paying_agent' => [ 'operation' => 'string', 'phones' => [ 'string' ] ], 'receive_payments_operator' => [ 'phones' => [ 'string' ] ], 'money_transfer_operator' => [ 'phones' => [ 'string' ], 'name' => 'string', 'address' => 'string', 'inn' => 'string' ] ], 'supplier_info' => [ 'phones' => [ 'string' ], 'name' => 'string', 'inn' => 'string' ], 'user_data' => 'string', 'excise' => 0, 'country_code' => 'str', 'declaration_number' => 'string' ] ], 'payments' => [ [ 'type' => 0, 'sum' => 99999999.99 ] ], 'vats' => [ [ 'type' => 'none', 'sum' => 99999999.99 ] ], 'total' => 99999999.99, 'additional_check_props' => 'string', 'cashier' => 'string', 'additional_user_props' => [ 'name' => 'string', 'value' => 'string' ] ] ], 'CustomerInfo' => [ 'Email' => 'user@example.com', 'ReceiptEmail' => 'user@example.com', 'Phone' => '+79999999999', 'Language' => 'en', 'Address' => 'string', 'Town' => 'string', 'ZIP' => 'string', 'Country' => 'RUS', 'UserId' => 'string' ], 'RecurringData' => [ 'Amount' => '123.45', 'Currency' => 'RUB', 'Description' => 'string', 'WebhookUrl' => 'https://webhook.site/94a06b69', 'AccountId' => 'order63', 'Email' => 'user@example.com', 'StartDate' => '2023-01-11T13:38+0000', 'Interval' => '5', 'Period' => 'day', 'MaxPeriods' => '3', 'ReceiptData' => [ 'timestamp' => 'string', 'external_id' => 'string', 'receipt' => [ 'client' => [ 'name' => 'string', 'inn' => 'string', 'email' => 'string', 'phone' => 'string' ], 'company' => [ 'email' => 'string', 'sno' => 'osn', 'inn' => 'string', 'payment_address' => 'string' ], 'agent_info' => [ 'type' => 'bank_paying_agent', 'paying_agent' => [ 'operation' => 'string', 'phones' => [ 'string' ] ], 'receive_payments_operator' => [ 'phones' => [ 'string' ] ], 'money_transfer_operator' => [ 'phones' => [ 'string' ], 'name' => 'string', 'address' => 'string', 'inn' => 'string' ] ], 'supplier_info' => [ 'phones' => [ 'string' ] ], 'items' => [ [ 'name' => 'string', 'price' => 42949673, 'quantity' => 99999.999, 'sum' => 42949672.95, 'measurement_unit' => 'string', 'payment_method' => 'full_prepayment', 'payment_object' => 'commodity', 'nomenclature_code' => 'string', 'vat' => [ 'type' => 'none', 'sum' => 99999999.99 ], 'agent_info' => [ 'type' => 'bank_paying_agent', 'paying_agent' => [ 'operation' => 'string', 'phones' => [ 'string' ] ], 'receive_payments_operator' => [ 'phones' => [ 'string' ] ], 'money_transfer_operator' => [ 'phones' => [ 'string' ], 'name' => 'string', 'address' => 'string', 'inn' => 'string' ] ], 'supplier_info' => [ 'phones' => [ 'string' ], 'name' => 'string', 'inn' => 'string' ], 'user_data' => 'string', 'excise' => 0, 'country_code' => 'str', 'declaration_number' => 'string' ] ], 'payments' => [ [ 'type' => 0, 'sum' => 99999999.99 ] ], 'vats' => [ [ 'type' => 'none', 'sum' => 99999999.99 ] ], 'total' => 99999999.99, 'additional_check_props' => 'string', 'cashier' => 'string', 'additional_user_props' => [ 'name' => 'string', 'value' => 'string' ] ] ] ], 'ExtendedData' => [ 'FIO' => [ 'enabled' => true, 'required' => true ], 'Phone' => [ 'enabled' => true, 'required' => true ], 'Email' => [ 'enabled' => true, 'required' => true ], 'TokenLifeTime' => 10, 'Custom' => [ 'enabled' => true, 'required' => true, 'name' => 'string' ] ] ]); } catch (\Exception $e) { $response = $e->getMessage(); } var_dump($response);
Paylink Void
Метод позволяет отменить ссылку на платежный виджет.
try { $response = $apiClient->createPaylinkVoid([ 'Id' => 'string' ]); } catch (\Exception $e) { $response = $e->getMessage(); } var_dump($response);
Get Order Status
Получить статус ордера по OrderId.
try { $response = $apiClient->getOrderStatus('a3a393d8-ac47-11ed-afa1-0242ac120002'); } catch (\Exception $e) { $response = $e->getMessage(); } var_dump($response);
Get Order Status (extended)
Расширенный запрос используется для получения информации о текущем статусе по идентификатору заказа orderId.
try { $response = $apiClient->getOrderStatusExt('a3a393d8-ac47-11ed-afa1-0242ac120002'); } catch (\Exception $e) { $response = $e->getMessage(); } var_dump($response);
Get transaction Status
Статус транзакции в документации
Получить статус по TransactionId.
try { $response = $apiClient->getTransactionStatus('PS00000000000001'); } catch (\Exception $e) { $response = $e->getMessage(); } var_dump($response);
Get transaction Status (extended)
Статус транзакции в документации
Расширенный запрос используется для получения информации о текущем статусе по идентификатору транзакции TransactionId.
try { $response = $apiClient->getTransactionStatusExt('PS00000000000001'); } catch (\Exception $e) { $response = $e->getMessage(); } var_dump($response);
Get transaction Status (by-dates)
Статус транзакции в документации
Расширенный запрос используется для получения статуса транзакций по выбранному диапазону дат.
try { $response = $apiClient->getTransactionStatusByDates([ 'StartCreationDate' => '2022-12-31T00:00:00', 'EndCreationDate' => '2023-12-31T00:00:00', 'PageNumber' => 1, 'TimeZone' => 'Africa/Abidjan', 'Statuses' => [ 'success', 'voided', 'preauthorized', 'pending', 'declined', 'wait_for_3ds', 'redirect' ] ]); } catch (\Exception $e) { $response = $e->getMessage(); } var_dump($response);
Create Payment
Одностадийная операция оплаты – денежные средства списываются сразу после ее проведения.
try { $response = $apiClient->createPayment([ 'OrderId' => 'a3a393d8-ac47-11ed-afa1-0242ac120002', 'Amount' => '100.00', 'Currency' => 'RUB', 'Description' => 'Order description', 'RebillFlag' => false, 'CustomerInfo' => [ 'IP' => '192.168.1.10' ], 'ExtraData' => [ 'WebhookUrl' => 'https://webhook.site/38fb8867-a648-423e-9146-30576b2ad8e4' ], 'PaymentMethod' => 'Card', 'ReceiptData' => [ 'timestamp' => '2023-01-11T13:38+0000', 'external_id' => '12345678', 'receipt' => [ 'client' => [ 'name' => 'Inan Ivanov', 'email' => 'ivan@example.com', ], 'company' => [ 'email' => 'company@example.com', 'inn' => '12345', 'payment_address' => 'company address', ], 'items' => [ [ 'name' => 'Product title 1', 'price' => 123.00, 'quantity' => 1, 'sum' => 123.00, 'payment_method' => 'full_prepayment', 'payment_object' => 'commodity', 'vat' => [ 'type' => 'vat0' ] ], [ 'name' => 'Product title 2', 'price' => 10.00, 'quantity' => 2, 'sum' => 20.00, 'payment_method' => 'full_prepayment', 'payment_object' => 'commodity', 'vat' => [ 'type' => 'vat0' ] ], ], 'payments' => [ [ 'type' => 1, 'sum' => 143.00 ] ], 'total' => 143.00 ] ], 'PaymentDetails' => [ 'CardNumber'=> '4111111111111111', 'ExpMonth'=> '02', 'ExpYear'=> '25', 'CardholderName'=> 'Card Holder', 'CVC'=> '789' ] ]); } catch (\Exception $e) { $response = $e->getMessage(); } var_dump($response);
Create Block
Operation Block в документации
Двухстадийная операция оплаты – денежные средства блокируются на карте. Если авторизация прошла успешно, необходимо завершить транзакцию в течение 5 дней, если же вы не подтвердите транзакцию запросом на списание в течение 5 дней, снятие денежных средств будет автоматически отменено. Кроме того, есть возможность задать rebillFlag для включения рекуррентных платежей.
try { $response = $apiClient->createBlock([ 'OrderId' => 'a3a393d8-ac47-11ed-afa1-0242ac120002', 'Amount' => '100.00', 'Currency' => 'RUB', 'Description' => 'Order description', 'RebillFlag' => false, 'CustomerInfo' => [ 'IP' => '192.168.1.10' ], 'ExtraData' => [ 'WebhookUrl' => 'https://webhook.site/38fb8867-a648-423e-9146-30576b2ad8e4' ], 'PaymentMethod' => 'Card', 'ReceiptData' => [ 'timestamp' => '2023-01-11T13:38+0000', 'external_id' => '12345678', 'receipt' => [ 'client' => [ 'name' => 'Inan Ivanov', 'email' => 'ivan@example.com', ], 'company' => [ 'email' => 'company@example.com', 'inn' => '12345', 'payment_address' => 'company address', ], 'items' => [ [ 'name' => 'Product title 1', 'price' => 123.00, 'quantity' => 1, 'sum' => 123.00, 'payment_method' => 'full_prepayment', 'payment_object' => 'commodity', 'vat' => [ 'type' => 'vat0' ] ], [ 'name' => 'Product title 2', 'price' => 10.00, 'quantity' => 2, 'sum' => 20.00, 'payment_method' => 'full_prepayment', 'payment_object' => 'commodity', 'vat' => [ 'type' => 'vat0' ] ], ], 'payments' => [ [ 'type' => 1, 'sum' => 143.00 ] ], 'total' => 143.00 ] ], 'PaymentDetails' => [ 'CardNumber'=> '4111111111111111', 'ExpMonth'=> '02', 'ExpYear'=> '25', 'CardholderName'=> 'Card Holder', 'CVC'=> '789' ] ]); } catch (\Exception $e) { $response = $e->getMessage(); } var_dump($response);
Rebill Payment
Operation Rebill в документации
Операция автоматического списания средств по привязанной ранее карте.
try { $response = $apiClient->rebillPayment([ 'OrderId' => 'a3a393d8-ac47-11ed-afa1-0242ac120002', 'Amount' => '1.00', 'Currency' => 'RUB', 'Description' => 'Order description', 'RebillFlag' => true, 'RebillId' => 'GE00000001173680', 'ReceiptData' => [ 'timestamp' => '2023-01-11T13:38+0000', 'external_id' => '12345678', 'receipt' => [ 'client' => [ 'name' => 'Inan Ivanov', 'email' => 'ivan@example.com', ], 'company' => [ 'email' => 'company@example.com', 'inn' => '12345', 'payment_address' => 'company address', ], 'items' => [ [ 'name' => 'Product title 1', 'price' => 123.00, 'quantity' => 1, 'sum' => 123.00, 'payment_method' => 'full_prepayment', 'payment_object' => 'commodity', 'vat' => [ 'type' => 'vat0' ] ], [ 'name' => 'Product title 2', 'price' => 10.00, 'quantity' => 2, 'sum' => 20.00, 'payment_method' => 'full_prepayment', 'payment_object' => 'commodity', 'vat' => [ 'type' => 'vat0' ] ], ], 'payments' => [ [ 'type' => 1, 'sum' => 143.00 ] ], 'total' => 143.00 ] ], 'WebhookUrl' => 'https://webhook.site/38fb8867-a648-423e-9146-30576b2ad8e4' ]); } catch (\Exception $e) { $response = $e->getMessage(); } var_dump($response);
Confirm Payment
Operation Confirm в документации
Используется для операций Pay или Block с 3DS после получения результатов аутентификации от банка для завершения одностадийной/двухстадийной операции оплаты.
try { $response = $apiClient->confirmPayment([ 'TransactionId' => 'PS00000000000001', 'OrderId' => 'a3a393d8-ac47-11ed-afa1-0242ac120002', 'PaRes' => '123', 'MD' => '456' ]); } catch (\Exception $e) { $response = $e->getMessage(); } var_dump($response);
Create Refund
Operation Refund в документации
Только успешная транзакция может быть возвращена
try { $response = $apiClient->createRefund([ 'TransactionId' => 'PS00000000000001', 'Amount' => '1.00', 'Currency' => 'RUB', 'ReceiptData' => [ 'timestamp' => '2023-01-11T13:38+0000', 'external_id' => '12345678', 'receipt' => [ 'client' => [ 'name' => 'Inan Ivanov', 'email' => 'ivan@example.com', ], 'company' => [ 'email' => 'company@example.com', 'inn' => '12345', 'payment_address' => 'company address', ], 'items' => [ [ 'name' => 'Product title 1', 'price' => 123.00, 'quantity' => 1, 'sum' => 123.00, 'payment_method' => 'full_prepayment', 'payment_object' => 'commodity', 'vat' => [ 'type' => 'vat0' ] ], [ 'name' => 'Product title 2', 'price' => 10.00, 'quantity' => 2, 'sum' => 20.00, 'payment_method' => 'full_prepayment', 'payment_object' => 'commodity', 'vat' => [ 'type' => 'vat0' ] ], ], 'payments' => [ [ 'type' => 1, 'sum' => 143.00 ] ], 'total' => 143.00 ] ], 'WebhookUrl' => 'https://webhook.site/38fb8867-a648-423e-9146-30576b2ad8e4' ]); } catch (\Exception $e) { $response = $e->getMessage(); } var_dump($response);
Cancel Payment
Operation Cancel в документации
Отмена блокировки средств на карте в рамках ранее проведенной двухстадийной операции оплаты.
try { $response = $apiClient->cancelPayment([ 'TransactionId' => 'PS00000000000001', 'Amount' => '100.00', 'Currency' => 'RUB', 'WebhookUrl' => 'https://webhook.site/38fb8867-a648-423e-9146-30576b2ad8e4' ]); } catch (\Exception $e) { $response = $e->getMessage(); } var_dump($response);
Charge Payment
Operation Charge в документации
Списание средств с карты в рамках проведенной ранее двухстадийной операции оплаты.
try { $response = $apiClient->chargePayment([ 'TransactionId' => 'PS00000000000001', 'Amount' => '100.00', 'Currency' => 'RUB', 'WebhookUrl' => 'https://webhook.site/38fb8867-a648-423e-9146-30576b2ad8e4' ]); } catch (\Exception $e) { $response = $e->getMessage(); } var_dump($response);
Cancel Subscription
Operation Unsubscribe в документации
Отмена рекуррентных платежей.При использовании данного метода произойдет отписка по всем зарегистрированным регулярным оплатам в рамках переданного RebillId
try { $response = $apiClient->cancelSubscription([ 'RebillId' => 'PS00000000000001' ]); } catch (\Exception $e) { $response = $e->getMessage(); } var_dump($response);
Create Payout
Operation Payout в документации
Одностадийная операция оплаты – денежные средства списываются сразу после ее проведения.
try { $response = $apiClient->createPayout([ 'OrderId' => 'a3a393d8-ac47-11ed-afa1-0242ac120002', 'Amount' => '100.00', 'Currency' => 'RUB', 'Description' => 'Order description', 'CustomerInfo' => [ 'IP' => '192.168.1.10' ], 'ExtraData' => [ 'WebhookUrl' => 'https://webhook.site/38fb8867-a648-423e-9146-30576b2ad8e4' ], 'PayoutMethod' => 'Card', 'ReceiptData' => [ 'timestamp' => '2023-01-11T13:38+0000', 'external_id' => '12345678', 'receipt' => [ 'client' => [ 'name' => 'Inan Ivanov', 'email' => 'ivan@example.com', ], 'company' => [ 'email' => 'company@example.com', 'inn' => '12345', 'payment_address' => 'company address', ], 'items' => [ [ 'name' => 'Product title 1', 'price' => 123.00, 'quantity' => 1, 'sum' => 123.00, 'payment_method' => 'full_prepayment', 'payment_object' => 'commodity', 'vat' => [ 'type' => 'vat0' ] ], [ 'name' => 'Product title 2', 'price' => 10.00, 'quantity' => 2, 'sum' => 20.00, 'payment_method' => 'full_prepayment', 'payment_object' => 'commodity', 'vat' => [ 'type' => 'vat0' ] ], ], 'payments' => [ [ 'type' => 1, 'sum' => 143.00 ] ], 'total' => 143.00 ] ], 'PayoutDetails' => [ 'CardNumber'=> '4111111111111111', 'CardholderName'=> 'Card Holder', ] ]); } catch (\Exception $e) { $response = $e->getMessage(); } var_dump($response);
Get Balance
Operation Balance в документации
Операция проверки доступного баланса для Payout.
try { $response = $apiClient->getBalance(); } catch (\Exception $e) { $response = $e->getMessage(); } var_dump($response);
Register Recurring
Operation Recurring в документации
Регистрация регулярной оплаты по привязанной ранее карте.
try { $response = $apiClient->registerRecurring([ 'RebillId' => 'GE00000001173680', 'Amount' => '100.00', 'Currency' => 'RUB', 'Description' => 'Recurring description', 'WebhookUrl' => 'https://webhook.site/f2bea4b3-e85c-40e9-9587-b588cfda84d3', 'AccountId' => 'order63', 'Email' => 'user@example.com', 'StartDate' => '2023-05-11T13:38+0000', 'Interval' => '5', 'Period' => 'day', 'MaxPeriods' => '3', 'ReceiptData' => [ 'timestamp' => '2023-01-11T13:38+0000', 'external_id' => '12345678', 'receipt' => [ 'client' => [ 'name' => 'Inan Ivanov', 'email' => 'ivan@example.com', ], 'company' => [ 'email' => 'company@example.com', 'inn' => '12345', 'payment_address' => 'company address', ], 'items' => [ [ 'name' => 'Product title 1', 'price' => 123.00, 'quantity' => 1, 'sum' => 123.00, 'payment_method' => 'full_prepayment', 'payment_object' => 'commodity', 'vat' => [ 'type' => 'vat0' ] ], [ 'name' => 'Product title 2', 'price' => 10.00, 'quantity' => 2, 'sum' => 20.00, 'payment_method' => 'full_prepayment', 'payment_object' => 'commodity', 'vat' => [ 'type' => 'vat0' ] ], ], 'payments' => [ [ 'type' => 1, 'sum' => 143.00 ] ], 'total' => 143.00 ] ] ]); } catch (\Exception $e) { $response = $e->getMessage(); } var_dump($response);
Cancel Recurring
Operation Recurring Unsubscribe в документации
Отмена регулярной оплаты.
try { $response = $apiClient->cancelRecurring([ 'RecurringId' => '1173' ]); } catch (\Exception $e) { $response = $e->getMessage(); } var_dump($response);
Search Recurring
Operation Recurring Search в документации
Поиск регулярной оплаты (подписки) по выбранному параметру.
try { $response = $apiClient->searchRecurring([ 'RebillId' => 'PS00000000000001', 'RecurringId' => '1173', 'AccountId' => 'order63', ]); } catch (\Exception $e) { $response = $e->getMessage(); } var_dump($response);
Change Recurring
Operation Recurring Change в документации
Изменение параметров регулярной оплаты (подписки).
try { $response = $apiClient->changeRecurring([ 'RecurringId' => '1173', 'MaxPeriods' => '3', 'StartDate' => '2023-01-11T13:38+0000', 'Interval' => '5', 'Period' => 'day', 'Amount' => '123.45', 'ReceiptData' => [ 'timestamp' => 'string', 'external_id' => 'string', 'receipt' => [ 'client' => [ 'name' => 'string', 'inn' => 'string', 'email' => 'string', 'phone' => 'string' ], 'company' => [ 'email' => 'string', 'sno' => 'osn', 'inn' => 'string', 'payment_address' => 'string' ], 'agent_info' => [ 'type' => 'bank_paying_agent', 'paying_agent' => [ 'operation' => 'string', 'phones' => [ 'string' ] ], 'receive_payments_operator' => [ 'phones' => [ 'string' ] ], 'money_transfer_operator' => [ 'phones' => [ 'string' ], 'name' => 'string', 'address' => 'string', 'inn' => 'string' ] ], 'supplier_info' => [ 'phones' => [ 'string' ] ], 'items' => [ [ 'name' => 'string', 'price' => 42949673, 'quantity' => 99999.999, 'sum' => 42949672.95, 'measurement_unit' => 'string', 'payment_method' => 'full_prepayment', 'payment_object' => 'commodity', 'nomenclature_code' => 'string', 'vat' => [ 'type' => 'none', 'sum' => 99999999.99 ], 'agent_info' => [ 'type' => 'bank_paying_agent', 'paying_agent' => [ 'operation' => 'string', 'phones' => [ 'string' ] ], 'receive_payments_operator' => [ 'phones' => [ 'string' ] ], 'money_transfer_operator' => [ 'phones' => [ 'string' ], 'name' => 'string', 'address' => 'string', 'inn' => 'string' ] ], 'supplier_info' => [ 'phones' => [ 'string' ], 'name' => 'string', 'inn' => 'string' ], 'user_data' => 'string', 'excise' => 0, 'country_code' => 'str', 'declaration_number' => 'string' ] ], 'payments' => [ [ 'type' => 0, 'sum' => 99999999.99 ] ], 'vats' => [ [ 'type' => 'none', 'sum' => 99999999.99 ] ], 'total' => 99999999.99, 'additional_check_props' => 'string', 'cashier' => 'string', 'additional_user_props' => [ 'name' => 'string', 'value' => 'string' ] ] ] ]); } catch (\Exception $e) { $response = $e->getMessage(); } var_dump($response);
Работа с webhooks
Webhook в документации Webhook для подписок в документации
try { $result = $apiClient->hookPay(); } catch (\Exception $e) { $response = $e->getMessage(); } var_dump($result);
Работа с webhooks проверки платежа
Webhook для проверки платежа в документации
После ввода клиентом карточных данных вы можете получить webhook с данными из запроса для сопоставления их с данными заказа. Вебхук проверки платежа отличается от обычного вебхука, в котором ТСП получает результаты платежа, после его проведения. Вебхук проверки платежа активируется только технической поддержкой. Чтобы включить, настроить и выключить вебхук проверки платежа необходимо написать на почту support@payselection.com.
В письме сообщите:
- URL-адрес возврата, куда будет передаваться вебхук. Также вы можете заранее самостоятельно настроить статичный URL возврата в личном кабинете, в разделе "Сайты". Укажите его для тех.поддержки.
- Параметры из запроса, которые вам необходимо проверить (это всё, что входит в payment request в методе create)
Возможные варианты параметров для проверки:
- сумма
- номер заказа
- валюта платежа
Проверочный вебхук отправляется с webpay после ввода карточных данных или выбора клиентом иного способа оплаты. Вебхук проверки платежа приходит в формате json и содержит только те параметры для проверки, которые вы указали в письме
Пример содержимого полученного вебхука: {"OrderId": "1299670125", "Amount": "4.50", "Description": "Description", "RebillFlag": false}
После подключения вебхука проверки платежа, когда вы направите запрос с необходимыми параметрами и URL возврата, Ваш сервис приема должен отдавать:
- 200 статус, если оплату можно продолжать
- 4хх и 5хх статусы в различных вариациях для прерывания оплаты.
try { $result = $apiClient->verifyPaymentHook(); // Пример проверки суммы if ($result->amount != 500) throw new Exception("Incorrect amount"); } catch (\PaySelection\Exceptions\PSException $e) { print_r($e); } var_dump($result);
License
MIT