Stripe-PHP 7.37
オブジェクト間の関係
Stripeのカード番号等はSourceオブジェクトで管理されており。
SourceオブジェクトはCustomer(ユーザー)オブジェクトに紐づいている
Customer -> Source
ConnectでDirect Charge(Destination chargeではなく)をする場合は、CustomerがConnected Account(加盟店)に紐づくので、下記のような紐付け関係になる。
Account -> Customer -> Source
加盟店 -> ユーザー -> カード情報
つまり同じユーザーでも加盟店が異なる場合、Stripe上では別ユーザー扱いになる
加盟店A -> ユーザーB -> カード番号 C
加盟店B -> ユーザーB(Stripe上では上のユーザーと区別される) -> カード番号 C
Destination chargeで対応させるのであれば、加盟店ではなく、プラットフォーム側にユーザーが紐づくのでユーザーの情報管理に関してはシンプル。
(実装の都合に合わせてDestinationかDirectかを選択するのは本末転倒なのですが、一応)
蛇足
ユーザーに対してカード番号の一覧を見せるような画面では、加盟店ごとにデータを取得することになるので、表示の重複を避けるのであればview等で表示の集約が必要になる
CustomerとSourceの紐付け
カード番号とソースの紐付けは二通り
・CustomerオブジェクトのsourceをUpdate
・CustomerオブジェクトでcreateSource
ソースを紐づけると
Customer->sources->dataで内容が確認できる
(紐づける前だとsources->dataは空配列)
また、Customer->default_sourceでデフォルトで使用されるソースのIDが格納されている
sourceをUpdateする場合、今まで登録してたsourceが上書きされるイメージ
createSourceは公式ドキュメントにもあるように、createというよりattach(追加)
createSourceをしてもdefault_sourceは変わらないので注意ので手動でUpdateする必要がある