【问题标题】:How do I load the Paypal SDK into Silex?如何将 Paypal SDK 加载到 Silex?
【发布时间】:2013-11-27 19:44:47
【问题描述】:

我遇到了一些麻烦。我正在使用 Silex,并且正在尝试将 Paypal SDK 加载到其中。我认为我的问题与我对 Silex 的理解有关,这就是我在这里发布它的原因。

我的设置

Paypal 的开发者网站says to add a few lines to the composer file(PHP 选项卡)。所以,我已经做到了。我的新作曲家文件看起来像这样(最后四个条目是 Paypal 建议的):

{
    "require": {
        "silex/silex": "1.0.*@dev",
        "symfony/browser-kit": "2.1.*",
        "symfony/console": "2.1.*",
        "symfony/css-selector": "2.1.*",
        "symfony/dom-crawler": "2.1.*",
        "symfony/filesystem": "2.1.*",
        "symfony/finder": "2.1.*",
        "symfony/form": "2.1.*",
        "symfony/locale": "2.1.*",
        "symfony/process": "2.1.*",
        "symfony/security": "2.1.*",
        "symfony/serializer": "2.1.*",
        "symfony/translation": "2.1.*",
        "symfony/validator": "2.1.*",
        "symfony/monolog-bridge": "2.1.*",
        "symfony/twig-bridge": "2.1.*",
        "monolog/monolog": ">=1.0.0,<1.2-dev",
        "twig/twig": ">=1.2.0,<2.0-dev",
        "doctrine/dbal": ">=2.2.0,<2.4.0-dev",
        "swiftmailer/swiftmailer": "4.1.*",
        "php": ">=5.3.0",
        "ext-curl": "*",
        "ext-json": "*",
        "paypal/rest-api-sdk-php" : "0.7.*"
    }
}

然后,我运行 composer update,它更新了所有内容。我检查了供应商文件夹,并且已经创建了一个 paypal 文件夹,并且看起来不错。

问题

不幸的是,即使我已经完成了上述步骤,它仍然无法正常工作。我正在关注beginners steps outlined on Paypal's website,似乎找不到其中一个 Paypal 类。

导致错误的行直接取自上面链接的“初学者步骤”页面。为了快速参考,我也会在下面提供:

$cred = new OAuthTokenCredential("AQkquBDf1zctJOWGKWUEtKXm6qVhueUEMvXO_-MCI4DQQ4-LWvkDLIN2fGsd","EL1tVxAjhT7cJimnz5-Nsx9k2reTKSVfErNQF-CmrwJgxRtylkGTKlU4RvrX", $sdkConfig);

不幸的是,该行导致错误提示:

Fatal error: Class 'OAuthTokenCredential' not found in ...

总结...

问题似乎是 Silex 没有加载(或提供)类 OAuthTokenCredential。我该怎么办?

【问题讨论】:

  • 您是否将paypal目录添加到自动加载?
  • 您是否添加了“使用”语句以将类包含在您正在使用的文件中?我不确定该类的命名空间是什么。查找命名空间并添加您的 use 语句。类似use Paypal\Name\Space\OAuthTokenCredential.php
  • @LaurynasMališauskas 嗯,我的印象是 composer 会处理所有自动加载的东西。我所做的只是我在帖子中列出的内容。我错过了什么吗?
  • @user2930475,我如何确定命名空间是什么?
  • 忽略我的评论。你是对的 :) 你可以通过打开需要的类文件找到你需要的命名空间

标签: php symfony paypal paypal-sandbox silex


【解决方案1】:

感谢 Laurynas Mališauskasuser2930475 的回答(在我的帖子的 cmets 中)。

看来我忘了写一行,例如:

use PayPal\Auth;

在我的 app.php 文件中。

添加后,我还需要将我的新类行更改为:

$cred = new PayPal\Auth\OAuthTokenCredential("AQkquBDf1zctJOWGKWUEtKXm6qVhueUEMvXO_-MCI4DQQ4-LWvkDLIN2fGsd","EL1tVxAjhT7cJimnz5-Nsx9k2reTKSVfErNQF-CmrwJgxRtylkGTKlU4RvrX", $sdkConfig);

请注意,我的所有控制器实际上都在 app.php 文件中。

【讨论】:

  • +1 谢谢你,这对我在同样的情况下跑步帮助很大
【解决方案2】:

实际上,您根本不需要向 app.php 添加任何内容。只需这样做:

use PayPal\Auth\OAuthTokenCredential.php;

class YourController{
    public function myAction(){
        // ...
        $cred = new OAuthTokenCredential("AQkquB...","EL1tVx...", $sdkConfig);
        // ...
    }
}

你不应该仅仅为了使用一个类而修改 app.php。

【讨论】:

  • 实际上,在我的情况下,由于我的应用程序很小,我正在使用 Silex 的可选“app.php 文件中的所有内容”微框架方法。我没有使用任何外部控制器。但是如果我有外部控制器,你的方法肯定会更有意义。
猜你喜欢
  • 2014-05-11
  • 2019-11-14
  • 2016-02-16
  • 2013-06-08
  • 1970-01-01
  • 2012-01-14
  • 2013-09-27
  • 2013-04-03
  • 2014-08-20
相关资源
最近更新 更多