matperez/yii2-platron

Yii2 Platron payment gateway API

Installs: 5 726

Dependents: 0

Suggesters: 0

Security: 0

Stars: 0

Watchers: 2

Forks: 0

Open Issues: 0

Type:yii2-extension

0.3.0 2016-10-28 15:34 UTC

This package is not auto-updated.

Last update: 2024-05-11 17:29:11 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;
    }