クーポンの設計と制約

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

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

この記事について

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

クーポンの基本仕様

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

割引タイプ
仕様固定金額割引
理由ポイント数=金額でわかりやすい
割引金額
仕様使用ポイント数と同額
理由1pt=1円の明確なレート
使用回数
仕様1回のみ
理由ポイントは一度しか消費されない
使用者
仕様発行を依頼した顧客のみ
理由他人への譲渡を防止
有効期限
仕様発行から1年間
理由十分な猶予を提供
最低購入額
仕様なし
理由使いやすさを優先

クーポンコードの形式

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

顧客ID下5桁
70934
意味誰のクーポンか
ランダム6文字
AB12CD
意味重複防止(同一顧客で複数発行可能)
ポイント数
500
意味いくら引きのクーポンか

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

制約の詳細

使用回数の制限

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

顧客限定の制約

Shopifyのクーポン設定:

  • customer_selection: "specific"
  • prerequisite_customer_ids: ["12345"]
使用制限
詳細顧客12345以外はこのコードを使えない
漏洩対策
詳細コードが漏洩しても他人は使えない
共有防止
詳細家族間での共有も不可
検証の流れ
顧客がコード入力

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

Shopifyがチェック

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

結果

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

有効期限の設計

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

不正利用対策

想定される不正と対策

コードの推測
対策ランダム6文字で推測困難に
コードの共有
対策特定顧客限定で使用者を制限
複数回使用
対策1回限りで使用回数を制限
期限切れ後の使用
対策Shopify側で自動的に無効化
残高以上の変換
対策変換前に残高を必ず確認

ブルートフォース対策

コード形式: 70934-AB12CD-500

使用文字
内容A-Z, 0-9(36種類)
桁数
内容6桁
組み合わせ数
内容36^6 = 約21億通り

総当たり攻撃の困難さ:

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

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

変換レートと制限

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

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

100pt
クーポン金額100円引きクーポン
500pt
クーポン金額500円引きクーポン
1000pt
クーポン金額1000円引きクーポン

将来の拡張可能性:

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

変換の制限

最小変換単位
100pt
理由少額クーポンの乱発防止
最大変換単位
10,000pt/回
理由高額変換は手動確認
1日あたり上限
30,000pt
理由不正利用時の被害限定
変換単位
100pt刻み
理由端数処理の複雑さ回避

顧客への表示

クーポン情報の表示項目

コード
クーポン170934-AB12CD-500
クーポン270934-XY34ZW-1000
金額
クーポン1500円引き
クーポン21,000円引き
有効期限
クーポン12025年1月15日
クーポン22024年12月31日
状態
クーポン1未使用 [コードをコピー]
クーポン2使用済み(2024/10/20)

使用方法の案内

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

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

購入手続きへ進む

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

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

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

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

例: 70934-AB12CD-500

「適用」をクリック

クーポンを適用する

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

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

この設計がもたらす効果

セキュリティ面

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

顧客体験

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

関連記事