Forum Internet Service Backes

Bitte loggen sie sich ein oder registrieren sie sich.

Einloggen mit Benutzername, Passwort und Sitzungslänge
Erweiterte Suche  

Neuigkeiten:

Autor Thema: Paypal Fehlermeldung: Der Betrag Im Link Ist Falsch Formatiert  (Gelesen 5110 mal)

Richard

  • Gast
Paypal Fehlermeldung: Der Betrag Im Link Ist Falsch Formatiert
« am: 22 September, 2006, 08:04:53 Vormittag »

Hallo,

habe in meinem Shop (XT-Commerce 3.0.4 SP1) Paypal eingerichtet (installiert). Funktioniert soweit auch ganz gut. Nur bei Bestellungen >= 1000 Euro bekommt man von Paypal eine Fehlermeldung:


Zitat
Fehler entdeckt

Der Link, über den Sie das PayPal-System aufgerufen haben, enthält einen falsch formatierten Betrag für den Artikel.

und verweigert mir den weiteren Ablauf indem er mich zu Shop zurückverweist.

Bei der Bearbeitung des Zahlungsmoduls im Admin finde ich keine Möglichkeit diesen Betrag zu formatieren.

Ich habe mir mal diesen Punkt aus dem Quellcode rausgezogen
  <input name="amount" value="1289.33" type="hidden">
und mit verschiedenen Zahlenformaten experimentiert. Leider ohne Erfolg.

Hat jemand einen Tip ?


 :(

Inwischen habe ich die Fehlerquelle im Quellcode der dynamischen HTML-Seite gefunden. Es ist nicht das Zahlenformat des Preises für den Artikel sondern die greifende Versandkostenfreiheit.

  <input name="amount" value="1289.33" type="hidden">
  <input name="shipping" value="" type="hidden"> <!-- Funktioniert -->
oder

  <input name="amount" value="934.3" type="hidden">
  <input name="shipping" value="9.6" type="hidden"> <!-- Funktioniert -->

Bei greifender VersandkostenFreiheit wird aber folgender Code generiert:

  <input name="amount" value="934.3" type="hidden">
  <input name="shipping" value="Array" type="hidden"> <!-- Hier liegt der Fehler -->

und verursacht damit meine Fehlermeldung.

Dieser Code wird in der Smartyvariablen $MODULE_BUTTONS von checkout_confirmation.php in checkout_confirmation.htm generiert.

Wie könnte ich das abändern ?

  :-\

beste Grüße

Richard
« Letzte Änderung: 01 Oktober, 2006, 11:49:33 Vormittag von Richard »
Gespeichert

Richard

  • Gast
Re: Paypal Fehlermeldung: Der Betrag Im Link Ist Falsch Formatiert
« Antwort #1 am: 01 Oktober, 2006, 11:47:09 Vormittag »

Hallo,

da mir bislang niemand helfen konnte, habe ich mich mal im PHP-Code lang gehangelt um bis zur Fehlerquelle vorzustoßen.

Ausgangspunkt: Datei checkout_confirmation.php

.
.
.
$payment_button = '';
if (is_array($payment_modules->modules)) {
$payment_button .= $payment_modules->process_button();
}
$smarty->assign('MODULE_BUTTONS', $payment_button);
.
.
.

über Smarty wird der Variablen "MODULE_BUTTONS" die PHP-Variable "$payment_button" zugewiesen, die in den vorherigen Zeilen gesetzt wird.

Die Variabele "$payment_button" wird im Module "$payment_modules" -> in der Fuktion->process_button()" erzeugt.

D.h. im Verzeichnis includes/modules/payment in der Datei paypal.php.

.
.
.
function process_button() {
global $order, $xtPrice;

if (MODULE_PAYMENT_PAYPAL_CURRENCY == 'Selected Currency') {
$my_currency = $_SESSION['currency'];
} else {
$my_currency = substr(MODULE_PAYMENT_PAYPAL_CURRENCY, 5);
}
if (!in_array($my_currency, array ('CAD', 'EUR', 'GBP', 'JPY', 'USD'))) {
$my_currency = 'EUR';
}

if ($_SESSION['customers_status']['customers_status_show_price_tax'] == 0 && $_SESSION['customers_status']['customers_status_add_tax_ot'] == 1) {
$total = $order->info['total'] + $order->info['tax'];
} else {
$total = $order->info['total'];
}
if ($_SESSION['currency'] == $my_currency) {
$amount = round($total, $xtPrice->get_decimal_places($my_currency));
$shipping = round($order->info['shipping_cost'], $xtPrice->get_decimal_places($my_currency));
} else {
$amount = round($xtPrice->xtcCalculateCurrEx($total, $my_currency), $xtPrice->get_decimal_places($my_currency));
$shipping = round($xtPrice->xtcCalculateCurrEx($order->info['shipping_cost'], $my_currency), $xtPrice->get_decimal_places($my_currency));
}
$process_button_string = xtc_draw_hidden_field('cmd', '_xclick').xtc_draw_hidden_field('business', MODULE_PAYMENT_PAYPAL_ID).xtc_draw_hidden_field('item_name', STORE_NAME).xtc_draw_hidden_field('amount', $amount - $shipping).xtc_draw_hidden_field('shipping', $shipping).xtc_draw_hidden_field('currency_code', $my_currency).xtc_draw_hidden_field('return', xtc_href_link(FILENAME_CHECKOUT_PROCESS, '', 'SSL')).xtc_draw_hidden_field('cancel_return', xtc_href_link(FILENAME_CHECKOUT_PAYMENT, '', 'SSL'));

return $process_button_string;
}
.
.
.

Hier ist die Zeile:

$process_button_string = xtc_draw_hidden_field('cmd', '_xclick').xtc_draw_hidden_field('business', MODULE_PAYMENT_PAYPAL_ID).xtc_draw_hidden_field('item_name', STORE_NAME).xtc_draw_hidden_field('amount', $amount - $shipping).xtc_draw_hidden_field('shipping', $shipping).xtc_draw_hidden_field('currency_code', $my_currency).xtc_draw_hidden_field('return', xtc_href_link(FILENAME_CHECKOUT_PROCESS, '', 'SSL')).xtc_draw_hidden_field('cancel_return', xtc_href_link(FILENAME_CHECKOUT_PAYMENT, '', 'SSL'));
relevant.

Ich habe folgende Änderung vorgenommen:

...xtc_draw_hidden_field('shipping', $shipping)...

ändern in

...xtc_draw_hidden_field('shipping', "".$shipping)...

Alsdann funktioniert die Sache.

 :D

beste Grüße

Richard
« Letzte Änderung: 01 Oktober, 2006, 11:48:53 Vormittag von Richard »
Gespeichert