View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0005435 | OXID eShop (all versions) | 1.03. Basket, checkout process | public | 2013-09-24 19:44 | 2014-09-29 09:08 |
Reporter | d3 | Assigned To | |||
Priority | high | Severity | major | Reproducibility | always |
Status | resolved | Resolution | fixed | ||
Product Version | 4.7.7 / 5.0.7 | ||||
Target Version | 4.7.14 / 5.0.14 | Fixed in Version | 4.7.14 / 5.0.14 | ||
Summary | 0005435: Trusted Shops Excellence mandatory parameter is empty | ||||
Description | Since 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 Reproduce | Pre-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 Information | Here 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', ) | ||||
Tags | Basket, Order, Trusted Shops | ||||
Theme | Azure, Mobile | ||||
Browser | All | ||||
PHP Version | any | ||||
Database Version | any | ||||
|
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'); |