仮売上(オーソリ)を使ったサービス設計

本記事は仮売上(オーソリ)を使ったサービス設計 - Qiitaの再録です。 Qiitaの方はWebPay Advent Calendar 2013のものであるため当時の状態を維持し こちらの記事では最新の情報に合わせて加筆、編集を加えております。

突然ですが、みなさん、仮売上って知ってますか?

仮売上と通常の売上処理の違いとは一体何なのか、 『仮』という文字が付いている意味をまず解説して活用方法をご紹介したいと思います。

仮売上は、オーソリ(注)などと呼ばれることがあるクレジットカード決済の一つの機能です。

注: オーソリとはauthorization(オーソリゼーション)の略です

もともと仮売上やオーソリは、信用照会業務として偽造・盗難カードや期限切れのカードなどの不正利用を防止するためにある機能でした。しかし、最近ではサービス内にうまく組み込むことで決済業務に活用されています。

『仮』という文字からもこの処理が行われても売上が確定していないようなイメージを持たれると思います。実際にそのイメージは正しく、あくまで『仮』に計上された売上だと思って頂いて結構です。

クレジットカード所有者側から見たときの仮売上された状態とは、クレジットカード会社から付与された与信枠を確保された状態を指します。日本の一般的なクレジットカードには与信枠と呼ばれる利用限度額が設定されています。これは個人の収入状況や貯蓄によってクレジットカードカード会社が個別に設定しています。一種のクレジットスコアと考えてもいいでしょう。

次は、活用方法に進む前に仮売上のユースケースを確認しましょう。

もっとも身近で利用されている例は、ECサイトのユーザの購入処理から商品の発送業務へのフローの中でしょう。多くのECサイトではクレジットカード情報を入力して決済をすると購入金額で仮売上を行っています。ECサイトで発送準備を終えた際に、仮売上で計上していた売上を実際の売上に変更する処理(実売上化)を行っています。

オフラインの決済でも仮売上を活用している例があります。代表的なものはホテルのチェックインです。ホテルのチェックイン時にクレジットカードを求められた経験はありませんか?これは、ホテル側が宿泊者の支払い能力をチェックするために行っているものです。クレジットカードの有効性だけをチェックしたり、一定金額を仮売上として計上しておいてチェックアウト時に仮売上を取り消したりしています。

それでは本論に入って行きましょう。

仮売上の活用方法

仮売上の使いどころはユースケースからも推察されていると思いますが、まさに後払い化や信頼性の確保です。実際にクレジットカードで支払わない場合でも、クレジットカードの入力を求めることでユーザの実在性や本人性を確認することできるため、架空の登録や本人以外による登録を抑止するのに役立ちます。

実際には、物々交換やオークションサービスのようなサービスの設計に活用することで、信用度の低いユーザの排除を行うことができます。

また現地で現金支払が前提の座席の予約サービスのようなサービスでも、ユーザによる無断のキャンセルを抑制するために使うことができるでしょう。これを応用すると、アテンド : ATNDのようなサービスで問題になる無断欠席を抑止することにも利用できそうですね。

WebPayで仮売上を使う

最後にWebPayで仮売上をする方法を紹介したいと思います。

1
2
3
4
5
6
7
8
9
10
curl "https://api.webpay.jp/v1/charges" \
-u "test_secret_eHn4TTgsGguBcW764a2KA8Yd": \
-d "amount=1000" \
-d "currency=jpy" \
-d "card[number]=4242-4242-4242-4242" \
-d "card[exp_month]=11" \
-d "card[exp_year]=2017" \
-d "card[cvc]=123" \
-d "card[name]=SOWASOWA SOWAWA" \
-d "capture=false"

これだけです。とっても簡単ですね。(「えっ!?」「curlが入ってない?」Ruby, PHP をはじめとしたいろんなプログラミング言語をつかってもできるのでWebPayのドキュメントを参考にプログラムを書いてみましょう)

次は仮売上を無効化する方法です。

1
2
3
curl "https://api.webpay.jp/v1/charges/{charge_id}/refund" \
-u "test_secret_eHn4TTgsGguBcW764a2KA8Yd": \
-X POST -H 'Content-Length: 0'

{chargeid} には一つ目を実行した時に取得したJSONの`ch*********`を入力しましょう。

最後は、仮売上を実際の売上として計上する方法です。

1
2
3
curl "https://api.webpay.jp/v1/charges/{charge_id}/capture" \
-u "test_secret_eHn4TTgsGguBcW764a2KA8Yd": \
-X POST -H 'Content-Length: 0'

すでに仮売上を無効化してしまった人は1つ目をもう一度実行して仮売上を行ってから売上として計上してみましょう。

参考