ruskid/yii2-stripe

Yii2 Stripe 包装器

1.6 2019-04-14 13:33 UTC

This package is auto-updated.

Last update: 2024-09-05 03:04:21 UTC


README

安装

安装此扩展的首选方式是通过 https://getcomposer.org.cn/download/

运行以下命令之一

php composer.phar require ruskid/yii2-stripe "dev-master"

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

"ruskid/yii2-stripe": "dev-master"

使用方法

在 main.php 中添加一个新的组件

'components' => [
...
'stripe' => [
    'class' => 'ruskid\stripe\Stripe',
    'publicKey' => "pk_test_xxxxxxxxxxxxxxxxxxx",
    'privateKey' => "sk_test_xxxxxxxxxxxxxxxxxx",
],
...

要渲染简单的结账表单,只需在视图中调用小部件,它将自动注册脚本。有关更多选项,请参阅 Stripe 文档。

use ruskid\stripe\StripeCheckout;

<?=
StripeCheckout::widget([
    'action' => '/',
    'name' => 'Demo test',
    'description' => '2 widgets ($20.00)',
    'amount' => 2000,
    'image' => '/128x128.png',
]);
?>

自定义结账表单是简单表单的扩展版本,但您可以自定义按钮(见 buttonOptions)并按需处理令牌(tokenFunction)。

use ruskid\stripe\StripeCheckoutCustom;

<?=
StripeCheckoutCustom::widget([
    'action' => '/',
    'name' => 'Demo test',
    'description' => '2 widgets ($20.00)',
    'amount' => 2000,
    'image' => '/128x128.png',
    'buttonOptions' => [
        'class' => 'btn btn-lg btn-success',
    ],
    'tokenFunction' => new JsExpression('function(token) {
                alert("Here you should control your token.");
    }'),
    'openedFunction' => new JsExpression('function() {
                alert("Model opened");
    }'),
    'closedFunction' => new JsExpression('function() {
                alert("Model closed");
    }'),
]);
?>

StripeFormV2 - 将于 2019 年 9 月 14 日弃用

您可以使用新的 StripeForm.php。但我认为它不是很实用

use ruskid\stripe\StripeForm;

 $form = StripeForm::begin([
     'action' => Url::toRoute('payment/create'),
     'options' => [
         'autocomplete' => 'on',
         'data-secret' => 'payment intent client secret',
     ],
     'elementsOptions' => [
         'locale' => 'es' // stripe elements language
     ],
     'formEvents' => [
         'beforeSubmit' => 'what ever form events',
         'submit' => new JsExpression('function(event) {
              // you can define as you want
              // stripe.handleCardPayment()
              // stripe.createToken()
         }'),
     ]
 ]);

echo $form->cardInput([
    'hidePostalCode' => true,
    'style' => [
        'base' => [
            'color' => 'blue',
        ],
        'invalid' => [
            'color' => 'red',
            'iconColor' => 'red'
        ]
    ],
], [
    'change' => new JsExpression('function(event) {        
        if (event.error) {
            alert(event.error.message);
        } else {
           // input is good
        }
    }')
]);

echo $form->cardNumber();
echo $form->cardExpiry();
echo $form->cardCvc();

echo Html::submitButton('Submit');

StripeForm::end();