目次
zen_cart实现支付前生成订单的方法,zen_cart生成订单
ホームページ 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;

ログイン後にコピー

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

ログイン後にコピー

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

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

ログイン後にコピー

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

unset($_SESSION['order_number_created']);

ログイン後にコピー

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

$_SESSION['order_number_created']

ログイン後にコピー

订单不再生成,

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

ログイン後にコピー

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

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

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

百度地図でのタクシー料金の支払い方法. タクシー料金の支払い手順を紹介します。 百度地図でのタクシー料金の支払い方法. タクシー料金の支払い手順を紹介します。 Mar 13, 2024 am 10:04 AM

Baidu Map APP は現在、多くのユーザーに好まれる旅行ナビゲーション ソフトウェアとなっているため、ここにある機能の一部は包括的であり、毎日の旅行で遭遇する可能性のある問題のいくつかを解決するために無料で選択して操作できます。自分だけの旅行ルートを設定して、自分だけの旅行プランを立てましょう。該当するルートを確認した上で、公共交通機関を利用しても、自転車、徒歩、タクシーなど、目的に応じて適切な移動方法を選択することができます。あなたのニーズに対応したナビゲーションルートがあり、特定の場所にうまく導くことができます。そうすれば、誰もがタクシーを利用することを選択した場合、より便利だと感じるでしょう。多くのドライバーがいます。彼らは皆、オンラインで注文を受け付け、タクシー配車は可能です。超になる

uniapp アプリケーションが支払いと注文の管理を実装する方法 uniapp アプリケーションが支払いと注文の管理を実装する方法 Oct 19, 2023 am 10:37 AM

uniapp は、小さなプログラム、アプリ、および H5 を同時に開発できるクロスプラットフォームのアプリケーション開発フレームワークです。 uniapp アプリケーションでは、支払いと注文の管理が非常に一般的なニーズです。この記事では、uniappアプリケーションに決済機能や注文管理を実装する方法と具体的なコード例を紹介します。 1. 決済機能の実装 決済機能はオンライン取引を実現するための鍵であり、通常、サードパーティの決済プラットフォームの SDK を統合する必要があります。 uniapp に支払い機能を実装するための具体的な手順は次のとおりです。 サードパーティの支払いプラットフォームを登録して取得します。

Meituan のテイクアウト注文の返金を申請する方法 注文の返金を申請するための詳細なガイド。 Meituan のテイクアウト注文の返金を申請する方法 注文の返金を申請するための詳細なガイド。 Mar 12, 2024 am 10:50 AM

上記の機能は多くのユーザーに気に入っていただいているのではないでしょうか?時間と労力を節約するだけでなく、食品に対するさまざまなニーズに常に対応できるようになります。配送が間違っていたり、食べ物が食べられない場合は、返金方法を必ず見つける必要がありますので、私たちもここにいる皆様のお役に立てれば幸いです。より良いお手伝いをさせていただきます。今後注文するテイクアウトについては、当社の権利と利益を確実に直接保護できます。販売者が同意しない場合は、手動による顧客介入を直接転送します。それでは、今すぐ詳細を見てみましょう。興奮を逃すな、急いで

Meituan の保留中の注文を返金する方法_保留中の注文の返金に関する Meituan のチュートリアル Meituan の保留中の注文を返金する方法_保留中の注文の返金に関する Meituan のチュートリアル Mar 27, 2024 pm 08:40 PM

1. まず Meituan アプリを開き、入力に使用する注文をクリックします。 2. 次に、使用するページで、返金が必要な注文をクリックします。 3. 販売者情報と注文情報が表示され、返金を申請するオプションが表示されますので、クリックして返金を申請します。 4. 最後に、返金の理由を選択します。通常、販売者に影響のない理由を選択すると、支払いは迅速に処理されます。

PHP と PayPal API を使用して支払う PHP と PayPal API を使用して支払う Jun 19, 2023 pm 04:13 PM

オンライン取引の普及に伴い、支払い方法も徐々に多様化しており、その中でもPayPalは広く利用されている支払い方法として非常に人気があります。 PayPal を使用して Web サイトまたはアプリケーションでトランザクションを処理する場合は、PHP と PayPal API を使用して支払いプロセスを簡単に完了できます。 PayPalAPI は、PayPal と対話するためのプログラミング インターフェイスのセットです。 API を介して、PayPal から通知を受け取り、最新の取引情報を照会し、支払いを開始できます。

PHPモール開発スキル:ショッピングカートや注文同期機能の設計 PHPモール開発スキル:ショッピングカートや注文同期機能の設計 Jul 30, 2023 pm 07:22 PM

PHPモール開発スキル:ショッピングカートと注文同期機能の設計 モールWebサイトにおいて、ショッピングカートと注文は欠かせない機能です。ショッピング カートはユーザーが製品を購入し、一時的なショッピング カートに保存するために使用されます。一方、注文はユーザーが製品の購入を確認した後に生成されるレコードです。ユーザーエクスペリエンスを向上させ、エラーを減らすためには、ショッピングカートと注文の同期機能を設計することが非常に重要です。 1. ショッピング カートと注文の概念 ショッピング カートは通常、ユーザーが購入した商品を保管するために使用される一時的なコンテナです。ユーザーはショッピング カートに製品を追加して、簡単に閲覧および管理できます。

ペイノー支払いとはどういう意味ですか? ペイノー支払いとはどういう意味ですか? Sep 30, 2022 am 11:01 AM

PayNow 支払いは電子送金サービスであり、ユーザーは、受取人が指定した携帯電話番号、ID カード/FIN 番号、UEN 番号、または PayNow QR コードを介して、相手方を介さずに受取人へのリアルタイム SGD 送金を直接開始できます。銀行口座情報。

武漢でのバスの支払い方法 武漢でのバスの支払い方法 Oct 13, 2022 pm 02:17 PM

武漢のバスの支払い方法: 1. 現金で支払う場合は、事前に十分な小銭を用意し、コインスロットに直接お金を入れる必要があります; 2. 武漢通カードをスワイプします (武漢通の正式名称は武漢市カードです) 、チップカードとしても知られる集積回路カードです; 3. Alipay 電子バス カード、最初に Alipay で武漢電子バス カードを取得し、バスに乗るときに QR コードを直接スキャンしてお金を差し引きます; 4. WeChatバスコード支払い、WeChat「乗車コード」アプレットを開き、武漢「乗車コード」をアクティブ化すると、QRコードを直接スキャンして支払いを差し引いてバスに乗車できます。

See all articles