View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0004693 | OXID eShop (all versions) | 1.03. Basket, checkout process | public | 2012-11-07 20:55 | 2023-11-16 16:48 |
Reporter | finnegan | Assigned To | |||
Priority | normal | Severity | minor | Reproducibility | always |
Status | confirmed | Resolution | open | ||
Platform | Linux | ||||
Product Version | 4.6.0 revision 44406 | ||||
Summary | 0004693: Wrong List of payment methods offered in Checkout - Bug 0002934 was closed but error persists | ||||
Description | Bug 0002934 was closed due to non-reproducabilty. Bug: The payment methods offered during Checkout depend on Delivery Address Country. This is WRONG - the country of the billing address should be predominant for payment choices. Ex: Shop in Germany, Customer has a billing address in Austria but enters a delivery address in Germany. He is offered bank draft as a payment method which is wrong, since this works only with German customers. We have the same problem (EE 4.3.2), so I investigated the code of Version 4.6.0. The list of possible payment methods is generated in core/oxpaymentlist. In this class the method public function getCountryId( $oUser ) is called for building SQL of the payment methods list. In this method you call $oUser->getActiveCountry(); BUT in oxuser the "active country" is the one of the delivery address! 4.6.0: public function getActiveCountry() 00735 { 00736 $sDeliveryCountry = ''; 00737 $soxAddressId = oxSession::getVar( 'deladrid' ); 00738 if ( $soxAddressId ) { 00739 $oDelAddress = oxNew( 'oxaddress' ); 00740 $oDelAddress->load( $soxAddressId ); 00741 $sDeliveryCountry = $oDelAddress->oxaddress__oxcountryid->value; ..... | ||||
Steps To Reproduce | Steps to reproduce in Demoshop: 1. put articles in cart, login and go to checkout. 2. set alternate delivery-address with this country: USA 3. the billing-country should be Germany 4. go to next step (payment) 5. As you can see, there are no payments available! | ||||
Additional Information | Although we have the problem with EE 4.3.2 the relevant code has not changed up to 4.6.0, as far as I can see. It is unclear for me why you could not reproduce this behaviour. Maybe this has something to do with automatic usergroup adding of the current user? As far as I understand the code related user groups also work as a filter for selecting the possible payment methods during checkout. Possible bugfix: oxpaymentlist::getCountryId() ... if($oUser) { //$sCountryId = $oUser->getActiveCountry(); $sCountryId = $oUser->oxuser__oxcountryid->value; } ... | ||||
Tags | Delivery, Payment | ||||
Attached Files | |||||
Theme | All | ||||
Browser | All | ||||
PHP Version | Not defined | ||||
Database Version | Not defined | ||||
has duplicate | 0002934 | resolved | svetlana | OXID eShop (all versions) | Payment rules aren't correct if billing & delivery countries differ. |
has duplicate | 0005248 | closed | svetlana | OXID eShop (all versions) | Delivery address is used to display payment methods - should be payment address |
related to | 0006097 | closed | florian.auer | module PayPal | Visibility of paypal-paying-method should depend on billing-country, not alternate delivery-country!!! |
|
Reminder sent to: finnegan Hi, unfortunately bu we still can not reproduce it. Could you please send us more information about how you reproduce it? As i understand for reproducing it we need: 1. all shipping cost rules are assigned to Germany and Austria. 2. payment method for example "Invoice" is assigned to Germany. 3. User with billing address Austria and shipping address Germany. And user can not see payment method "Invoice" |
|
I checked again with your PE DEMO-Shop 4.7 and I WAS able to reproduce the problem after I played around with adding and removing user groups from the payment definition "Bankeinzug/Lastschrift" in Oxid admin. So maybe the problem is related to specific user groups in the payment definition. In our shops we do _not_ make use of user groups right now, so we added ALL groups to all payment definitions. BUT if I exclude a country (like Austria) from a payments definition this exclusion should supersede all user group definitions. And as I indicated in my bug report just looking at the code should make the problem clear. Please check the attached screen shots from your demo shop I have taken some minutes ago. |
|
The priority of this bug should be high! It has nothing to do with user-groups. Steps to reproduce in Demoshop: 1. put articles in cart, login and go to checkout. 2. set alternate delivery-address with this country: USA 3. the billing-country should be Germany 4. go to next step (payment) 5. As you can see, there are no payments available! Reason: the delivery-address-country decides which payments are shown. And this is wrong. It should always be the billing-country - no matter if there is an alternate delivery-address! (Without the alternate delivery-address you will get payments correspoding to Germany.) Possible bugfix: oxpaymentlist::getCountryId() ... if($oUser) { //$sCountryId = $oUser->getActiveCountry(); $sCountryId = $oUser->oxuser__oxcountryid->value; } ... |
|
The case is a bit more complex, because there are payment methods where the delivery country is correct (every kind of payment at delivery time) and those cases where the payment is done independently. I would agree though, that in most cases the payment is handled by the instance with the billing address (hence it is called like that) |