Commerce Gift Card
Drupal Commerceに完全なギフトカード機能を提供します。ギフトカードの作成、販売、引き換え、残高管理、取引履歴の追跡が含まれます。
commerce_giftcard
概要
Commerce Gift Cardは、Drupal Commerceストアにギフトカード機能を実装するための包括的なソリューションです。2つの新しいエンティティタイプを導入します:Gift Card(ユニークなコードと残高を保存するコンテンツエンティティ)とGift Card Type(コード生成パターンと表示設定を定義する設定エンティティ)です。
このモジュールはギフトカードのライフサイクル全体をサポートします:管理者は個別のギフトカードを手動で作成したり、設定可能なコード長で一括生成したり、購入時に自動的にギフトカードを生成する商品を設定できます。顧客は統合された引き換えペインを通じてチェックアウト時にギフトカードを引き換えることができ、残高は自動的に注文調整として適用されます。
すべての残高変更はトランザクションとして記録され、ギフトカード使用の完全な監査証跡を提供します。モジュールには返金機能も含まれており、管理者は完了した注文からギフトカードに金額を戻すことができます。ストア固有の制限により、ギフトカードが有効な場所を限定でき、通貨検証によりギフトカードが注文通貨と一致することが保証されます。
Features
- ユニークな英数字コードと金銭的残高を持つギフトカードの作成と管理
- 設定可能なコード生成パターン(カスタマイズ可能な長さ)で複数のギフトカードタイプを定義
- 指定されたタイプ、残高、ストア制限でギフトカードを一括生成
- 商品バリエーションタイプにpurchasableトレイトを追加してギフトカードを商品として販売
- 設定可能な複数カードサポートを備えた専用チェックアウトペインでチェックアウト時にギフトカードを引き換え
- 注文時のトランザクションログ付き自動残高控除
- 関連エンティティへの参照を含むすべての残高変更を追跡する完全なトランザクション履歴
- 完了した注文から元のギフトカードへの金額返金
- 選択したストアにギフトカードの有効性を限定するストア固有の制限
- 注文調整としてのギフトカード表示をカスタマイズするTokenベースの表示ラベル
- ギフトカードとトランザクションを管理するための事前設定された管理Viewsとの統合
- ギフトカード金額計算とCRUD操作をカスタマイズするための拡張可能なイベントシステム
Use Cases
ギフトカードを商品として販売
「Allows to buy gift cards」トレイトを持つ商品バリエーションタイプを作成します。このバリエーションタイプで商品を作成し、ギフトカードタイプとオプションで固定のギフトカード金額を設定します(空の場合は商品価格が使用されます)。顧客がこれらの商品を購入すると、ギフトカードが自動的に生成されて割り当てられ、コードはチェックアウト完了メッセージで確認できます。
プロモーション用ギフトカード
一括生成機能を使用してマーケティングキャンペーン用のギフトカードを作成します。/admin/commerce/giftcards/generateに移動し、タイプを選択し、プロモーション用の残高を設定し、数量を指定します。生成されたコードをマーケティングチャネルを通じて配布します。
顧客ロイヤリティ報酬
エンティティストレージを使用してプログラム的に報酬としてギフトカードを作成します。特定の残高を持つcommerce_giftcardエンティティを作成し、顧客を所有者として割り当てます。その後、将来の購入で引き換えることができます。
ギフトカードでの部分支払い
顧客はギフトカード残高が注文合計より少なくても、チェックアウト時にギフトカードを適用できます。ギフトカード残高全額が適用され、顧客は別の支払い方法で残りを支払います。
マルチストアでのギフトカード制限
マルチストア設定の場合、ギフトカードを特定のストアに制限できます。ギフトカードの作成または生成時に、許可するストアを選択します。ギフトカードはそれらのストアでのみ引き換え可能になります。
ギフトカードの返金
ギフトカード支払いを使用した注文がキャンセルまたは部分返金された場合、注文の「ギフトカード返金」タブを使用してギフトカード残高に金額を戻します。これにより正のトランザクションが作成され、注文調整が更新されます。
Tips
- 表示ラベルでTokenを使用(例:「Gift Card [commerce_giftcard:code:value]」)すると、注文サマリーに特定のギフトカードコードを表示できます
- 注文プロセッサーは優先度-1000で実行されるため、ギフトカードはプロモーションや税金を含む他のすべての調整後に適用されます
- 所有者がないギフトカード(uidがnull)は誰でも引き換えできますが、所有されたギフトカードは「view own giftcards」権限を持つ所有者が表示できます
- トランザクションコメントは翻訳変数をサポートしているため、「Used on order with id @order_id」のようなメッセージは適切に翻訳可能です
- 一括ジェネレーターは要求された数量の2倍のコードを作成し、ユニーク性でフィルタリングするため、短いコード長でも高い成功率を確保します
Technical Details
Admin Pages 8
/admin/commerce/giftcards
すべてのギフトカードを表示・管理するためのメイン管理ページ。ギフトカードコード、タイプ、ステータス(有効/無効)、現在の残高、所有者、トランザクション数、作成日/更新日を含むテーブルを表示します。各ギフトカードの編集、削除、トランザクション追加の操作を提供します。
/admin/commerce/giftcards/add/{commerce_giftcard_type}
特定のタイプの新しいギフトカードを作成するフォーム。ユニークなコード、初期残高、所有者、ステータス、ストア制限を設定できます。
/admin/commerce/giftcards/generate
複数のギフトカードを一度に作成するための一括生成フォーム。25件ずつのグループでバッチ処理を使用してカードを生成します。
/admin/commerce/giftcards/{commerce_giftcard}/transactions
特定のギフトカードのすべてのトランザクションを表示し、残高変更の完全な履歴を示します。
/admin/commerce/giftcards/add-transaction
ギフトカードトランザクションを手動で作成するフォーム。ギフトカード残高に加算または減算できます。
/admin/commerce/config/giftcard_types
ギフトカードタイプバンドルを管理するための設定ページ。各タイプはコード生成と表示ラベルの設定を定義します。
/admin/commerce/config/giftcard_types/add
コード生成設定と表示設定を持つ新しいギフトカードタイプを作成するフォーム。
/admin/commerce/orders/{commerce_order}/giftcard-refund
完了した注文で使用されたギフトカードに金額を返金するフォーム。ギフトカード調整がある非ドラフト注文でのみ利用可能。
権限 6
Hooks 3
hook_entity_base_field_info
適用されたギフトカード参照を保存するためにcommerce_orderエンティティにcommerce_giftcardsフィールドを追加します。
hook_preprocess_commerce_checkout_completion_message
注文で購入されたギフトカードコードをチェックアウト完了メッセージテンプレートに提供します。
hook_theme
引き換えインラインフォーム用のcommerce_giftcard_redemption_formテーマフックを定義します。
Troubleshooting 5
ギフトカードコードはユニークである必要があります。検証は大文字小文字を区別しないため、「ABC123」と「abc123」は同じとみなされます。既存のギフトカードを確認するか、自動コードジェネレーターを使用してください。
ギフトカードは一致する通貨の注文でのみ使用できます。ギフトカード残高の通貨がストアのデフォルト通貨と一致していることを確認してください。
ギフトカードにストア制限が設定されている場合、その特定のストアでのみ引き換えできます。ギフトカードのストア設定を確認してください。
負のギフトカード残高になるトランザクションは拒否されます。これにより過剰な引き換えが防止されます。検証により、負のトランザクション金額が現在の残高を超えないことが確認されます。
商品バリエーションタイプに「Allows to buy gift cards」トレイトがあり、バリエーションにcommerce_giftcard_typeフィールドが設定されていることを確認してください。ギフトカードは注文確定トランジション時に作成されます。
Security Notes 5
- ギフトカードコードはパスワードやAPIキーと同様に機密データとして扱う必要があります
- 「administer commerce_giftcard」権限は、一括生成やすべての残高の表示を含む完全なアクセスを付与します
- ギフトカードコードを安全に保管し、暗号化された接続で送信してください
- ブルートフォースによるコード推測を防ぐために引き換えフォームにレート制限の実装を検討してください
- コードジェネレーターは暗号的に安全なランダム文字列のためにDrupalのパスワードジェネレーターサービスを使用します