私は現在、複数のストアがあり、異なるURLから同じデータベースにアクセスするという点で、一般的なeコマースシステムとは構造が少し異なるeコマースシステムに取り組んでいます。
だから例えば私は持っているかもしれません:
上記は本質的に同じストアであり、同じデータベースを指し、メインでは同じ製品を共有します(これは奇妙に見えるかもしれませんが、これらはクライアントの要件です)。唯一の違いは、URLに基づいて、ユーザー、バスケット、注文などが互いに交差しないように分割されることです。つまりsite1の注文/バスケット/ユーザーはsite2には表示されないため、かなり標準的な単一データベースのマルチテナントモデルです。
上記が実装されていますが、チェックアウトプロセスの実装方法に少し固執しています。要件は、共有チェックアウトを持つことです。したがって、次の代わりに:
あなたが持っているでしょう(明確にするために、これは上記のサイトと同じデータベースにリンクします)
これをShopifyでの処理方法に結び付けることができ、複数の店舗が1つのチェックアウトプロセスになります。
メインのチェックアウトプロセスは難しくありません。storeIdとbasketIdを使用して、バスケットから注文を作成し、ユーザーがゲストの場合はストアに割り当てるという観点から、何を識別する必要があるかを識別できます。私が直面している問題は、既存のユーザーがチェックアウトしてログインしたいときに、注文が自分のアカウントに関連付けられ、いくつかの基本情報(メールアドレス、請求先アドレス)が事前に入力されるようにする方法です。
チェックアウトプロセス( https://checkout.somesite.com/storeid/basketid )は、ログインやアカウント管理には関係ありません。ユーザーがいる場合は、チェックアウトを容易にするためだけにあります。チェックアウトプロセスの開始時にログインを希望すると、対応するサイトのログインページにリダイレクトされます。そこから私はこのプロセスについて考えていますが、それを共有して、明らかに何か問題があるかどうかを確認したいと思います。
現在、セッションIDをクエリ文字列に配置すると、悪意のある人物によって取得され、使用され、一部の情報(名前、アドレス)が表示される可能性があるというわずかな懸念があります。反対に、チェックアウトはすべてSSLであり、セッションは短命であり、アカウントをスプーフィングすることはできません(またはアカウントが表すアカウントに代わって何かを行うことはできません)ので、考えすぎているかどうかはわかりませんこのプロセス?
サブドメイン間で発生しましたが、過去に多少似たシナリオを扱ってきました。 (使用しているプログラミング言語がわからないので、PHPを使用して何をしたかを説明します)使用したアプローチは、セッションを保存するようにすべてのサーバーでPHPを構成することでした1つの専用memcachedサーバー。これにより、セッションデータを一元化して、どのサーバーからでもアクセスできるようになりましたが、サーバーのみへのアクセスを制限するファイアウォールルールを作成する必要があります。Memcachedには、そのようなセキュリティが組み込まれていません。 1つのIPアドレス、または任意の「0.0.0.0」に制限する必要があります。2番目のステップは、各サーバーの「cookie_domain」設定を親ドメインに構成することでした。php.iniの構成オプションは次のとおりです。
session.save_handler = memcached
session.save_path = "[server ip address]:33023?persistent=1&weight=1&timeout=1&retry_interval=15"
session.cookie_domain = .somesite.com
[server ip address]
をmemcachedサーバーのIPアドレスに置き換えます。
多くの人は知らない、PHPはCookieを介してセッションIDを追跡しますが、クエリ文字列を介して渡すこともできます。ただし、サイトを設定できる場合は上で説明したように、サイトは同じCookieドメインでセッションCookieにアクセスできるため、これを行う必要はありません。ブラウザには、別のサイトからCookieにアクセスできないようにするセキュリティが組み込まれています。
HTH
質問と要件を誤解した場合はお詫び申し上げます。
仮定
3つのユニークなWebサイト
shop1.com
shop2.com
checkout.com
サイト1またはサイト2でのショッピング。チェックアウトすると、サイト3にリダイレクトされます。
ブラウザのセッションを見てみましょう。通常、ブラウザのタブ間で一意のIDがあります。
私の実装は、の線に沿ったものになります。
•shop1.comのユーザーショップ
•ユーザーがチェックアウトを行います。ログインが必要です。
•ブラウザのセッションIDをキャプチャします。 shop1.comサーバーからcheckout.comサーバーへのソケットを開き、必要なその他の情報とともに一意のブラウザーIDを渡します。
•checkout.comへのリダイレクトを実行します
•一意のブラウザIDを取得し、checkout.comサーバーがそれを認識しているかどうかを確認します。
このように、特別なURLやパラメーターを使用する必要はなく、サイト間で情報を渡すことができます。