Inhaltsverzeichnis
zen_cart实现支付前生成订单的方法,zen_cart生成订单
Heim php教程 php手册 zen_cart实现支付前生成订单的方法,zen_cart生成订单

zen_cart实现支付前生成订单的方法,zen_cart生成订单

Jun 13, 2016 am 08:41 AM
zen 支付 订单

zen_cart实现支付前生成订单的方法,zen_cart生成订单

本文实例讲述了zen_cart实现支付前生成订单的方法。分享给大家供大家参考,具体如下:

除了paypal之外. 客户通过其他的支付方式进入index.php?main_page=checkout_confirmation这个页面就能生出订单.
但是!! paypal就有点与众不同, 它只能是从它的官网 [paypal.com] 返回来并且进入checkout_process这个页面后,才能生出订单

而意外常会发生:比如网络不顺. 又比如客户不小心在返回前就关了页面.

那么,我们的网站后台就看不到客户买的是什么产品(虽然在paypal后台能看到是谁买了,但确实是无法知道他到底买了什么,)这可是一个好郁闷的事情

paypal防漏单的原理就是------在 checkout_confirmation.php这个页面先生出订单!!!

方法是:在这个文件的最后部分
复制代码 代码如下:echo TITLE_CONTINUE_CHECKOUT_PROCEDURE . '
' . TEXT_CONTINUE_CHECKOUT_PROCEDURE;

后面添加代码:

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

Nach dem Login kopieren

为了避免对其他支付方式产生影响,代码做了个判断,只有paypal支付会运行这些生成订单的代码,加了这段后就不用担心会漏单了。

如果需要更完美的做法,为防止顾客在访问checkout process的时候会重复生成订单, 那么就需要加个判断

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

Nach dem Login kopieren

而且在确认页面,如果顾客一直刷新页面,就会一直生成订单,可以加个限制.

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

Nach dem Login kopieren

在pages/checkout_payment/header_php.php任意位置加上

unset($_SESSION['order_number_created']);

Nach dem Login kopieren

这样,就算顾客在确认页面一直刷新,因为已经设置了

$_SESSION['order_number_created']

Nach dem Login kopieren

订单不再生成,

如果顾客返回修改了购物车,再次到达checkout_payment时$_SESSION['order_number_created']将被清除,

其实,生成订单的代码可以写在modules/payment/paypal.php的 function confirmation()中。

代码如下:

