クーポンの設計と制約

発行するクーポンの仕様と、不正利用を防ぐための制約設計

クーポン設計制約不正防止有効期限
読了時間: 8分

この記事について

ポイント変換で発行するクーポンには、不正利用を防ぐための制約を設けています。クーポンの仕様と、その設計理由を解説します。

クーポンの基本仕様

発行されるクーポンの特徴

クーポンコードの形式

形式: [顧客ID下5桁]-[ランダム6文字]-[ポイント数] : 70934-AB12CD-500

メリット: コードを見れば内容がわかる、重複が発生しない、問い合わせ対応が容易、不正コード生成が困難

制約の詳細

使用回数の制限

ポイント変換時: 500pt消費 → 500円クーポン発行

顧客限定の制約

Shopifyのクーポン設定:

  • customer_selection: "specific"
  • prerequisite_customer_ids: ["12345"]
検証の流れ
顧客がコード入力

購入画面でクーポンコードを入力

Shopifyがチェック

コードは有効? → Yes / この顧客が対象? → 顧客ID照合

結果

一致 → 割引適用 / 不一致 → 「このコードは使用できません」

有効期限の設計

期限切れの扱い: 期限切れクーポン → 使用不可、消費したポイント → 戻らない、事前のリマインダー → 検討中

不正利用対策

想定される不正と対策

ブルートフォース対策

コード形式: 70934-AB12CD-500

総当たり攻撃の困難さ:

  • 1秒に100回試行しても全パターン試行に約240日
  • しかもレート制限で1分60回まで

追加対策: 連続失敗でアカウント一時ロック、異常なパターンを検知してアラート

変換レートと制限

ポイント→金額の変換レート

基本レート: 1ポイント = 1円

将来の拡張可能性:

  • キャンペーン時: 1pt = 1.5円
  • 会員ランク別: ゴールドは1pt = 1.2円
  • 設定で変更可能な設計にしておく

変換の制限

顧客への表示

クーポン情報の表示項目

使用方法の案内

クーポン使用ガイド
カートに商品を入れる

購入したい商品をカートに追加

購入手続きへ進む

チェックアウト画面へ移動

クーポンコード欄を見つける

購入画面内のクーポン入力欄を探す

コードを入力または貼り付け

例: 70934-AB12CD-500

「適用」をクリック

クーポンを適用する

割引が反映されたことを確認

小計: 5,000円 → クーポン: -500円 → 合計: 4,500円

この設計がもたらす効果

セキュリティ面

  • 不正利用のリスクを最小限に抑制
  • 仮に問題が発生しても被害を限定
  • 追跡可能な設計で問題の特定が容易

顧客体験

  • 金額が明確でわかりやすい
  • コピー機能で入力の手間を軽減
  • 十分な有効期限で焦らずに使える