我遇到了一些麻烦。我正在使用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 PayPalAuth;
在我的app.php文件中。
添加后,我还需要将我的新类行更改为:
$cred = new PayPalAuthOAuthTokenCredential("AQkquBDf1zctJOWGKWUEtKXm6qVhueUEMvXO_-MCI4DQQ4-LWvkDLIN2fGsd","EL1tVxAjhT7cJimnz5-Nsx9k2reTKSVfErNQF-CmrwJgxRtylkGTKlU4RvrX", $sdkConfig);
请注意,我的所有控制器实际上都在app.php文件中。
实际上,您根本不需要向app.php添加任何内容。只需这样做:
use PayPalAuthOAuthTokenCredential.php;
class YourController{
public function myAction(){
// ...
$cred = new OAuthTokenCredential("AQkquB...","EL1tVx...", $sdkConfig);
// ...
}
}
您永远不应该仅仅为了使用类而修改app.php。