Stripeベースの自作サービスでカードの不正利用があった場合の対処法

Stripeベースの自作サービスでカードの不正利用があった場合の対処法

Stripeベースの自作サービスでカードの不正利用があった場合の対処法

English version is available.

どうもTAKUYAです。

30日間のお休みから戻ってきて、自分のSaaSプロジェクト「Inkdrop」の作業を再開しました。これは現在約1,400人の課金ユーザがいるノートアプリです。他のアプリと比べてその規模がとても小さいにも関わらず、今回初めて自サービスにてカードの不正利用が起きてしまいました。 (お休み中にその報告を受けて、休み気分が吹き飛んだのはここだけの秘密です😇)

本稿ではカードの不正利用について調査して学んだこと、そして実際にどのように対処したかシェアしたいと思います。

疑惑のある支払いは全てすぐに返金する

自分たちのサービスの信用を保つためにも、カード支払いに関する紛争(Dispute / 異議申し立て)は可能な限り避けなくてはなりません。StripeはおそらくDisputeの数を監視していて、万が一サービスが有害と判断された場合はStripeアカウントをクローズする権限を持っています。心当たりのない支払いの連絡を受けた時は、速やかかつ丁寧に応答して出来ることを行いましょう。Stripeは不正利用と紛争についてのドキュメントを用意しています。重要な点を引用します:

Refund suspicious payments immediately
Refund any payments you suspect are fraudulent as soon as possible. In the Dashboard, select the payment and click Refund as fraud. This refunds the payment and reports it to us so that we can further improve our fraud detection.
 — Best Practices | Stripe Payments

疑惑のある支払いは速やかに返金してください
あなたが不正ではないかと疑いをかけている支払いは可能な限り早く返金しましょう。ダッシュボードからペイメントを選んで Refund as fraud をクリックします。これでペイメントが返金されて、Stripeでの不正利用検知システムの動作改善に役立てられます。

各紛争には15 USDの手数料がかかります:

EFWs do not officially require any action or response from you as a merchant. However, they are good indicators of impending disputes — 82% of payments that receive EFWs eventually get disputed. Since there’s a fee for disputes (15 USD) and disputes can count for certain chargeback monitoring programs you may want to proactively prevent disputes by immediately refunding payments that receive an EFW.
 — Measuring Disputes | Stripe Payments

こちらが不正な支払い報告への対処手順です。

1. まずは落ち着こう

この問題はカード所持者とあなたにとって悲しい出来事です。しかしそれは起きました。深く息を吸って。

2. 支払いに関する情報を聞き出す

嫌疑のかけられた支払いを特定するために、カード所持者から以下の情報を聞き出します:

  • カード番号の下4桁
  • 請求日
  • 金額

3. Stripeダッシュボードで支払いを特定する

Stripeでは、聞き出したカード番号の下4桁を使って支払履歴を絞り込めます。上記画面のサーチバーに4桁を入力します。

もし見つかったものが明らかな不正利用だとしても、プライバシーの観点から「誰が使ったか」という情報は開示しないようにしましょう。

4. ‘Refund as fraud’を実行する

支払情報画面の右上にRefund (返金)ボタンがあります。それをクリックします。

返金理由として Fraudulent(不正) を選択します。この操作によって、カード番号とemailの組み合わせはブロックリストに追加され、将来の請求は全てブロックされるようになります。また、この情報はStripeの他のアカウントにもfingerprintとして共有されて役立てられます。 ‘Refund and block’ をクリックしましょう。

紛争と不正を防止するには

Stripeは不正利用をできるだけ未然に防ぐためのガイドを提供していて、とても参考になります:

Preventing Disputes and Fraud | Stripe Payments
Learn how to best protect against disputes and fraudulent payments. Fraud is the most common cause of disputes, though…

支払情報をできるだけ多く集める

僕はInkdropのカードフォームにはStripe.js と Elementsを使用しています。しかしこれはカード番号、CVC(セキュリティコード)、ZIPコードなど必要最低限の情報しか収集しません。付属的な情報を更に集めることで、顧客の合法性をカード会社が確認する手助けになります。例えば:

  • カード所持者名
  • 現住所
  • 送り先住所 (現住所と異なる場合)

詳しくは上記のドキュメントを参照してください。また、3Dセキュアに対応するのも更なる防止策として有効でしょう。

Read more

「一汁一菜」にAI時代の生き方が詰まっている

「一汁一菜」にAI時代の生き方が詰まっている

