Heim  >  Artikel  >  Backend-Entwicklung  >  zen_cart implementiert die Methode zum Generieren von Bestellungen vor der Zahlung

zen_cart implementiert die Methode zum Generieren von Bestellungen vor der Zahlung

不言
不言Original
2018-06-07 17:12:322014Durchsuche

In diesem Artikel wird hauptsächlich die Methode von zen_cart zum Generieren von Bestellungen vor der Zahlung vorgestellt. Er analysiert detailliert die spezifischen Schritte und zugehörigen Implementierungstechniken von zen_cart zum Generieren von Bestellungen vor der Zahlung in Form von Beispielen

Das Beispiel beschreibt die Methode von zen_cart, Bestellungen vor der Zahlung zu generieren. Teilen Sie es als Referenz mit allen. Die Details lauten wie folgt:

Zusätzlich zu Paypal können Kunden Bestellungen aufgeben, indem sie die Seite index.php?main_page=checkout_confirmation über andere Zahlungsmethoden aufrufen.
Aber! ! Nur Paypal Es ist ein bisschen anders. Bestellungen können nur aufgegeben werden, nachdem man von der offiziellen Website [paypal.com] zurückgekehrt ist und die Seite „checkout_process“ aufgerufen hat. Aber es passieren oft Unfälle: Das Netzwerk funktioniert nicht reibungslos . Oder der Kunde ist nicht in der Lage, die Seite zu schließen, bevor er zurückkehrt

Dann kann unser Website-Backend nicht sehen, welches Produkt der Kunde gekauft hat (obwohl Sie im Paypal-Backend sehen können, wer es gekauft hat). aber es gibt wirklich keine Möglichkeit zu wissen, wer es gekauft hat.) Was haben Sie gekauft? checkout_confirmation.php Seite!!!

Die Methode ist: Kopieren Sie den Code

im letzten Teil dieser Datei


Der Code lautet wie folgt:

echo TITLE_CONTINUE_CHECKOUT_PROCEDURE . &#39;<br />&#39; . TEXT_CONTINUE_CHECKOUT_PROCEDURE;

Fügen Sie den Code nach:

