dicr / yii2-payparts
PrivatBank 为 Yii2 提供分期付款
3.0.0
2022-01-05 03:16 UTC
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
客户端以模块的形式实现,用于处理银行回调请求。
配置
在应用程序配置中设置分期付款模块。主要设置是 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();
如果没有安装银行回调通知处理程序,则可以通过额外请求获取付款状态
// запрос состояния платежа
$request = $module->createStateRequest([
'orderId' => $orderId // номер заказа
]);
// проверяем состояние платежа
$response = $request->send();
echo 'PaymentState: ' . $response->paymentState . "\n";
实际调用示例在测试中实现(tests 目录)。