Seite 1 von 1

Verfasst: 05.12.2008, 12:29
von 1274d3dd3
hi,

ich nutze die 1.4er version von myoos.

bei manchen bestellungen mit paypal bezahlung wird zwar das geld gutgeschrieben, aber die bestellung wird weder per email versendet, noch im adminbereich aufgeführt.
verschiedene testbestellungen funktionierten einwandfrei aber hin und wieder kommt es trotzdem vor.
woran könnte das liegen?
kann man irgendwie die bestellung schon vor dem bezahlen abschliessen?
versand ist ja eh erst nach geldeingang.

viele grüße,
kutte128

Verfasst: 05.12.2008, 17:36
von r23
Hallo,
kann man irgendwie die bestellung schon vor dem bezahlen abschliessen?
Man kann die Reihenfolge der Aktionen in der Payment Klasse ändern.

hier steht

function before_process() {
return false;
}

oder
function after_process() {
return false;
}

zur Verfügung.


Ich verwende in der 1.7.x

<div class='codetop'>CODE[/align]<div class='codemain' style='height:200px;white-space:pre;overflow:auto'> function after_process() {
global $oOrder, $oCurrencies;

$my_currency = 'EUR';

$aFilename = oos_get_filename();
$aModules = oos_get_modules();

$sAmount = number_format(($oOrder->info['total] - $oOrder->info['shipping_cost]) * $oCurrencies->get_value($my_currency), $oCurrencies->get_decimal_places($my_currency));
$sShipping = number_format($oOrder->info['shipping_cost] * $oCurrencies->get_value($my_currency), $oCurrencies->get_decimal_places($my_currency));
$sReturn = oos_href_link($aModules['checkout], $aFilename['checkout_success], '', 'SSL');
$sCancel_return = oos_href_link($aModules['checkout], $aFilename['checkout_payment], '', 'SSL');

$sLink = 'https://www.paypal.com/de/cgi-bin/websc ... &business=' . MODULE_PAYMENT_PAYPAL_ID .
'&item_name=' . STORE_NAME .
'&amount=' . urlencode($sAmount) .
'&shipping=' . urlencode($sShipping) .
'&return=' . urlencode($sReturn) .
'&cancel_return=' . urlencode($sCancel_return) .
'&currency_code=EUR';


oos_redirect($sLink);

return false;
}[/align]

D.h. hier werden aus den $_Post Daten unter
function process_button() {
}

einfach $_GET Daten gemacht.

Nachteil: Sollte der Kunde bei PayPal die Zahlung abbrechen ist im Shop die
Bestellung als "bezahlt" aufgenommen worden.

In einer etwas aufwendigen Methode speichert ein Modul den Warenkorb
für den Kunden und leitet die Komunikation zwischen PayPal und Kunden per
Curl Sitzung weiter.


Sollten Probleme bei der Änderung der PayPal Klasse auftreten sind wir gerne
bereit für 45 euro + mwst) die Klasse zu ändern...


cu

ralf

Verfasst: 01.03.2009, 21:39
von wolfschw
habe das gleiche Problem. O.g habe ich versucht, aber ohne Erfolg, das Problem müssten doch alle haben, kann wer helfen ?

Danke
wolfschw

Verfasst: 02.03.2009, 03:22
von r23
Hallo,
O.g habe ich versucht, aber ohne Erfolg
Welche Änderungen an der ~/shop/includes/modules/payment/paypal.php
wurden gemacht ... bei welcher MyOOS Version?


cu

ralf

Verfasst: 15.02.2010, 20:55
von sedata
hallo,



habe das gleiche problem.

wir setzen meiner meinung nach die version 1.6 ein.

wie kann ich die bestellung "abspeichern" BEVOR auf die paypal-seite umgeleitet wird?

bitte um genaue infos, bin anfänger.



gruss

stefan

Verfasst: 15.02.2010, 23:36
von r23
Hallo,

> wir setzen meiner meinung nach die version 1.6 ein

damit wir helfen können, benötigen wir die genaue Version.

Bitte einmal aus der
~/shop/includes/oos_version.php

die Werte von den Konstanten OOS_VERSION_MAJOR, OOS_VERSION_MINOR und OOS_VERSION_MICRO

Code: Alles auswählen

 /**
  * Major software version
  */
  define('OOS_VERSION_MAJOR', '1');

 /**
  * Minor software version
  */
  define('OOS_VERSION_MINOR', '6');

 /**
  * Micro software version
  */
  define('OOS_VERSION_MICRO', '14');
mitteilen. (einfach ins Forum posten)

cu

ralf

Verfasst: 16.02.2010, 08:58
von sedata
hallo, danke für deine schnelle antwort:



/**
* Major software version
*/
define('OOS_VERSION_MAJOR', '1');

/**
* Minor software version
*/
define('OOS_VERSION_MINOR', '6');

/**
* Micro software version
*/
define('OOS_VERSION_MICRO', '10');



gruss

Verfasst: 16.02.2010, 15:24
von r23
hallo,

die Datei bitte als paypal.php nach

~/shop/includes/modules/payment kopieren.

http://www.oos-shop.de/service/oos16x/paypal.txt

Das script ist ungeprüft. Evtl. Fehlermeldungen hier bitte veröffetnlichen.

Beste Grüße

ralf

Verfasst: 16.02.2010, 17:27
von sedata
hallo,

das klappt schonmal super.

jetzt möchte ich als ( hoffentlich) letzte sache statt dem shopnamen auch noch die bestellnummer drinnen haben:



also statt

&item_name= Pop Art von ' . STORE_NAME .


sowas wie

&item_name= Pop Art von ' . STORE_NAME . 'Bestellnr.: ' . &order_id



DANKE

Verfasst: 16.02.2010, 18:49
von r23
Hallo,

der Shop speichert in

~/shop/includes/pages/checkout/process.php

die Bestellung.

in Zeile 112

Code: Alles auswählen

  $insert_id = $db->Insert_ID();
steht nun die Betellnummer in der $insert_id

in Zeile 383

Code: Alles auswählen

 $payment_modules->after_process();
gibt man die Bestellummer "weiter"

Code: Alles auswählen

 $payment_modules->after_process($insert_id);
im Script selbst, kann man is_numeric($variable) überprüfen, ob eine zahl
übergeben wurde.

Hoffe dies hilft weiter

Ralf

Verfasst: 16.02.2010, 20:44
von sedata
hallo, leider geht es noch nicht ganz.



ich habe jetzt in der process.php folgenden eintrag:

// load the after_process function from the payment modules
$payment_modules->after_process($insert_id);

$_SESSION['cart]->reset(true);



in der paypal.php:

function after_process($insert_id) {
global $oOrder, $oCurrencies;

$my_currency = 'EUR';

$aFilename = oos_get_filename();
$aModules = oos_get_modules();

$sAmount = number_format(($oOrder->info['total] - $oOrder->info['shipping_cost]) * $oCurrencies->get_value($my_currency), $oCurrencies->get_decimal_places($my_currency));
$sShipping = number_format($oOrder->info['shipping_cost] * $oCurrencies->get_value($my_currency), $oCurrencies->get_decimal_places($my_currency));
$sReturn = oos_link($aModules['checkout], $aFilename['checkout_success], '', 'SSL');
$sCancel_return = oos_link($aModules['checkout], $aFilename['checkout_payment], '', 'SSL');

$sLink = 'https://www.paypal.com/de/cgi-bin/websc ... &business=' . MODULE_PAYMENT_PAYPAL_ID .
'&item_name= BestellNr.: ' . urlencode($insert_id) .





leider bekomme ich weder die bestellnr noch den betrag/versandkosten.

was mache ich da falsch? muss ich noch woanders was eintragen?



gruss

Verfasst: 16.02.2010, 20:48
von sedata
habe es hinbekommen, musste noch in der class_payment.php

die funktionen ändern



leider geht das aber mit der betragsübergabe noch nicht

was ist da noch falsch?



gruss

Verfasst: 17.02.2010, 01:42
von r23
[quote='sedata',index.php?page=Thread&postID=1736#post1736]habe es hinbekommen, musste noch in der class_payment.php

die funktionen ändern
[/quote]

sorry...

dann könnte man

Code: Alles auswählen

function after_process() {
      global $insert_id,
verwenden.


leider geht das aber mit der betragsübergabe noch nicht
grummel.

bei der 1.6.10 ist das Objekt noch $order

Code: Alles auswählen

    function after_process() {
      global $insert_id, $order, $oCurrencies;

      $my_currency = 'EUR';

      $aFilename = oos_get_filename();
      $aModules = oos_get_modules();

      $sAmount = number_format(($order->info['total] - $order->info['shipping_cost]) * $oCurrencies->get_value($my_currency), $oCurrencies->get_decimal_places($my_currency));
      $sShipping = number_format($order->info['shipping_cost] * $oCurrencies->get_value($my_currency), $oCurrencies->get_decimal_places($my_currency));
      $sReturn =  oos_link($aModules['checkout], $aFilename['checkout_success], '', 'SSL');
      $sCancel_return = oos_link($aModules['checkout], $aFilename['checkout_payment], '', 'SSL');

      $sLink = 'https://www.paypal.com/de/cgi-bin/webscr?cmd=_xclick&business=' . MODULE_PAYMENT_PAYPAL_ID .
Hoffe deies hilft weiter?

Ralf

Verfasst: 17.02.2010, 08:58
von sedata
hallo, VIELEN DANK für die hilfe,

jetzt läuft alles so wie es sollte.

die order id und der betrag wird richtig übergeben.



gruss