// create the order record 防漏单 
if ($_SESSION[&#39;payment&#39;] == &#39;paypal&#39;) { 
$insert_id = $order->create($order_totals, 2);
$zco_notifier->notify(&#39;NOTIFY_CHECKOUT_PROCESS_AFTER_ORDER_CREATE&#39;);
$payment_modules->after_order_create($insert_id);
$zco_notifier->notify(&#39;NOTIFY_CHECKOUT_PROCESS_AFTER_PAYMENT_MODULES_AFTER_ORDER_CREATE&#39;);
// store the product info to the order
$order->create_add_products($insert_id);
$_SESSION[&#39;order_number_created&#39;] = $insert_id;

Um andere Zahlungsmethoden nicht zu beeinträchtigen, wurde der Code geändert. Es wird nur die PayPal-Zahlung ausgeführt Der Code, der Bestellungen generiert. Nachdem Sie diesen Abschnitt hinzugefügt haben, müssen Sie sich keine Sorgen mehr über fehlende Bestellungen machen.

Wenn Sie einen perfekteren Ansatz benötigen, um zu verhindern, dass Kunden beim Zugriff auf den Checkout-Prozess wiederholt Bestellungen generieren, müssen Sie ein Urteil hinzufügen

if($_SESSION[&#39;payment&#39;]!=&#39;paypal&#39;){
/*// create the order record
$insert_id = $order->create($order_totals, 2);
$zco_notifier->notify(&#39;NOTIFY_CHECKOUT_PROCESS_AFTER_ORDER_CREATE&#39;);
$payment_modules->after_order_create($insert_id);
$zco_notifier->notify(&#39;NOTIFY_CHECKOUT_PROCESS_AFTER_PAYMENT_MODULES_AFTER_ORDER_CREATE&#39;);
// store the product info to the order
$order->create_add_products($insert_id);
$_SESSION[&#39;order_number_created&#39;] = $insert_id;
$zco_notifier->notify(&#39;NOTIFY_CHECKOUT_PROCESS_AFTER_ORDER_CREATE_ADD_PRODUCTS&#39;);
//send email notifications
$order->send_order_email($insert_id, 2);
$zco_notifier->notify(&#39;NOTIFY_CHECKOUT_PROCESS_AFTER_SEND_ORDER_EMAIL&#39;);*/
}

Und wenn der Kunde die Seite ständig aktualisiert, werden weiterhin Bestellungen generiert.

// create the order record 防漏单
if ($_SESSION[&#39;payment&#39;] == &#39;paypal&#39; and !isset($_SESSION[&#39;order_number_created&#39;])) {
$insert_id = $order->create($order_totals, 2);
$zco_notifier->notify(&#39;NOTIFY_CHECKOUT_PROCESS_AFTER_ORDER_CREATE&#39;);
$payment_modules->after_order_create($insert_id);
$zco_notifier->notify(&#39;NOTIFY_CHECKOUT_PROCESS_AFTER_PAYMENT_MODULES_AFTER_ORDER_CREATE&#39;);
// store the product info to the order
$order->create_add_products($insert_id);
$_SESSION[&#39;order_number_created&#39;] = $insert_id;
}

Fügen Sie

unset($_SESSION[&#39;order_number_created&#39;]);

an einer beliebigen Stelle in PHP hinzu, auch wenn der Kunde die Bestätigungsseite ständig aktualisiert 🎜>

$_SESSION[&#39;order_number_created&#39;]

Die Bestellung wird nicht mehr generiert,

Wenn der Kunde zurückkehrt, um den Warenkorb zu ändern, wird $_SESSION['order_number_created'] angezeigt Wird gelöscht, wenn checkout_paid erneut erreicht wird.

Tatsächlich wird der Bestellcode generiert. Der Bestellcode kann in die Funktion „confirmation()“ von module/paid/paypal.php geschrieben werden.

Der Code lautet wie folgt:

function confirmation() {
if(!isset($_SESSION[&#39;order_number_created&#39;]))
{
global $order,$order_total_modules,$order_totals,$zco_notifier,$insert_id; 
$zco_notifier->notify('NOTIFY_CHECKOUT_PROCESS_BEGIN'); // if the customer is not logged on, redirect them to the time out page
if (!$_SESSION['customer_id']) 
{ 
zen_redirect(zen_href_link(FILENAME_TIME_OUT)); 
} 
else 
{ // validate customer 
if (zen_get_customer_validate_session($_SESSION['customer_id']) == false) 
{ 
$_SESSION['navigation']->set_snapshot(array('mode' => 'SSL', 'page' => FILENAME_CHECKOUT_SHIPPING));
zen_redirect(zen_href_link(FILENAME_LOGIN, '', 'SSL')); 
} 
} 
if(isset($mycartID)&&$mycartID == $_SESSION['cart']->cartID)
{ 
return array('title' => MODULE_PAYMENT_PAYPAL_TEXT_DESCRIPTION); 
} 
$mycartID = $_SESSION['cart']->cartID; 
$order = new order; // prevent 0-entry orders from being generated/spoofed 
if (sizeof($order->products) < 1) 
{ 
zen_redirect(zen_href_link(FILENAME_SHOPPING_CART)); 
} 
$order_total_modules = new order_total; 
$zco_notifier->notify('NOTIFY_CHECKOUT_PROCESS_BEFORE_ORDER_TOTALS_PRE_CONFIRMATION_CHECK');
//$order_totals = $order_total_modules->pre_confirmation_check(); 
$zco_notifier->notify('NOTIFY_CHECKOUT_PROCESS_BEFORE_ORDER_TOTALS_PROCESS'); 
$order_totals = $order_total_modules->process(); 
$zco_notifier->notify('NOTIFY_CHECKOUT_PROCESS_AFTER_ORDER_TOTALS_PROCESS'); 
if (!isset($_SESSION['payment']) && !$credit_covers) 
{ 
zen_redirect(zen_href_link(FILENAME_DEFAULT)); 
} // load the before_process
// load the before_process function from the payment modules 
//$zco_notifier->notify('NOTIFY_CHECKOUT_PROCESS_AFTER_PAYMENT_MODULES_BEFOREPROCESS');
// create the order record 
$insert_id = $order->create($order_totals, 2); 
require(DIR_WS_LANGUAGES.'english/email_extras.php'); 
require(DIR_WS_LANGUAGES.'english/checkout_process.php'); 
// store the product info to the order 
$order->create_add_products($insert_id); 
$_SESSION[&#39;order_number_created&#39;] = $insert_id; 
$zco_notifier->notify('NOTIFY_CHECKOUT_PROCESS_AFTER_ORDER_CREATE_ADD_PRODUCTS');
$order->send_order_email($insert_id, 2);
if (is_array($order_total_modules->modules)) 
{
reset($order_total_modules->modules);
while (list(, $value) = each($order_total_modules->modules)) 
{
$class = substr($value, 0, strrpos($value, '.'));
if (!isset($GLOBALS[$class])) continue;
$GLOBALS[$class]->output=null;
}
}
}
else 
return false;
}

Das Obige ist der gesamte Inhalt dieses Artikels, ich hoffe es Wird für das Lernen aller hilfreich sein. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website!

Verwandte Empfehlungen:

Entwicklung der PHP-UnionPay-Zahlungsschnittstelle


Das obige ist der detaillierte Inhalt vonzen_cart implementiert die Methode zum Generieren von Bestellungen vor der Zahlung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn