Omnipay和Sagepay服务器

时间:2014-01-29 21:11:08

标签: omnipay

我正在与Omnipay and Sagepay Server挣扎。 Omnipay example代码不适用于Sagepay服务器,因为最终步骤由Sagepay而非客户端完成,因此无法访问会话数据。

交易已注册:

$response = $this->gateway->purchase($params)->send();

客户被重定向到Sagepay:

$response->redirect();

然后由Sagepay完成购买:

$gateway->completePurchase($params)->send();
$gateway->confirm(URL::to('checkout/complete'));

然而,没有设置$ params。我不确定在没有会话的情况下再次获取事务参数详细信息。或者如果我缓存$ params,Sagepay如何检索缓存。

非常感谢任何帮助!

由于

1 个答案:

答案 0 :(得分:2)

您需要在重定向客户之前将交易详细信息存储在数据库中。

首次创建事务时,请在调用id之前将amountcurrency$gateway->purchase()等存储在数据库中。您还应该为事务生成唯一的令牌/ slug。

然后,您可以使用returnUrl数组设置自定义$params。例如,您可以将返回URL设置为https://www.example.com/checkout/complete/abcdef(其中abcdef是当前事务的唯一标记)。

然后,当SagePay调用您的返回URL时,您可以检查有效令牌的URL,并加载事务详细信息。这样,您就可以使用原始事务中的正确$params重新生成amount数组。

有关设计结帐流程的详细信息,请参阅Payment handling between requests