matperez / yii2-platron
Yii2 Platron payment gateway API
Installs: 6 440
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 0
Type:yii2-extension
Requires
- php: >=5.5
- guzzlehttp/guzzle: ^6.2
- yiisoft/yii2: ~2.0
Requires (Dev)
- mockery/mockery: ^0.9.5
- phpunit/phpunit: ^5.5
This package is not auto-updated.
Last update: 2025-03-29 21:45:53 UTC
README
Platron.ru payment system merchant API
Installation
The preferred way to install this extension is through composer.
Either run
php composer.phar require --prefer-dist matperez/yii2-platron"
or add
"matperez/yii2-platron": "~0.0.1"
to the require section of your composer.json file.
Usage
Config
/** @var \matperez\yii2platron\Platron $platron */
$platron = Yii::createObject([
'class' => \matperez\yii2platron\Platron::class,
'secretKey' => 1234,
'merchantId' => 12345,
'successUrl' => ['platron/success'],
'failureUrl' => ['platron/failure'],
]);
It is also could be done through the components
config section.
Init payment
$response = $platron->initPayment(new \matperez\yii2platron\requests\InitPaymentRequest([
'amount' => 1000,
'orderId' => 1234,
'description' => 'amazing goods',
'params' => [
'custom_param' => 5
],
]));
$paymentIsInitiated = $response->isSuccess();
$redirectUrl = $response->getRedirectUrl();
Revoke payment
$response = $platron->revoke(new \matperez\yii2platron\requests\RevokeRequest([
'refundAmount' => 1000,
'paymentId' => 1234,
]));
$transactionIsRevoked = $response->isSuccess();
Check payment status
$response = $platron->getStatus(new \matperez\yii2platron\requests\StatusRequest([
'payment_id' => 1234,
]));
$responseIsSuccess = $response->isSuccess();
$transactionIsComplete = $response->hasStatus(\matperez\yii2platron\Api::TRANSACTION_STATUS_OK);
Processing the gateway callbacks
Gateway callback processing action might look like this:
/**
* @return array
* @throws BadRequestHttpException
* @throws ServerErrorHttpException
*/
public function actionResult()
{
$request = new ResultRequest(\Yii::$app->request->post());
if (!$request->validate()) {
throw new BadRequestHttpException('Invalid result request: '.var_export($request->errors, true));
}
$transaction = \Yii::$app->db->beginTransaction();
$response = new ResultResponse([
'status' => ResultResponse::STATUS_OK
]);
try {
// do something to commit or reject the payment..
$transaction->commit();
} catch (\Exception $e) {
$transaction->rollBack();
$response->status = ResultResponse::STATUS_ERROR;
$response->errorDescription = $e->getMessage();
}
try {
$data = $this->platron->prepareParams($_SERVER['REQUEST_URI'], $response->getResponseAttributes());
} catch (\Exception $e) {
throw new ServerErrorHttpException('Unable to prepare the response: '.$e->getMessage(), $e->getCode(), $e);
}
\Yii::$app->response->format = Response::FORMAT_XML;
return $data;
}