この記事について
ポイント変換で発行するクーポンには、不正利用を防ぐための制約を設けています。クーポンの仕様と、その設計理由を解説します。
クーポンの基本仕様
発行されるクーポンの特徴
クーポンコードの形式
形式: [顧客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円
この設計がもたらす効果
セキュリティ面
- 不正利用のリスクを最小限に抑制
- 仮に問題が発生しても被害を限定
- 追跡可能な設計で問題の特定が容易
顧客体験
- 金額が明確でわかりやすい
- コピー機能で入力の手間を軽減
- 十分な有効期限で焦らずに使える