matperez / yii2-platron
Yii2 Platron支付网关API
0.3.0
2016-10-28 15:34 UTC
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: 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;
}