我一直在将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以检查错误日志的权限,但我正在努力这样的想法,因为我没有为数据提交提供密钥和秘密,导致错误。
知道为什么setKey
和setSecret
未定义,以及如何在服务器配置中将这些传递给SagePay?
答案 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的示例工作实现:
答案 2 :(得分:0)
Sage Pay Server或Sage Pay Direct都不需要密钥和秘密,因为在发送邮件时都知道您的IP地址(无论好坏)。 IP地址是身份验证。
较新的Sage Pay Pi使用密钥和密码进行身份验证,并且根本不查看IP地址。 OmniPay尚未支持此功能。虽然有处理该网关的独立包。
在另一个答案中提到了Dwolla包,这确实是一个关键和秘密。在这种情况下,第三方将自己置于您的网站和Sage Pay之间,而第三方需要密钥和密钥,不 Sage Pay。