mludvik/yii2-gopay

Yii2 对官方 [GoPay 的 Payments REST API PHP SDK](https://github.com/gopaycommunity/gopay-php-api) 的集成。

安装: 384

依赖关系: 0

建议者: 0

安全: 0

星标: 1

关注者: 1

分支: 3

开放问题: 0

类型:yii2-extension

1.0.0 2018-09-09 08:53 UTC

This package is not auto-updated.

Last update: 2024-09-24 10:35:19 UTC


README

Yii2 对官方 GoPay 的 Payments REST API PHP SDK 的集成。

安装

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

运行以下命令:

php composer.phar require mludvik/yii2-gopay:"~1.0"

或者将以下内容添加到你的 composer.json 文件的 require 部分中:

"mludvik/yii2-gopay": "~1.0"

用法

在开始使用此扩展之前,建议您阅读 GoPay REST API 文档

GoPayComponent

GoPayComponent 是 GoPay PHP SDK 的轻量级包装。

通过添加相应的组件配置来启用它。

'components' => [

  ...

  'goPay' => [
    'class' => 'mludvik\gopay\GoPayComponent',
    'config' => [
      'goid' => '...',
      'clientId' => '...',
      'clientSecret' => '...',
      'isProductionMode' => YII_ENV_PROD,
      'scope' => TokenScope::ALL,
      'language' => Language::ENGLISH,
      'timeout' => 30,
    ],
  ],

  ...
]

然后您可以在 Payments 对象上调用任何方法。

use Yii;

Yii::$app->goPay->createPayment([...]);
Yii::$app->goPay->getStatus(...);
...

GoPayAsset

GoPayAsset 将前端 GoPay 依赖项导入到您的页面中。它对 YII_EVN 常量敏感 - 当 YII_ENV === 'prod' 时加载生产版本,否则加载测试版本。有多种方法可以使用它。

  1. 要在所有页面上加载它,请将其注册到 AppAsset 中。
class AppAsset extends AssetBundle {

  ...

  public $depends = [
    ...
    'mludvik\gopay\GoPayAsset',
  ];
}
  1. 要在特定页面上加载它,请将其注册到相应的视图中。
use mludvik\gopay\GoPayAsset;

GoPayAsset::register($this);
  1. 当使用以下描述的 GoPayForm 时,您根本不需要注册 GoPayAsset。它将在渲染 GoPayForm 的页面上自动注册。

GoPayForm

GoPayForm 是一个用于帮助您构建结账页面的小部件。

GoPayForm 实际上是 ActiveForm,有两个区别。

  • 它使用异步 POST 请求将数据提交到控制器,然后将用户重定向到支付网关。
  • 它有一个静态方法 response,可以在控制器中使用来构建对表单提交的预期响应。

示例

首先,您需要一个表单来收集用户的支付偏好(例如,首选的支付方式)。这也是放置一些业务逻辑的好地方。

namespace app\models;

use Yii;
use yii\base\Model;

class CheckoutForm extends Model {

  public $paymentMethod;

  ...

  public function createPayment() {
    // Build request based on form's data.
    $request = [...];

    // Establish payment on GoPay side.
    return Yii::$app->goPay->createPayment($request);
  }
}

然后创建结账操作。

namespace app\controllers;

use Yii;
use yii\web\Controller;
use mludvik\gopay\GoPayForm;
use app\models\CheckoutForm;

class PaymentController extends Controller {

  ...

  public function actionCheckout() {
    $model = CheckoutForm;

    if(Yii::$app->request->isAjax) {
      if($model->load(Yii::$app->request->post()) && $model->validate()) {
        $response = $model->createPayment();
        return GoPayForm::response($response);
      } else {
        return GoPayForm::response(null);
      }
    }

    return $this->render('checkout', ['model' => $model]);
  }
}

最后,创建视图。

<?php use mludvik\gopay\GoPayForm; ?>

<?php $form = GoPayForm::begin(); ?>

  ...

  <?= Html::submitButton('Pay') ?>
<?php GoPayForm::end(); ?>