修改zen-cart下单和付款流程以防止漏单
zen-cart进入第三方支付网站后,如果不能正常返回,则会造成客户已付款但后台却无订单数据的尴尬局面。本文就针对该问题给出一种解决方案,希望对被同样问题困扰的同行有所帮助。
用过zen-cart的人都知道,zen-cart中下单步骤是下面这样的(其中[]中的表示不是必须的):
1. 购物车(shopping cart)
2. [货运方式(delivery method)]
3. 支付方式(payment method)
4. 订单确认(confirmation)
5. [第三方网站支付]
6. 订单处理(checkout process)——这一步比较重要,因为会在这里将购物车中的信息写入订单
7. 下单成功(checkout success)
这样的流程在正常情况下是没有任何问题的。但是,从第5步到第6部的过程中,用户可能以为付款成功就直接关闭掉网页了,或者由于网络原因造成不能正常跳转到checkout_process页面,这样造成的后果是很严重的,因为订单不能被正常的创建。
基于上述的分析, 我们希望稍微地改变一下流程,即在支付之前订单已经创建好了,这样就算在支付时不能从第三方支付网站跳转回来,我们也不会存在用户付款成功却在后台没有订单的情况了。经过修改后的蓝图基本是下面这样的:
1. 在checkour_confirmation页面确认订单后,都会直接proccess,并且进入checkour_success页面,可以在这里进入付款页面。如下图所示:
2. 如果当时客户没能付款,也可进入自己的后台对历史订单进行付款。如下图所示:
下面我们就来看看如何一步一步来实现上述的功能。
1. 首先我们需要对现有的支付模块进行一个改造。需要对支付方式的class增加一个字段paynow_action_url,用来表示进行支付的页面url,另外还需要增加一个函数,paynow_button($order_id),来获取支付表单的参数隐藏域代码。
要增加paynow_action_url字段,请在类payment的构造函数中最后加上下面的代码:
if ( (zen_not_null($module)) && (in_array($module.'.php', $this->modules)) && (isset($GLOBALS[$module]->paynow_action_url)) ) {
$this->paynow_action_url = $GLOBALS[$module]->paynow_action_url;
}
要增加paynow_button($order_id)函数,请在payment类的最后一个函数之后加上如下的代码:
function paynow_button($order_id){
if (is_array($this->modules)) {
if (is_object($GLOBALS[$this->selected_module])) {
return $GLOBALS[$this->selected_module]->paynow_button($order_id);
}
}
}
2. 以paypal支付方式为例子,说明如何具体实现。为了不破坏paypal原有的代码,我们将paypal.php文件拷贝一个副本出来,并命名为paypalsimple.php,并对里面的代码做适当的修改。代码如下所示,可以看到,这里去掉了对form_action_url的指定,并给定了paynow_action_url,因为我们希望用户点击“确认订单”后直接进入checkout_process,所以如果不指定form_action_url,那么确认订单的表单就会直接提交到checkout_process页面了,而paynow_action_url就是以前的form_action_url的值。paynow_button函数的实现也很简单,这里只是将原先的process_button()函数的内容剪切过来而已,只不过我们没有使用全局的$order变量,而是使用$order = new order($order_id),来重新构造的一个对象,这样做是为在历史订单中显示pay now按钮做准备的。
- 共3页:
- 上一页
- 1
- 2
- 3
- 下一页

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

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

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

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

ホットトピック









1. まずDingTalkを開きます。 2. グループ チャットを開き、右上隅にある 3 つの点をクリックします。 3. このグループで私のニックネームを見つけます。 4. クリックして入力し、変更して保存します。

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

Douyin Blue V 認証は、Douyin プラットフォーム上の企業またはブランドの公式認証であり、ブランド イメージと信頼性の向上に役立ちます。企業の発展戦略の調整やブランドイメージの更新に伴い、企業はDouyin Blue V認証の名称を変更したい場合があります。では、Douyin Blue V は名前を変更できるのでしょうか?答えは「はい」です。この記事では、エンタープライズ Douyin Blue V アカウントの名前を変更する手順を詳しく紹介します。 1.Douyin Blue V の名前は変更できますか? Douyin Blue V アカウントの名前は変更できます。 Douyin の公式規定によると、企業の Blue V 認定アカウントは、一定の条件を満たした後にアカウント名の変更を申請できます。一般的に、企業は社名変更の合法性と必要性を証明するために、営業許可証、組織コード証明書などの関連資料を提供する必要があります。 2. 企業のDouyin Blue Vアカウントの名前を変更する手順は何ですか?

