Stripe Radarで定期決済のデビットカード使用を拒否する

Stripeの決済機能は、全てのカードタイプに対応しています。

なので、デビットカードやプリペイドカードでも決済可能です。

これはこれで便利なのですが、定期決済の登録カードとしてデビット・プリペイドカードが利用されると、残高が足りない場合に処理が失敗してしまうので、実務的にあまり望ましくない時があります。

今回は Stripe Radar を使って、定期決済のデビット・プリペイドカード利用を拒否する方法をご紹介します。

Stripe Radar とは

Stripe Radar は不正なカード決済を検知するためのシステムです。

Stripe 決済を利用している場合、デフォルトで有効化されています。

デフォルトの設定はダッシュボードから確認できます。

Stripe Radar

例えば、「Block if :risk_level: = ‘highest’」では、不正リスクが高いカード決済を拒否しています。

Radar のカスタムルール

Stripe サポートにメールで問い合わせをすれば、Stripe Radar にカスタムルールを追加できるようになります。

これを使って定期決済のデビット・プリペイドカード利用を拒否していきます。

カードタイプの識別

カードタイプの識別は「:card_funding:」という項目を使います。

次のようにカスタムルールを設定すると、デビット・プリペイドカードによる支払いを拒否することができます。

Block if :card_funding: IN ('prepaid', 'debit')

ただ、これだけでは定期決済以外の場合でもデビット・プリペイドカードが使えなくなってしまいます。

定期決済かどうかの識別

定期決済かどうかを識別するルールを追加する必要がありますが、

デフォルトの項目だけではそのようなルールを設定することができません。

Stripe API Charges でセットした metadata は Stripe Radar で利用できるので、この metadata を活用して「定期決済かどうかを識別するルール」を設定します。

注意すべき点は、定期決済の Stripe API Subscriptions でセットした metadata は Stripe Radar で利用できないという点です。

つまり、「定期決済の時に拒否する」というロジックではなく、

定期決済以外の「ワンタイム決済の場合に許可する」というロジックで書くことになります。

実装例

具体的な実装例を示します。

ワンタイム決済がおこなわれる場合に、Stripe API Charges の metadata として「”is_onetime”: “true”」をセットします。

Stripe\Charge JSON: {
  # 省略
  "metadata": {
    "is_onetime": "true"
  },
  # 省略
}

この is_onetime を使って、定期決済のデビット・プリペイドカード利用を拒否するルールを Stripe Radar に設定します。

Block if :card_funding: IN ('prepaid', 'debit') and is_missing(::is_onetime::)

カスタムパラメータは「::custom_param::」のように、パラメータ名を「::」で囲んで指定します。

is_missing メソッドは、指定した項目やパラメータが存在しない場合に TRUE を返します。

このルール設定で定期決済のデビット・プリペイドカード利用を拒否することができます。

Stripe Radar、便利ですね〜♪

Stripe 決済の導入にお困りですか?

Stripe 決済の導入に関するご依頼・ご相談はこちらからお気軽にどうぞ 😀

Sources

兵庫県西宮市生まれのフリーランスRailsエンジニア。海外を拠点にデジタルノマド生活中。/ 前職・資格:公認会計士 / プログラミング言語:Ruby, JavaScript, HTML, CSS / 日本語・英語
コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です