どうも個人アプリ作家のTAKUYAです。 今回は、AI時代を開発者・クリエイター・表現者としてどう健やかに生きるか、について考えていることをシェアしたいと思います。ここでの「健やかに生きる」とは、心身の健康を保ちながら、ものづくりを楽しみ続けるという意味です。 読者の中にも、最近のAIの急速な進化の中でどう生き残り、さらに活躍していくかを悩んでいる方は多いのではないでしょうか。正直、すべてに対する正解はわかりません。未来を正確に予測できる人はいないからです。 でも自分は、ソフトウェア寄りのアーティストとして生きる上で大事なのは、「戦略」や「堀(moat)」を築くことよりも、「生きる方向性」 だと思っています。 人生とは速度ではなく方向である – ゲーテ 自分はどこに行きたいのか?何を見たいのか?それが大事です。戦略は状況に合わせて柔軟に変えればいいからです。 今回は、日本の文化からいくつかの生き方の原則を探ってみたいと思います。 最近、料理研究家の 土井善晴 さんの 「一汁一菜でよいという提案」 を読んで、日々のリズムを健やかに保つためのヒントがたくさん詰まっていると感じまし

By Takuya Matsuyama
Claude Codeをtmuxのポップアップウィンドウで継続的に走らせる方法

Claude Codeをtmuxのポップアップウィンドウで継続的に走らせる方法

💡本記事は英語ブログの日本語訳です。 どうも、TAKUYAです。 AIコーディングでは専らClaude Codeを使っています。最初はtmuxでターミナルの右側にペインを分割して使っていたのですが、幅が狭すぎてメッセージやdiffがまともに表示できず、使いづらかったです。 <Prefix>+zでペインを最大化すればいいのですが、毎回やるのは面倒でした。 そこで、ポップアップウィンドウでClaude Codeを起動するようにしました。キーバインドを押せばセッションが開き、閉じてもバックグラウンドで動き続けるので、すぐに再開できます。 この記事では、それを実現するためのtmuxの設定方法を紹介します。 動画で見る(英語): ポップアップウィンドウはサブプロセスを維持できない tmuxのdisplay-popupコマンドを使うとポップアップウィンドウを表示でき、ちょっとしたツールにすぐアクセスするのに便利です。 僕はlazygitでgitの状態をサッと確認するのに使っています: bind -r g display-popup -d '#{pane_current_path}'

By Takuya Matsuyama
Keychron K2 HEを無刻印化する手順

Keychron K2 HEを無刻印化する手順

どうもTAKUYAです。KeychronさんにK2 HEをお願いしたら音速で送ってくれたので、無刻印化してみました。どうやったのか過程をシェアします。 Unboxing 上はKeychron Q1です。これは3年間ぐらい使ってきました。キーキャップが若干くたびれていますね。でも問題なく今まで使えていました。そろそろ飽きてきたので新しいキーボードを試したいと思い、前から気になっていたK2 HEを試すことにしました(写真下)。 Amazon | 【国内正規品】Keychron K2 HE ラピッドトリガー ワイヤレス カスタムキーボード、ホールエフェクトGateronダブルレール・マグネットスイッチ、2.4GHz・Bluetooth無線対応、QMKプログラム可能、アルミ+ウッドフレーム、USレイアウト、RGBライト、Mac Windows Linux対応 (ブラック) | Keychron | パソコン用キーボード 通販【国内正規品】Keychron K2 HE ラピッドトリガー ワイヤレス カスタムキーボード、ホールエフェクトGateronダブルレール・マグネットスイッチ、

By Takuya Matsuyama
ノート駆動AIコーディング術の提案

ノート駆動AIコーディング術の提案

どうもTAKUYAです。みなさんはAIエージェントを普段のコーディングで活用されていますか。ちょっと面白いワークフローを思いついたのでシェアします。それは、ノート駆動のエージェンティック・コーディング・ワークフローです。最近Claude Codeのプランモードを使っていたら、ターミナル内で生成されたプランを読むのが辛かったんです。それで、じゃあMarkdownノートアプリであるInkdropをプランの保存先バックエンドとして使えば解決するんじゃないかと思って、 試してみました。こちらがそのデモです(英語): こちらがClaude Codeの設定ファイル群です: GitHub - inkdropapp/note-driven-agentic-coding-workflow at devas.lifeComplete Claude Code configuration collection - agents, skills, hooks, commands, rules, MCPs. Battle-tested configs from an Anthropic hackathon w

By Takuya Matsuyama