モバイルインターネットの人気により、Toutiao は私の国で最も人気のあるニュース情報プラットフォームの 1 つになりました。多くのユーザーは、さまざまなニーズを満たすために Toutiao プラットフォームで複数のアカウントを持つことを望んでいます。では、複数の Toutiao アカウントを開くにはどうすればよいでしょうか?この記事ではToutiaoアカウントを複数開設する方法と申請手順を詳しく紹介します。 1. 複数の Toutiao アカウントを開くにはどうすればよいですか?複数の Toutiao アカウントを開設する方法は次のとおりです。 Toutiao プラットフォームでは、ユーザーはさまざまな携帯電話番号を使用してアカウントを登録できます。各携帯電話番号で登録できる Toutiao アカウントは 1 つだけです。つまり、ユーザーは複数の携帯電話番号を使用して複数のアカウントを登録できます。 2. 電子メール登録: 別の電子メール アドレスを使用して Toutiao アカウントを登録します。携帯電話番号の登録と同様に、各メール アドレスでも Toutiao アカウントを登録できます。 3. サードパーティのアカウントでログインします

Win10 のスリープ時間変更のヒントが明らかに 現在広く使用されているオペレーティング システムの 1 つである Windows 10 には、ユーザーがコンピューターを使用していないときに電力を節約し、画面を保護するのに役立つスリープ機能があります。ただし、デフォルトのスリープ時間がユーザーのニーズを満たさない場合があるため、Win10 のスリープ時間を変更する方法を知ることが特に重要です。この記事では、Win10 のスリープ時間を変更するためのヒントを紹介します。これにより、システムのスリープ設定を簡単にカスタマイズできるようになります。 1.「設定」からWin10のスリープ時間を変更します。まず、最も簡単な修正です。

Xianyuプラットフォームで製品を公開する際、ユーザーは実際の状況に応じて製品の地理的位置情報をカスタマイズできるため、潜在的な購入者は製品の特定の位置をより正確に把握できます。製品が無事に店頭に並べられれば、販売者の所在地が変わっても心配する必要はありません。 Xianyu プラットフォームは、柔軟で便利な変更機能を提供しています。公開された製品のアドレスを変更したい場合、どのように変更すればよいでしょうか? このチュートリアル ガイドでは、詳細なステップバイステップ ガイドが提供されます。助けてください、皆さん! Xianyu でリリース製品アドレスを変更するにはどうすればよいですか? 1. Xianyu を開き、公開したものをクリックして製品を選択し、[編集] をクリックします。 2. 位置決めアイコンをクリックし、設定したいアドレスを選択します。

今日のペースの速い社会では、睡眠の質の問題に悩まされる人がますます増えています。ユーザーの睡眠の質を向上させるために、特別な睡眠アンカーのグループがDouyinプラットフォームに登場しました。ライブ配信を通じてユーザーと交流し、睡眠のヒントを共有し、視聴者が安らかに眠りにつくのを助けるリラックスできる音楽やサウンドを提供します。では、このスリープアンカーは儲かるのだろうか?この記事ではこの問題に焦点を当てます。 1.Douyin スリープアンカーは儲かりますか? Douyin スリープアンカーは確かに一定の利益を得ることができます。まず、ライブ配信ルームの投げ銭機能を通じてギフトや送金を受け取ることができ、これらの特典はファンの数と視聴者の満足度によって異なります。次に、Douyin プラットフォームは、生放送の視聴数、いいね、シェア、その他のデータに基づいてアンカーに一定のシェアを与えます。一部のスリープアンカーは、

ペースの速い現代生活の中で、美団テイクアウトは便利なサービスと豊富な選択肢で消費者に深く愛されています。中でも超高速決済機能は、煩雑な入力作業を省き、ワンクリックで決済が完了するため、ユーザーにとって大きな利便性をもたらします。ただし、多くのユーザーは確認なしで直接支払うことを好まないため、この機能をオフにしたいと考えています。では、Meituan Waimai の高速支払いをオフにするにはどうすればよいでしょうか?以下では、この Web サイトの編集者が詳細なステップバイステップのセットアップ チュートリアルを提供します。お役に立てれば幸いです。 1. 携帯電話のデスクトップにある「Meituan Takeout」ショートカット アイコンをクリックします。 2. 携帯電話で Meituan テイクアウト アプリにログインし、右下の [マイ] をクリックします。 3. マイインターフェースで、「ウォレットを入力」をクリックします。 4. Meituan Wallet インターフェースで、右上隅の「設定」アイコンをクリックします。
