Chapter 24

on_behalf_of

Toru Furukawa
Toru Furukawa
2021.12.24に更新
このチャプターの目次

Payment Intent に on_behalf_of というプロパティがある。

The account (if any) for which the funds of the PaymentIntent are intended.

とある。ちょっと、何言ってんのか分からない。

Acquirer

一度、ふりだしに戻ろう。最も高い抽象レベルでは、Buyer が Seller に支払う、という取引がある。

Buyer ---> Seller

クレジットカードが介在すると、下図のようになる。

Buyer     Seller
Card ---> Bank

ここで Acquirer と Issuer というプレイヤーを考える。

Acquirer(アクワイアラー、加盟店契約会社)は、クレジットカードによる 支払いを受け取る側の事業者 を、審査して管理する。

Issuer(イシュアー、カード発行会社)は、支払いする側 を審査し、クレジットカードを発行する会社だ。

Buyer           Seller
Card            Bank
  |               ^
  v               |
Issuer  ----->  Acquirer

Stripe は、これらの資金フローを代行する。

Buyer           Seller
Card            Bank
  |               ^
  v               |
Payment Method  Account
  |               ^
  v               |
Issuer  ----->  Acquirer

Isser 内部では、Buyer をカードホルダーとして管理している。Acquirer は、Seller を Merchant(加盟店)として管理している。だから、だからオブジェクト的にみると、下図のようになる。

Buyer            Seller
Card             Bank
  |                ^
  v                |
Payment Method   Account
  |                ^
  v                |
Card Holder ---> Merchant

Connect

Connect の場合は、Platform と Seller がいるので、下図の関係になる。

Buyer             Platfrom            Seller
Card              Bank                Bank
  :                :                    :
Payment Method    Platform Account    Connected Account
  :                :                    :
Card Holder       Merchant            Merchant

Connected Account の card_payments capability が有効になった時点で、Visa/Mastercard/Amex の Acquirer は、Seller を Merchant として管理している。

Connected Account の jcb_payments capability が有効になった時点で、JCB/Discover/Diners の Acquirer は、Seller を Merchant として管理している。

on_behalf_of

ここで on_behalf_of である。

Payment Intent を on_behalf_of なしで呼び出すと、Issuer と Acquirer のレベルでは、Platform による決済処理として処理する。明細書表記も Platform の設定が使われる。

Buyer             Platfrom            Seller
Card              Bank                Bank
  |
  v
Payment Method    Platform Account    Connected Account
  |                ^
  v                |
Card------------->Merchant            Merchant

Payment Intent を on_behalf_of ありで呼び出すと、Issuer と Acquirer のレベルでは、Seller による決済処理として処理する。明細書表記も Seller による設定が使われる。ただしその資金は、Platform Account 残高に入る。

Buyer             Platfrom            Seller
Card              Bank                Bank
  |
  v
Payment Method    Platform Account    Connected Account
  |                       ^
  |                       |
  |                       +-------------+
  v                                     |
Card              Merchant            Merchant
  |                                     ^
  |                                     |
  +-------------------------------------+

on_behalf_of の設定に関わらず、Stripe 内のデータや資金フローは同じだ。ただし Stripe の外側のフローが異なる。

on_behalf_of をつける・つけないの基準は、カードホルダーが誰からサービス提供を受けて支払うのか、だ。

遠隔診療のプラットフォームだったら、Seller = 病院がサービスを提供し、プラットフォームはマッチングをするだけかも知れない。だったら on_behalf_of を使うことになるだろう。

映画・ドラマ見放題みたいな場合、月会費はそのサービスに支払っているのであって、各コンテンツプロバイダーに払うわけじゃない。そういうのは、カードホルダーには見えないところで、勝手にやる。だから on_behalf_of を使わないだろう。

まとめ

on_behalf_of を見てきた。明日で最終日なんだけど、ネタ切れで書くことがない。