Jadual Kandungan
zen_cart实现支付前生成订单的方法,zen_cart生成订单
Rumah pembangunan bahagian belakang tutorial php zen_cart实现支付前生成订单的方法,zen_cart生成订单_PHP教程

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

Jul 12, 2016 am 08:53 AM
zen bayar Pesanan

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;

Salin selepas log masuk

为了避免对其他支付方式产生影响,代码做了个判断,只有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');*/
}

Salin selepas log masuk

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

// 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;
}

Salin selepas log masuk

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

unset($_SESSION['order_number_created']);

Salin selepas log masuk

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

$_SESSION['order_number_created']

Salin selepas log masuk

订单不再生成,

如果顾客返回修改了购物车,再次到达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;
}

Salin selepas log masuk

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

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

www.bkjia.comtruehttp://www.bkjia.com/PHPjc/1123802.htmlTechArticlezen_cart实现支付前生成订单的方法,zen_cart生成订单 本文实例讲述了zen_cart实现支付前生成订单的方法。分享给大家供大家参考,具体如下:...
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Cara membayar untuk menaiki teksi di Peta Baidu Pengenalan kepada langkah pembayaran untuk menaiki teksi. Cara membayar untuk menaiki teksi di Peta Baidu Pengenalan kepada langkah pembayaran untuk menaiki teksi. Mar 13, 2024 am 10:04 AM

Baidu Map APP kini telah menjadi perisian navigasi perjalanan pilihan untuk ramai pengguna, jadi beberapa fungsi di sini adalah komprehensif dan boleh dipilih dan dikendalikan secara percuma untuk menyelesaikan beberapa masalah yang mungkin anda hadapi dalam perjalanan harian Anda boleh menyemak beberapa daripadanya laluan perjalanan anda sendiri, rancang beberapa pelan perjalanan anda sendiri, dan selepas menyemak laluan yang sepadan, anda boleh memilih kaedah perjalanan yang sesuai mengikut keperluan anda sendiri Jadi sama ada anda memilih beberapa pengangkutan awam, Berbasikal, berjalan kaki atau menaiki teksi semuanya boleh memuaskan keperluan anda. Terdapat laluan navigasi yang sesuai yang boleh membawa anda ke tempat tertentu Kemudian semua orang akan berasa lebih selesa jika mereka memilih untuk menaiki teksi menjadi super

Cara aplikasi uniapp melaksanakan pengurusan pembayaran dan pesanan Cara aplikasi uniapp melaksanakan pengurusan pembayaran dan pesanan Oct 19, 2023 am 10:37 AM

uniapp ialah rangka kerja pembangunan aplikasi merentas platform yang boleh membangunkan program kecil, Apps dan H5 pada masa yang sama. Dalam aplikasi uniapp, pengurusan pembayaran dan pesanan adalah keperluan yang sangat biasa. Artikel ini akan memperkenalkan cara melaksanakan fungsi pembayaran dan pengurusan pesanan dalam aplikasi uniapp dan memberikan contoh kod khusus. 1. Melaksanakan fungsi pembayaran Fungsi pembayaran adalah kunci untuk merealisasikan urus niaga dalam talian, dan ia biasanya memerlukan penyepaduan SDK platform pembayaran pihak ketiga. Berikut ialah langkah khusus untuk melaksanakan fungsi pembayaran dalam uniapp: Daftar dan dapatkan platform pembayaran pihak ketiga

Cara memohon bayaran balik untuk pesanan bawa pulang Meituan Panduan terperinci untuk memohon bayaran balik untuk pesanan. Cara memohon bayaran balik untuk pesanan bawa pulang Meituan Panduan terperinci untuk memohon bayaran balik untuk pesanan. Mar 12, 2024 am 10:50 AM

Saya percaya bahawa ramai pengguna sangat menyukai beberapa fungsi di atas, bukan? Ia bukan sahaja menjimatkan lebih banyak masa dan usaha anda, tetapi juga sentiasa dapat memenuhi pelbagai keperluan anda untuk makanan Kadang-kadang kami memesan Apabila mengambil makanan, kami mendapati bahawa beberapa pesanan dihantar dengan salah atau makanan kami tidak boleh dimakan Pada masa ini, kami pasti perlu mencari beberapa kaedah bayaran balik, jadi kami juga berharap dapat membantu semua orang di sini. Kami boleh membantu anda dengan lebih baik daripada pengambilan yang kami tempah pada masa hadapan, kami pasti boleh melindungi hak dan kepentingan kami secara langsung Jika peniaga tidak bersetuju, kami akan terus memindahkan campur tangan pelanggan, jadi mari kita lihat butirannya sekarang, anda boleh Jangan terlepas keseronokan, cepat

Cara membayar balik pesanan Meituan yang belum selesai_Tutorial Meituan tentang pembayaran balik pesanan yang belum selesai Cara membayar balik pesanan Meituan yang belum selesai_Tutorial Meituan tentang pembayaran balik pesanan yang belum selesai Mar 27, 2024 pm 08:40 PM

