View Issue Details

IDProjectCategoryView StatusLast Update
0005435OXID eShop (all versions)1.03. Basket, checkout processpublic2014-09-29 09:08
Reporterd3 
PriorityhighSeveritymajorReproducibilityalways
Status resolvedResolutionfixed 
Product Version4.7.7 / 5.0.7 
Target Version4.7.14 / 5.0.14Fixed in Version4.7.14 / 5.0.14 
Summary0005435: Trusted Shops Excellence mandatory parameter is empty
DescriptionSince 4.6.0, the ordernr is set on a late position in oxorder::finalizeOrder()

So the ordernr is also not present during oxorder::_executeTsProtection()

I cannot confirm the issue because I dont have a TSExcellence sandbox-account.
But in the following doumentation, the ordernr (shopOrderID) is marked as mandatory on Page 13:
http://www.trustedshops.com/tsdocument/INT_MANUAL_EXCELLENCE_CHE_en.pdf

So I suppose that the TS-SOAP-Service decline all protection requests in whole oxid versions 4.6.x, 4.7.x and 5.0.x!




Steps To ReproducePre-conditions:
1. TSExcellence sandbox-account is activated in Admin
2. Debugger is started and breakpoints added in "executeTsProtection" function

1. Add item to the basket
2. Go to basket and proceed to the 3rd step with or without registration.
4. Check "Buyer protection.." and proceed to the 4th step.
5. Press [Order now] and analyse the $aValues of the "executeTsProtection" function
Additional InformationHere is a vardump of the $aValues in _executeTsProtection()
shopOrderID -> NULL

array (
  'tsProductId' => xxxxx,
  'amount' => 44.7,
  'currency' => 'EUR',
  'buyerEmail' => '[email protected]',
  'shopCustomerID' => 'b80732fd73159de820350b9f3f4c1a6e',
  'shopOrderID' => NULL,
  'orderDate' => '2013-09-24 19:11:33',
)
TagsBasket, Order, Trusted Shops
ThemeAzure, Mobile
BrowserAll
PHP Versionany
MySQL Versionany

Activities

aurimas.gladutis

2014-09-29 09:08

reporter   ~0010191

In oxorder::finalizeOrder() method there is a place where _executeTsProtection() is called. This should go after oxordernr is assigned to order like this:

if (!$this->oxorder__oxordernr->value) {
    $this->_setNumber();
} else {
    oxNew('oxCounter')->update($this->_getCounterIdent(), $this->oxorder__oxordernr->value);
}

// executing TS protection
if (!$blRecalculatingOrder && $oBasket->getTsProductId()) {
    $blRet = $this->_executeTsProtection($oBasket);
    if ($blRet !== true) {
        return $blRet;
    }
}

// deleting remark info only when order is finished
oxRegistry::getSession()->deleteVariable('ordrem');
oxRegistry::getSession()->deleteVariable('stsprotection');