Nadat een eerder probleem in php is opgelost met betrekking tot ons winkelmandje, komt een volgend probleem naar voren.

In de laatste stap van het bestellen moet je je bestelling bevestigen. Als je dit hebt gedaan komt de volgende regel in het scherm te staan:

Notice: Undefined property: ps_payment::$payment_code in /home/hoekst25/domains/kinderspulenzo.nl/public_html/administrator/components/com_virtuemart/classes/ps_checkout.php on line 1220

De bestelling wordt wel geplaatst en kan ik terug vinden in de backend van onze site.

Regel 1220 van ps_checkout.php vermeld:

<?php
if( $enable_processor == "Y" || stristr($_PAYMENT->payment_code, '_API' ) !== false ) {
?>

Kan iemand mij helpen de foutmelding op te lossen?

Met vriendelijke groet,

Rene Hoekstra

Voor de duidelijkheid de regels voor regel 1220:

<?php

// Export the order_id so the checkout complete page can get it
$d["order_id"] = $order_id;

/*
* Let the shipping module know which shipping method
* was selected. This way it can save any information
* it might need later to print a shipping label.
*/
if( is_callable( array($this->_SHIPPING, 'save_rate_info') )) {

}

// Now as everything else has been done, we can update
// the Order Status if the Payment Method is
// "Use Payment Processor", because:
// Payment Processors return false on any error
// Only completed payments return true!
$update_order = false;
if( $order_total == 0.00 ) { // code moved out of $_PAYMENT check as no payment will be needed when $order_total=0.0



} elseif (isset($_PAYMENT)) {
if( $enable_processor == "Y" || stristr($_PAYMENT->payment_code, '_API' ) !== false ) {
}

?>


Ik heb dit gevonden met google eerste 2 results.

Bug in VM 1.1.5 for SSL on PHP 5.3?
Error "Undefined Index: 3" trying to use the "Call for Pricing" feature.

Waar het op neer komt is dat sinds PHP 5.3 dit standaard in de .ini staat php_value error_reporting "E_ALL ^ E_NOTICE"

Wat dus inhoud dat hij die notice aangeeft. Een oplossing is om $payment_code = ""; te doen zodat het gewoon een lege string is. Dan ben je dus van die notice af. Let wel dit heb ik van een spaanse blog :D

En dat staat in deze map
www/administrator/components/com_virtuemart/classes/payment

En dan heet het de klasse ps_payment.

Zoek daar $payment_code op en maak er $payment_code = ""; van en de notice zou weg moeten zijn zonder dat je de meldingen onderdrukt mer error_reporting(0);
Deze code komt niet voor in ps_payment.
wel heb ik iets kunnen vinden in checkout.php
Heb je mijn eerdere oplossing al geprobeerd?
@Ozzie PHP

nog niet, zal ik zo direkt doen.
dan laat ik het weer weten
@Rene, dan moet je het er gewooon zo in plaatsen bij de ps_payment.
@Ozzie PHP

Jouw oplossing heeft helaas niet gewerkt.
@Rene,

Je kunt of de melding gewoon onderdrukken, of $payment_code declareren aan een lege string (= "").
kan je de foutmelding niet onderdrukken met @ ?
@Chris NVT

Als ik dit in ps_payment.php in plaats dan komt er een andere foutmelding. Geeft een foutmelding in ps_payment.php op de regel waar ik jouw oplossing heb geplaatst.

Ik ga eerst de error reporting weer aanzetten zodat mijn klanten dit niet meer zien.
@Rene, post hier de code van ps_payment class eens tussen code tags zodat we mee kunnen kijken.

De info die ik heb komt van de officiele site van virtuemart.

P.S. je zet error reporting uit als je klanten het niet zien :P error_reporting(0);

[size=xsmall]Toevoeging op 22/05/2012 12:14:09:[/size]

P.P.S. jij draait op versie 1.1.9, maar ze zijn al bij 2.0. Misschien overstappen naar een hogere variant?

virtuemart.net/downloads

Reageren