function confirmation() {
if(!isset($_SESSION['order_number_created']))
{
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['order_number_created'] = $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;
}

Nach dem Login kopieren

更多关于zend framework相关内容感兴趣的读者可查看本站专题:《Zend FrameWork框架入门教程》、《PHP操作zip文件及压缩技巧总结》、《php文件操作总结》、《ThinkPHP入门教程》、《ThinkPHP常用方法总结》、《smarty模板入门基础教程》及《PHP模板技术总结》。

希望本文所述对大家基于zend框架的PHP程序设计有所帮助。

Erklärung dieser Website
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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So bezahlen Sie eine Taxifahrt auf Baidu Maps. Einführung in die Zahlungsschritte für eine Taxifahrt. So bezahlen Sie eine Taxifahrt auf Baidu Maps. Einführung in die Zahlungsschritte für eine Taxifahrt. Mar 13, 2024 am 10:04 AM

Die Baidu Map APP ist mittlerweile für viele Benutzer zur bevorzugten Reisenavigationssoftware geworden, daher sind einige der Funktionen hier umfassend und können kostenlos ausgewählt und bedient werden, um einige der Probleme zu lösen, auf die Sie beim täglichen Reisen stoßen können Erstellen Sie Ihre eigenen Reiserouten, planen Sie einige Ihrer eigenen Reisepläne, und nachdem Sie die entsprechenden Routen überprüft haben, können Sie entsprechend Ihren eigenen Bedürfnissen geeignete Reisemethoden auswählen. Egal, ob Sie sich für öffentliche Verkehrsmittel, Radfahren, Wandern oder Taxifahren entscheiden, kann alles zufriedenstellend sein Es gibt entsprechende Navigationsrouten, die Sie erfolgreich an einen bestimmten Ort führen können. Dann fühlt sich jeder wohler, wenn er sich für ein Taxi entscheidet. Es gibt viele Fahrer, die Bestellungen online entgegennehmen können werde super

Wie die Uniapp-Anwendung die Zahlungs- und Bestellverwaltung implementiert Wie die Uniapp-Anwendung die Zahlungs- und Bestellverwaltung implementiert Oct 19, 2023 am 10:37 AM

uniapp ist ein plattformübergreifendes Anwendungsentwicklungs-Framework, mit dem kleine Programme, Apps und H5 gleichzeitig entwickelt werden können. In Uniapp-Anwendungen sind Zahlungs- und Auftragsverwaltung sehr häufige Anforderungen. In diesem Artikel wird erläutert, wie Zahlungsfunktionen und Auftragsverwaltung in der Uniapp-Anwendung implementiert werden, und es werden konkrete Codebeispiele aufgeführt. 1. Implementierung der Zahlungsfunktion Die Zahlungsfunktion ist der Schlüssel zur Realisierung von Online-Transaktionen und erfordert normalerweise die Integration des SDK einer Zahlungsplattform eines Drittanbieters. Im Folgenden sind die spezifischen Schritte zur Implementierung der Zahlungsfunktion in uniapp aufgeführt: Registrieren Sie sich und beziehen Sie eine Zahlungsplattform eines Drittanbieters

So beantragen Sie eine Rückerstattung für eine Meituan-Bestellung zum Mitnehmen. Detaillierte Anleitung zur Beantragung einer Rückerstattung für eine Bestellung. So beantragen Sie eine Rückerstattung für eine Meituan-Bestellung zum Mitnehmen. Detaillierte Anleitung zur Beantragung einer Rückerstattung für eine Bestellung. Mar 12, 2024 am 10:50 AM

Ich glaube, dass viele Benutzer einige der oben genannten Funktionen sehr mögen, oder? Das spart Ihnen nicht nur mehr Zeit und Mühe, sondern kann auch immer Ihre unterschiedlichen Bedürfnisse nach Essen erfüllen wurden falsch geliefert oder unser Essen kann nicht verzehrt werden. Wir werden auf jeden Fall einige Rückerstattungsmethoden finden müssen, daher hoffen wir, Ihnen hier besser helfen zu können Wenn der Händler nicht einverstanden ist, werden wir die manuellen Eingriffe des Kunden direkt weiterleiten, also schauen wir uns jetzt die Details an. Lassen Sie sich dieses wunderbare Ereignis nicht entgehen, beeilen Sie sich

Bezahlen Sie mit PHP und der PayPal-API Bezahlen Sie mit PHP und der PayPal-API Jun 19, 2023 pm 04:13 PM

Mit der zunehmenden Beliebtheit von Online-Transaktionen diversifizieren sich die Zahlungsmethoden allmählich, wobei PayPal als weit verbreitete Zahlungsmethode sehr beliebt ist. Wenn Sie PayPal zum Verarbeiten von Transaktionen auf Ihrer Website oder Anwendung verwenden möchten, können Sie PHP und die PayPal-API verwenden, um den Zahlungsvorgang einfach abzuschließen. PayPalAPI ist eine Reihe von Programmierschnittstellen für die Interaktion mit PayPal. Über die API können Sie Benachrichtigungen von PayPal erhalten, die neuesten Transaktionsinformationen abfragen und Zahlungen veranlassen.

So erstatten Sie Meituans ausstehende Bestellungen: Meituans Tutorial zur Rückerstattung ausstehender Bestellungen So erstatten Sie Meituans ausstehende Bestellungen: Meituans Tutorial zur Rückerstattung ausstehender Bestellungen Mar 27, 2024 pm 08:40 PM

1. Öffnen Sie zunächst die Meituan-App und klicken Sie auf die Bestellung, die Sie zur Eingabe verwenden möchten. 2. Klicken Sie dann auf der zu verwendenden Seite auf die Bestellung, die erstattet werden soll. 3. Anschließend können Sie die Händlerinformationen und Bestellinformationen einsehen. Klicken Sie hier, um eine Rückerstattung zu beantragen. 4. Wählen Sie abschließend den Grund für die Rückerstattung aus. Im Allgemeinen wird die Zahlung schnell bearbeitet, wenn Sie einen Grund auswählen, der für den Händler keine Auswirkungen hat.

PHP-Mall-Entwicklungsfähigkeiten: Entwerfen Sie Einkaufswagen- und Bestellsynchronisierungsfunktionen PHP-Mall-Entwicklungsfähigkeiten: Entwerfen Sie Einkaufswagen- und Bestellsynchronisierungsfunktionen Jul 30, 2023 pm 07:22 PM

Fähigkeiten zur Entwicklung von PHP-Einkaufszentren: Entwerfen von Warenkorb- und Bestellsynchronisierungsfunktionen Auf einer Einkaufszentrum-Website sind Warenkorb und Bestellungen unverzichtbare Funktionen. Über den Warenkorb können Benutzer Produkte kaufen und diese in einem temporären Warenkorb speichern. Bei der Bestellung handelt es sich um einen Datensatz, der generiert wird, nachdem der Benutzer den Kauf des Produkts bestätigt hat. Um das Benutzererlebnis zu verbessern und Fehler zu reduzieren, ist es sehr wichtig, eine Warenkorb- und Bestellsynchronisierungsfunktion zu entwickeln. 1. Das Konzept von Warenkorb und Bestellung Ein Warenkorb ist normalerweise ein temporärer Behälter, in dem von Benutzern gekaufte Artikel aufbewahrt werden. Benutzer können Produkte zum einfachen Durchsuchen und Verwalten in den Warenkorb legen.

So bezahlen Sie die Busfahrt in Wuhan So bezahlen Sie die Busfahrt in Wuhan Oct 13, 2022 pm 02:17 PM

Zahlungsmethoden für Busfahrten in Wuhan: 1. Für die Barzahlung müssen Sie im Voraus ausreichend Wechselgeld bereithalten und das Geld direkt in den Münzschlitz einwerfen. Der vollständige Name von Wuhan Tong lautet Wuhan City Card , eine Karte mit integriertem Schaltkreis, auch Chipkarte genannt; 3. Besorgen Sie sich zuerst eine elektronische Buskarte von Wuhan und scannen Sie dann direkt den QR-Code, um das Geld abzuheben, wenn Sie in den Bus einsteigen . WeChat-Buscode-Zahlung: Öffnen Sie das WeChat-Applet „Ride Code“, aktivieren Sie den Wuhan „Ride Code“ und Sie können den QR-Code direkt scannen, um die Zahlung abzubuchen und in den Bus einzusteigen.

So schließen Sie Meituan Takeout Express Payment So schließen Sie Meituan Takeout Express Payment Mar 27, 2024 am 10:41 AM

Im schnelllebigen modernen Leben ist Meituan Takeout bei Verbrauchern wegen seiner praktischen Dienstleistungen und reichhaltigen Auswahl sehr beliebt. Unter anderem bietet die ultraschnelle Zahlungsfunktion den Benutzern großen Komfort, da die Zahlung mit einem Klick abgeschlossen werden kann und mühsame Eingabeschritte entfallen. Viele Benutzer möchten jedoch nicht direkt ohne Bestätigung bezahlen und möchten diese Funktion daher deaktivieren. Wie kann man also die schnelle Zahlung von Meituan Waimai deaktivieren? Im Folgenden stellt Ihnen der Herausgeber dieser Website ein detailliertes Schritt-für-Schritt-Setup-Tutorial vor. Ich hoffe, es kann Ihnen helfen! 1. Klicken Sie auf dem Desktop des Mobiltelefons auf das Verknüpfungssymbol „Meituan Takeaway“. 2. Melden Sie sich auf Ihrem Mobiltelefon bei der Meituan Takeout-App an und klicken Sie unten rechts auf „Mein“. 3. Klicken Sie in der Benutzeroberfläche „Mein“ auf „Wallet eingeben“. 4. Klicken Sie auf der Meituan Wallet-Benutzeroberfläche auf das Symbol „Einstellungen“ in der oberen rechten Ecke

See all articles