1. Mula-mula buka aplikasi Meituan dan klik pada pesanan yang akan digunakan untuk masuk. 2. Kemudian pada halaman yang akan digunakan, klik pada pesanan yang perlu dikembalikan. 3. Kemudian anda boleh melihat maklumat pedagang dan maklumat pesanan Pada masa ini, anda boleh melihat pilihan untuk memohon bayaran balik. 4. Akhir sekali, pilih sebab pembayaran balik Secara umumnya, pembayaran akan diproses dengan cepat jika anda memilih sebab yang tidak memberi kesan kepada peniaga.

Bayar menggunakan PHP dan API PayPal Bayar menggunakan PHP dan API PayPal Jun 19, 2023 pm 04:13 PM

Dengan peningkatan populariti transaksi dalam talian, kaedah pembayaran secara beransur-ansur mempelbagaikan, antaranya PayPal sangat popular sebagai kaedah pembayaran yang digunakan secara meluas. Jika anda ingin menggunakan PayPal untuk memproses transaksi di tapak web atau aplikasi anda, maka anda boleh menggunakan PHP dan API PayPal untuk menyelesaikan proses pembayaran dengan mudah. PayPalAPI ialah satu set antara muka pengaturcaraan untuk berinteraksi dengan PayPal. Melalui API, anda boleh menerima pemberitahuan daripada PayPal, menanyakan maklumat transaksi terkini dan memulakan pembayaran.

Kemahiran pembangunan pusat membeli-belah PHP: Reka bentuk troli beli-belah dan fungsi penyegerakan pesanan Kemahiran pembangunan pusat membeli-belah PHP: Reka bentuk troli beli-belah dan fungsi penyegerakan pesanan Jul 30, 2023 pm 07:22 PM

Kemahiran pembangunan pusat membeli-belah PHP: Reka bentuk keranjang beli-belah dan fungsi penyegerakan pesanan Dalam laman web pusat membeli-belah, troli beli-belah dan pesanan adalah fungsi yang sangat diperlukan. Troli beli-belah digunakan untuk pengguna membeli produk dan menyimpannya ke troli beli-belah sementara, manakala pesanan ialah rekod yang dihasilkan selepas pengguna mengesahkan pembelian produk tersebut. Untuk meningkatkan pengalaman pengguna dan mengurangkan ralat, adalah sangat penting untuk mereka bentuk troli beli-belah dan fungsi penyegerakan pesanan. 1. Konsep Troli Beli-belah dan Tempahan Troli beli-belah biasanya merupakan bekas sementara yang digunakan untuk menyimpan barang yang dibeli oleh pengguna. Pengguna boleh menambah produk pada troli beli-belah untuk penyemakan imbas dan pengurusan yang mudah.

Bagaimana untuk membayar untuk menaiki bas di Wuhan Bagaimana untuk membayar untuk menaiki bas di Wuhan Oct 13, 2022 pm 02:17 PM

Kaedah pembayaran untuk menaiki bas di Wuhan: 1. Untuk pembayaran tunai, anda perlu menyediakan wang yang mencukupi terlebih dahulu dan memasukkan wang terus ke dalam slot syiling 2. Leret kad Wuhan Tong Nama penuh Wuhan Tong ialah Kad Bandar Wuhan , yang merupakan kad litar bersepadu, juga dipanggil kad cip; . Pembayaran kod bas WeChat , buka applet "Ride Code" WeChat, aktifkan "Ride Code" Wuhan dan anda boleh terus mengimbas kod QR untuk menolak bayaran dan menaiki bas.

Cara menutup Pembayaran Ekspres Bawa Keluar Meituan Cara menutup Pembayaran Ekspres Bawa Keluar Meituan Mar 27, 2024 am 10:41 AM

Dalam kehidupan moden yang serba pantas, Meituan Takeaway amat disayangi oleh pengguna kerana perkhidmatannya yang mudah dan pilihan yang pelbagai. Antaranya, fungsi pembayaran ultra pantas membawa kemudahan yang hebat kepada pengguna Pembayaran boleh diselesaikan dengan satu klik, menghapuskan langkah input yang membosankan. Walau bagaimanapun, ramai pengguna tidak suka membayar terus tanpa pengesahan, jadi mereka mahu mematikan ciri ini. Jadi bagaimana untuk mematikan pembayaran pantas Meituan Waimai? Dalam perkara berikut, editor laman web ini akan membawakan anda tutorial persediaan langkah demi langkah yang terperinci, saya harap ia dapat membantu anda! 1. Klik ikon pintasan "Meituan Takeaway" pada desktop telefon mudah alih. 2. Log masuk ke aplikasi bawa pulang Meituan pada telefon mudah alih anda dan klik "Saya" di penjuru kanan sebelah bawah. 3. Dalam antara muka Saya, klik "Masukkan Dompet". 4. Dalam antara muka dompet Meituan, klik ikon "Tetapan" di penjuru kanan sebelah atas

See all articles