Sagepay官方PHP集成工具包的交易总额

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(); 您可以添加以下项目:

使用协议3.0套件,似乎无法实际设置总交易金额。根据使用
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的说法,它不打算用于生产,因此,也无意抓住此类问题