无法使用Omnipay提供SagePay密钥和密钥,“尝试调用名为setKey的未定义方法”

时间:2016-05-27 02:17:59

标签: symfony sagepay omnipay

我一直在将Omnipay库与我的Symfony2项目集成,我正在使用Server方法来处理事务。我有SagePay为我提供的钥匙和秘密。

但是,在我的代码中,我提供的内容如下:

    $gateway = OmniPay::create($gateway_server)
        ->setVendor(getenv('MYVENDOR'))
        ->setTestMode(true)
        ->setKey('MYKEY')
        ->setSecret('MYSECRET');

但是,我收到以下消息:

  

尝试调用类的名为“setKey”的未定义方法   “Omnipay \ SagePay \ ServerGateway”。

当我删除setKey方法时,我收到此错误:

  

尝试调用类名为“setSecret”的未定义方法   “Omnipay \ SagePay \ ServerGateway”。

在以下错误消息中删除这两个结果:

  

服务器错误响应[状态代码] 500 [原因短语]内部   服务器错误[url]   https://test.sagepay.com/gateway/service/vspserver-register.vsp

我目前还没有获得访问SagePay以检查错误日志的权限,但我正在努力这样的想法,因为我没有为数据提交提供密钥和秘密,导致错误。

知道为什么setKeysetSecret未定义,以及如何在服务器配置中将这些传递给SagePay?

3 个答案:

答案 0 :(得分:0)

也许你需要使用Dwolla/omnipay-dwolla version,而不是thephpleague / omnipay-sagepay版本。我看到了一些差异......

答案 1 :(得分:0)

假设您使用的是SagePay ServerGateway($ gateway_server == SagePay_Server),您显然不需要提供密钥和秘密。

您的网关初始化应如下所示:

$gateway = Omnipay::create('SagePay_Server')
    ->setVendor($api_vendor)
    ->setTestMode($testMode);

哪个问题没有回答您为什么会看到此错误的问题:

Server error response [status code] 500 [reason phrase] Internal Server Error [url] 

...但是我不相信它是由于没有提供API密钥和秘密。

这里有一个未合并的PR(有一些问题),其中包含使用SagePay的示例工作实现:

GDB web site

答案 2 :(得分:0)

Sage Pay Server或Sage Pay Direct都不需要密钥和秘密,因为在发送邮件时都知道您的IP地址(无论好坏)。 IP地址是身份验证。

较新的Sage Pay Pi使用密钥和密码进行身份验证,并且根本不查看IP地址。 OmniPay尚未支持此功能。虽然有处理该网关的独立包。

在另一个答案中提到了Dwolla包,这确实是一个关键和秘密。在这种情况下,第三方将自己置于您的网站和Sage Pay之间,而第三方需要密钥和密钥, Sage Pay。