統合
Kentico Cloudを使用した製品の販売:Stripe統合
By Josef Dvorak
ウェブサイトまたはアプリが公開され、コンテンツプレゼンテーションの最終調整が完了したら、訪問者があなたから購入できるストアを実装する絶好の機会です。
Kentico CloudのようなヘッドレスCMSを使用している場合、軽量の製品カタログとして使用するために必要な情報のほとんどをすでに持っている可能性があります。これにより、カタログはモバイルアプリ、店内の看板、ウェブサイトなど、さまざまなチャネルで広く利用できるようになります。
最も人気のあるインターネットビジネスプラットフォームの1つであるStripeを使用して、Webサイトでの購入を可能にする方法を見てみましょう。
以下を使用します。
- サンプルダンシングヤギプロジェクト
- Kenticoクラウドボイラープレート
- Kenticoクラウドコードジェネレーター
- Stripe.netNuGetパッケージ
新しいサブスクリプションごとに利用できるSampleDancing Goatプロジェクトには、使用できるCoffeeコンテンツタイプがすでに含まれており、Priceフィールドもあります。
これは素晴らしい!ただし、商品の表示をわかりやすくするために、ストアに商品番号というフィールドをもう1つ追加しましょう。
このようにして、商品をカスタマイズし、ストアに必要なフィールドを追加できます。製品の定義が終了したら、必ずページを公開してください。
Webサイトにはサンプルのボイラープレートプロジェクトを使用します。プロジェクトのストックバージョンはGitHubからダウンロードできますが、以下の例で使用されている完成したプロジェクトをダウンロードすることもできます。使用方法はreadmeファイルに含まれています。
ボイラープレートプロジェクトをクラウドプロジェクトに接続するには、プロジェクトIDをappsettings.jsonに追加することを忘れないでください。
ボイラープレートプロジェクトを実行すると、最初にクラウドプロジェクトの記事のリストが表示されます。ただし、簡単にするために、代わりにCoffeesを表示するように変更しましょう。
まず、クラウドジェネレーターを使用してCoffeeクラスの更新されたコードを生成してから、Coffeeクラスをプロジェクトに追加する必要があります。
クラスをプロジェクトとタイプのリストに追加したら、次のようにします。
記事の代わりにコーヒーをリストするようにHomeControllerを変更できます。
そして、インデックスビューモデルをCoffeeに設定します。
その後、支払いボタンを含むCoffeeモデルの共有リストテンプレートを作成する必要があります。すでに\ Views \ Shared \ DisplayTemplates \ Article.cshtmlにArticleビューがあるため、そのコードを再利用して、参照されるクラスをCoffeeに変更し、リストのマークアップを作成することで、新しいビュー(CoffeeのCoffee.cshtml)を作成できます。 Stripeドキュメントのサンプルに続くフォームへ:
このマークアップから、フォームを処理できるように製品の価格を提供する必要があることがわかります。これは、プロジェクトを少し将来にわたって保証し、基礎となるコンテンツクラスが何であれ、将来複数の製品を販売することを決定した場合に、製品価格を取得する単一の方法を実施する良い機会です。
この目的のために、単一のメソッドでインターフェースを定義して、\ ECommerce \ Interfaces \ IProduct.csに製品価格を返すことができます。
このように、必要に応じて、各コンテンツクラスに異なる価格フィールドを設定できます。ここで行う必要があるのは、部分クラス内にメソッドを実装し、生成されたコンテンツクラスCoffeeのコードを\ Models \ Extensions \ Coffee.csに拡張することだけです。
すべての製品がこのインターフェースを実装するため、\ ECommerce \ Extensions \ IProductExtensions.csで価格計算とフォーマットのための追加の拡張メソッドを実装できます。
すべての要素をまとめると、Coffee.cshtml内で次のコードを使用してフォームを定義できます。
このようにして、Coffeeリストの各アイテムに独自の支払いボタンがあり、Stripe JavaScriptコードを使用して適切な支払いフォームをレンダリングするため、PCIコンプライアンスやクライアントデータストレージについて心配する必要はありません。
しかし、ご覧のとおり、最後に1つ欠けているのは、アクションURLです。フォーム自体は、Stripeから支払いトークンを受け取ることを保証するだけです。支払いを請求するには、コントローラー内で短いサーバー側コードを実行してカートに請求する必要があります。支払いフォームによってHTTPPOSTを介して送信されたStripeAPIトークンと、Stripe.netNuGetパッケージで定義されたChargeサービスを使用します。これらの2つのツールを使用して、\ Controllers \ ProcessPaymentController.csにコントローラーロジックを実装する準備が整いました。
コード全体でクラスECommerceSettingsへの参照に気付いたかもしれません。これは、通貨や文化などを扱うビジネスロジックの代用です。その完全なコードは、最終的なプロジェクトパッケージにあります。クラス自体は、アプリケーションシークレットを使用して、アプリケーションの残りの部分とともにStartup.csで初期化されます。
これで、プロジェクトは支払いを処理する準備が整いました。ウェブサイトにアクセスすると、コーヒー製品のリストが表示されます。
そして、購入フォームを使用してそれらの支払いをすることができます:
処理された支払いは、Stripeアカウントに表示されます。
ご覧のとおり、既存のKentico Cloudコンテンツを迅速に再利用し、サードパーティのシステムと統合して支払いを受け入れることができます。
これにより、Kentico Cloud内のすべてのコンテンツと製品データを一元管理し、より高度な機能を使用して基本的な購入機能をさらに拡張できます。
サンプルプロジェクトを試してみてください。