dicr / yii2-payparts
Оплата частями от ПриватБанк для Yii2
Installs: 70
Dependents: 0
Suggesters: 0
Security: 0
Stars: 1
Forks: 0
Type:yii2-extension
pkg:composer/dicr/yii2-payparts
Requires
- php: ~8.0
- ext-json: *
- dicr/yii2-json: ~3.0
- dicr/yii2-validate: ~3.0
- yiisoft/yii2: ~2.0
- yiisoft/yii2-httpclient: ~2.0
Requires (Dev)
- phpunit/phpunit: ~9.5
- roave/security-advisories: dev-latest
README
Документация:
- основной API: https://api.privatbank.ua/#p24/partPaymentApi
- расширенный API: https://bw.gitbooks.io/api-oc/content/
- личный кабинет https://payparts2.privatbank.ua
- тестовые данные: https://bw.gitbooks.io/api-oc/content/testdata.html
Клиент реализован в виде модуля, для обработки callback-запросов от банка.
Конфигурация
В конфиге приложения настраиваем модуль оплаты частями. Основные настройки - это storeId и password.
[
    'modules' => [
        'payparts' => [
            'class' => dicr\payparts\PayPartsModule::class,
            'storeId' => '* мой storeId *',
            'password' => '* мой password *',
            // обработчик состояний платежей (опционально)
            'callbackHandler' => static function(dicr\payparts\PayPartsResponse $response) {
                Order::setPayed($response->orderId);
            }
        ]
    ]
];
Пример создания платежа:
/** @var PayPartsModule $module получаем модуль оплат */
$module = Yii::$app->getModule('payparts');
// запрос на создание платежа
$request = $module->paymentRequest([
    'orderId' => $orderId,                        // номер заказа в интернет-магазине
    'merchantType' => PayParts::MERCHANT_TYPE_PP, // сервис "оплата частями"
    'partsCount' => 2,                            // кол-во частей
    'products' => [                               // список товаров
        ['name' => 'Рулон бумаги', 'price' => 0.01, 'count' => 2],
        ['name' => 'Автомобиль', 'price' => 123, 'count' => 1],
        ['name' => 'Талоны на Интернет', 'price' => 123.123, 'count' => 3]
    ]
]);
// отправляем запрос и получаем токен
$response = $request->send();
echo 'Token: ' . $response->token . "\n";
echo 'Redirect URL: ' . $response->paymentUrl . "\n";
// переадресация покупателя на страницу оплаты
$response->redirectCheckout();
Если не установлен обработчик callback-оповещений банка, то состояние платежа можно получить дополнительным запросом:
// запрос состояния платежа
$request = $module->createStateRequest([
   'orderId' => $orderId     // номер заказа 
]);
// проверяем состояние платежа
$response = $request->send();
echo 'PaymentState: ' . $response->paymentState . "\n";
Рабочий пример вызова реализован в тестах (директория tests).