Yii2:如何简单地在控制器中包含和使用 Stripe php 库?

Yii2: How to simply include and use in controllers the Stripe php lib?

到目前为止,我使用的是将库放在供应商文件夹下的作曲家。 它是这样的:vendor\stripe\stripe-php\lib

从那里我有点迷失了我应该如何声明命名空间(我猜在组件下面的 config/web.php 中)。 Stripe.php class文件中声明的命名空间是Stripe。

在控制器中,我想像 Stripe 网站上的示例中那样使用它。

```

// Create the charge on Stripe's servers - this will charge the user's card
    try {
        $charge = \StripeLib\Charge::create(array(
          "amount" => 1000, // amount in cents, again
          "currency" => "eur",
          "source" => $token,
          "description" => "payinguser@example.com")
        );
    } catch(\StripeLib\Error\Card $e) {
      // The card has been declined
        echo "The card has been declined. Please, try again.";
    }

```

好的,事情就是这样。使用 composer 包含 lib 后,您可以在 vendor/stripe/stripe-php/lib/stripe 下找到条带 class。所以,在我的控制器中我做了这个

use app\stripe\stripe-php\lib\Stripe;

但由于连字符的原因,它不起作用,所以我不得不将文件夹 stripe-php 重命名为 stripephp(我知道这根本不好),因为它不会我猜不会用作曲家更新。

最后,我在控制器的开头有这个

use app\stripe\stripephp\lib\Stripe;

然后在我的行动中我使用这样的东西

\Stripe\Stripe::setApiKey(Yii::$app->stripe->privateKey);
        //we got the token, we must then charge the customer
        // Get the credit card details submitted by the form
        $token = $_POST['stripeToken'];


        // Create the charge on Stripe's servers - this will charge the user's card
        try {
            $charge = \Stripe\Charge::create(array(
              "amount" => 1000, // amount in cents, again
              ...

不要忘记将 private/public 密钥放入配置文件中。

如果您有更好的解决方案(更优雅),不客气。

我为此苦苦挣扎。我将 Stripe 库添加到我的作曲家文件中

"stripe/stripe-php" : "2.*"

创造了 /vendor/stripe/stripe-php

stripe 库仅使用 Stripe 作为命名空间。然后在我的控制器中我输入

use Stripe\Stripe;  
use Stripe\Charge;

然后我就可以做

Stripe::setApiKey(Yii::$app->params['sk_test'])

try {
    $charge = Charge::create(array(
      "amount" => round(100*100,0), // amount in cents, again
      "currency" => "usd",
      "card" => $token,
      "description" => 'description',
      ));
     $paid = true;                

} // end try

到目前为止一切顺利...