matperez/yii2-platron

Yii2 Platron支付网关API

安装次数: 5,971

依赖者: 0

建议者: 0

安全性: 0

星星: 0

关注者: 2

分支: 0

开放问题: 0

类型:yii2-extension

0.3.0 2016-10-28 15:34 UTC

This package is not auto-updated.

Last update: 2024-09-28 19:09:48 UTC


README

Platron.ru支付系统商户API

安装

安装此扩展的首选方式是通过composer。

运行以下命令之一

php composer.phar require --prefer-dist matperez/yii2-platron"

或者

"matperez/yii2-platron": "~0.0.1"

将以下内容添加到您的composer.json文件的require部分。

使用方法

配置

/** @var \matperez\yii2platron\Platron $platron */
$platron = Yii::createObject([
    'class' => \matperez\yii2platron\Platron::class,
    'secretKey' => 1234,
    'merchantId' => 12345,
    'successUrl' => ['platron/success'],
    'failureUrl' => ['platron/failure'],
]);

也可以通过components配置部分完成。

初始化支付

$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();

撤销支付

$response = $platron->revoke(new \matperez\yii2platron\requests\RevokeRequest([
    'refundAmount' => 1000,
    'paymentId' => 1234,
]));
$transactionIsRevoked = $response->isSuccess();

检查支付状态

$response = $platron->getStatus(new \matperez\yii2platron\requests\StatusRequest([
    'payment_id' => 1234,
]));
$responseIsSuccess = $response->isSuccess();
$transactionIsComplete = $response->hasStatus(\matperez\yii2platron\Api::TRANSACTION_STATUS_OK);

处理网关回调

网关回调处理动作可能如下所示

    /**
     * @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;
    }