Gumroad progress


先日も紹介した Gumroad、衝撃的なデビューからしばらく経って口のにも上らなくなってきたけれど、この四ヶ月の間に着々と進化している。先日はこのブログでも画面内決済を可能にするウィジェット「Gumroad modal」を紹介したけれど、他にも重要な機能が追加されていて、Paypal の Digital Goods フローをそろそろ超えてくるのではないか、いや、後述する webhooks を使った WordPress 用のプラグインなんかが出てきたりすると単体ファイル販売のスタンダードすら狙えるのではないか、なんて思ってしまうほどのサービスになっている。機能が増えているのにサービスの設計はシンプルなままだ。センスがいいんだな。

注目したいのは「クレジットカード情報の保持」と「webhooks」対応だろう。

5月2日にアナウンスされたクレジットカード情報の保持は 、Web アプリケーション開発のテーマとしてはセキュリティの確保ぐらいしか語る部分がないけれど、半日もあれば実装できるような機能をつけるのに三ヶ月待たせるわけがない。2月の段階ではカードの番号保存を行っていなかったので、ポリシーとしてやらないのかと思っていたら、違った。

It is certified to PCI Service Provider Level 1. This is the most stringent level of certification available.

We can now remember your credit card for you! Gumroad blog

Gumroad は PCI Service Provider Level 1 を取得していた。同じフィーチャーのサービスを立ち上げてみせて「ほら簡単じゃない」とかやってた人たちもいたけれど、Level 1 はシャレで取れる認定じゃない。 AWS が取得をリリースするような認定だ(このリリースはISO 27001も含むけどね)。これで、Visaなどのクレジット企業との交渉も楽になるのだろうね。設備とスタッフ、サービスが充分に小さな段階で認証を通したのも賢い。リアルな店舗がある小売業がとろうとすると50万ドルかかることもあるようだ。きっとシードで投資してくれた大人たちが勧めてくれたのだろうけど、投資家や事業立ち上げを手伝ってくれている人たちといい関係があるのだろうな。

ブログにこれが載った直後、5月7日にGumroadは追加 7百万ドルの調達に成功している。これで、日本円にして6億円程度の資金が入ったことになる。まだ彼は19歳だ。どこまでチャレンジしていくのだろう。楽しみだ。

もう一つの webhooks は4月にβを行っていたが、いつのまにか使えるようになっていた。Webhooks はなぜかリソースが少ないのだけど、Web アプリケーション間で通信を行うのにちょっと便利な方法だ。 Githubが使っているし、Wordpress にも内蔵されていたりするけれどあまりに簡単なサーバー間コミュニケーションなのでドキュメントも必要ないぐらいではある。Gumroad でリンクのオプションに Webhooks が指定されると、Gumroadはダウンロード先 URL にメールアドレス(email)と購入金額(price in centsとあるけど飛んできてないかも……)を body に含めて POST する。Webhooks のレシーバーはGumroadからのアクセスだけ受けるようにすればいい。URL が漏洩したときのことを考えてもマーチャント側が.htaccessを設定するだけで少しだけ安全になる設計にセンスを感じるね。

Gumroad webhooks API

簡単なフローは以下のような感じ。実際に処理を行うURLはユーザーに明かさなくてもいい。

  1. 購入者:購入ボタンをクリック
  2. Gumroad:GumroadからWebhooksで指定したURL[A]にPOST
  3. Webhooks処理アプリ:ResponseとしてURL[B]を返す
  4. Gumroad:トラザクションIDが含まれたURL[C]を表示
  5. 購入者:URL[C]をクリック
  6. Gumroad:URL[C]→URL[B]へリダイレクト
  7. 購入者:販売元が発行したURL[C]でアイテムを取得

受け取るアプリケーションはシリアライズされた URL を返すもよし、データベースにメールアドレスを格納するもよし、とにかく購入者がクリックできるURLさえ渡せればいいので、Gumroad の弱点であった購入 URL の漏洩にも対処できるだろう。
最低限のコードはこんな感じかな。

<?php
$str = file_get_contents(“php://input”); /*$strにbodyを格納*/
header(‘HTTP/1.1 200 OK’);
HttpResponse::setContentType(‘text/plain’);
HttpResponse::setData(‘http://hoge.fuga/?’.$str); /*URL作成*/
HttpResponse::send();
?>

昨日Webサイトを公開した Gene Mapper は複数の販売チャネルで売るつもりだが、ダイレクトセールスに相当する Web からの直販は Gumroad で行う方向に固まりつつある。だれか現仕様の Gumroad WordPress Plug-in 作ってくれないかな。

This post is also available in: 英語

2件のコメント

コメントを残す

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

Optimization WordPress Plugins & Solutions by W3 EDGE