如何将Paypal SDK加载到Silex中


How do I load the Paypal SDK into Silex?

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

我的设置

Paypal的开发者网站说要在composer文件(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更新,它更新了所有内容。我检查了供应商文件夹,创建了一个贝宝文件夹,看起来很好用。

问题

不幸的是,即使我已经完成了上述步骤,它仍然不起作用。我正在遵循贝宝网站上概述的初学者步骤,似乎找不到贝宝的一个类。

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

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

不幸的是,这条线导致了一个错误,上面写着:

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

总结

问题似乎是Silex没有加载或使类OAuthTokenCredential可用。我该怎么办?

感谢Laurynas Mališauskas和user2930475的回答(在我的帖子评论中)。

看起来我忽略了放一行,比如:

use PayPal'Auth;

在我的app.php文件中。

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

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

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

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

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

您永远不应该仅仅为了使用类而修改app.php。