Sagepay官方PHP集成工具包的交易总额
使用协议3.0套件,似乎无法实际设置总交易金额。根据使用Sagepay官方PHP集成工具包的交易总额,php,opayo,Php,Opayo,使用协议3.0套件,似乎无法实际设置总交易金额。根据使用sagepaybarket->addItem(SagepayItem$item)方法添加的篮子中的项目,计算交易的总价值 基本设置如下所示: $config = SagepaySettings::getInstance($configs,true); $api = SagepayApiFactory::create('SERVER', $config); $basket = new SagepayBasket(); 您可以添加以下项目:
sagepaybarket->addItem(SagepayItem$item)
方法添加的篮子中的项目,计算交易的总价值
基本设置如下所示:
$config = SagepaySettings::getInstance($configs,true);
$api = SagepayApiFactory::create('SERVER', $config);
$basket = new SagepayBasket();
您可以添加以下项目:
$item = new SagepayItem();
$item->setDescription($oproduct['oc_item_title']);
$item->setUnitTaxAmount($oproduct['oc_item_vat']);
$item->setQuantity($oproduct['oc_qty']);
$item->setUnitNetAmount(($oproduct['oc_net_item_price']));
$basket->addItem($item);
您还可以添加装运信息:
$basket->setDeliveryNetAmount($order['shipping_cost_net']);
$basket->setDeliveryTaxAmount($order['shipping_cost_vat']);
然而,一揽子总额也取决于折扣。您可以使用以下方法向购物篮中添加折扣:
$discounts = [
'discount' => [
'fixed' => $order['voucher_discount'],
'description' => 'Voucher Discount'
]
];
$basket->setDiscounts($discounts);
但是,该数据在总计算中被忽略。这意味着传递给Sagepay的金额不正确
这可以通过查看basket.php
看到,它缺少对$basket->getdiscounters
方法的调用:
public function getAmount()
{
$amount = $this->getDeliveryGrossAmount();
foreach ($this->_items as $item)
{
$amount += $item->getTotalGrossAmount();
}
return $amount;
}
当您使用此数据致电Sagepay时,他们会正确识别行总数与通过发送此响应发送的金额之和不正确:
StatusDetail=3195:行项目金额明细不累计
正确地
唯一可行的办法是修改他们的库,这似乎是错误的,但我看不到其他办法。我在这里发布了他们的“支持论坛”,希望Sagepay的人会看到,或者其他使用过他们代码的开发人员会指出我的错误所在。简而言之,不要使用此工具包。根据Sagepay的说法,它不打算用于生产,因此,也无意抓住此类问题