Slide 1

Slide 1 text

Session Title Pragmatic Practices of Mercoin Payment Platform メルコイン決済基盤の実践話 foghost Engineering Head of Merpay Value Circulation Platform

Slide 2

Slide 2 text

Junwei Liang / @foghost 2016年11月メルカリ入社、メルペイ立ち上げ時期か ら、 決済基盤の開発に携わってきた。 現在、Engineering HeadとしてValue Circulation Platformチームでメルカリグループの各事業を支える ためのビジネス基盤サービスの開発・運用を担当して いる。 株式会社メルペイ Engineering Head of Value Circulation Platform

Slide 3

Slide 3 text

Vision of Value Circulation Platform Provide a foundation as a product that is the best choice for product teams プロダクトチームにとってベストチョイスの基盤 をプロダクトとして提供する

Slide 4

Slide 4 text

Agenda 01 02 03 04 全体概要の紹介 台帳管理 決済処理 帳簿管理

Slide 5

Slide 5 text

Payment Platform Overview 決済処理 メルペイ 各種決済 台帳管理 帳簿管理 Product Services Foundation / Value Circulation Platform メルカリフリマ External Services 暗号資産取引 サービス Mercoin Payment Platform メルカリShops Merpay Payment Platform 決済処理 精算 台帳管理 外部接続 銀行 パートナーさま クレカなどの GW業者さま

Slide 6

Slide 6 text

決済とは さまざまな 経済取引 において 参加者達 の お財布 を操作して、 価値の移転・交換を行う

Slide 7

Slide 7 text

メルコインにおける決済 暗号資産取引 において お客さま の 取引口座、暗号資産口座などの財布 を操作して、価値の移転・交換を行う

Slide 8

Slide 8 text

台帳管理 口座・価値の管理

Slide 9

Slide 9 text

お客さまの口座 ¥ Trading Funds Account (JPY) 取引口座 B Crypto Account (BTC) 暗号資産口座 Mercoin Accounts Merpay Accounts Points Account メルカリポイント口座 P ¥ Funds Account メルペイ資金移動口座

Slide 10

Slide 10 text

台帳への記帳方法 - 単式 決済サービス 台帳サービス - 1000円 メルカリポイント Point Account メルカリポイント口座 P +2000円分 = ? + ? 暗号資産(BTC)残高 - 1000円 取引口座残高 ¥ Trading Funds Account (JPY) 取引口座 B Crypto Account (BTC) 暗号資産口座 メルペイ 決済サービス

Slide 11

Slide 11 text

単式記帳 ● 取引におけるお金の移動について、移動元口座と移動先 口座を単独で操作して記帳される ● 台帳の観点からは、ある口座のお金がどこから入って、 どこへ出たのが追跡できない (上流の決済サービスの データが必要)

Slide 12

Slide 12 text

+1000円分 暗号資産(BTC)残高 台帳への記帳方法 - 複式 決済サービス 台帳サービス - 1000円 メルカリポイント - 1000円 取引口座残高 -1000円分 メルカリポイント預かり金 +1000円分 暗号資産(BTC)残高 ¥ B Trading Funds Account (JPY) 取引口座 Crypto Account (BTC) 暗号資産口座 Point Account メルカリポイント口座 P メルペイ 決済サービス

Slide 13

Slide 13 text

複式記帳 ● 取引におけるお金の移動について、移動元口座と移動 先口座必ずセットで操作して記帳される ● 台帳の観点からは、お金の出入れについて、移動元と移 動先がわかるように追跡される

Slide 14

Slide 14 text

Exchange Account (Source) 取引口座 Account (Target) 暗号資産口座 AccountLog AccountSnapshot AccountItem AccountItemLog - 1000円 取引口座残高 +1000円分 暗号資産(BTC)残高 AccountLog AccountSnapshot AccountItem AccountItemLog メルコイン台帳サービス(複式記帳) Transaction Layer Account Layer

Slide 15

Slide 15 text

メルカリポイント預かり金口座とは?

Slide 16

Slide 16 text

記帳用で実体がない口座 ¥ Deposit Account 預かり金口座 (メルカリポイント) Internal Accounts ¥ Deposit Account 預かり金口座 (メルペイ残高) ¥ 〇〇 Account 〇〇 費用負担口座

Slide 17

Slide 17 text

Configurable Value Account ¥ Trading Funds Account 取引口座 B Crypto Account 暗号資産口座 ¥ Deposit Account 預かり金口座 レート追跡あり Log Only 有効期限なし 自動作成しない 自動作成 属性 挙動 ? New Account 新しい口座種別 Log Only Configurable attributes with less code to support new account 有効期限なし

Slide 18

Slide 18 text

決済処理 価値交換

Slide 19

Slide 19 text

価値交換(Exchange) API お客さま お客さま ¥ B 仮処理 CreateExchange 各種口座 (N) 仮売上 状態 確定処理 CaptureExchange P ¥ B ある口座 (1) ¥ 即時確定 CreateExchange (capture=true)

Slide 20

Slide 20 text

BTC購入 お客さま お客さま ¥ 仮処理 CreateExchange 取引口座 仮売上 状態 確定処理 CaptureExchange P B 暗号資産(BTC)口座 メルカリポイント口座

Slide 21

Slide 21 text

BTC売却 お客さま お客さま B 仮処理 CreateExchange 暗号資産(BTC)口座 仮売上 状態 確定処理 CaptureExchange ¥ 取引口座

Slide 22

Slide 22 text

分散トランザクションの管理 マイクロサービスにおける決済トランザクション管理 メルコイン決済基盤における分散トランザクション管理

Slide 23

Slide 23 text

Orchestration-based Saga with Workflow SDK Activity: 決済データ保存 wf.Activity(PrepareExchange, req).Execute(ctx) Activity: 取引残高消費 wf.Activity(PayFunds, 1000).Execute(ctx) Activity: メルカリポイント決済 wf.Activity(PayPoint, 500).Execute(ctx) Activity: 決済結果保存 wf.Activity(Update, id).Execute(ctx) Activity: 決済通知 wf.Activity(Notify, id).Execute(ctx) Activity 取引残高消費取消 Activity メルカリポイント決済取消 補償処理 wf.Workflow(CreateAndAuthExchange, request).Execute(ctx) Compensate Compensate

Slide 24

Slide 24 text

マイクロサービスを跨いだ整合性担保 決済処理 サービス 台帳管理 サービス メルペイ決済基盤 暗号資産取引 サービス call merpay API BFF Service ProcessingTracer Distributed Processing Tracing Single Source of Truth for confirming the final results across multiple services Processing Participant Services Consistency Reports 取引リクエスト call API with ProcessingID call API with ProcessingID 1. RegisterProcessing 2. Participant Notification 4. ConsistencyReport ConsistencyReport 3. Reconcile Reconcile Reconcile 帳簿管理 サービス Reconcile call API with ProcessingID

Slide 25

Slide 25 text

帳簿管理 会計・法定帳簿

Slide 26

Slide 26 text

帳簿 と 台帳の定義の違い (独自) ● 台帳 ○ プロダクトサイド向けにお客さまが持ってる口座の価値の増減、移 動の管理をやってるのが台帳と定義する ● 帳簿 ○ それ以外の目的で、お金の変動、流れを記録するものを帳簿と定 義する ○ 会計帳簿: 会計処理するための帳簿データ ○ 法定帳簿: 法定要件に定められている帳簿データ どちらも取引におけるお金の変動、流れを記録するため

Slide 27

Slide 27 text

会計帳簿連携 - メルペイ 決済サービス 台帳サービス 会計サービス 外部接続 サービス QR決済 決済リクエスト 会計イベント 会計イベント 会計イベント 単式記帳 口座操作・記帳 リクエスト 外部決済 リクエスト

Slide 28

Slide 28 text

課題 ● 各MSから必要に応じて、会計システムと連携することなるた め、開発と運用に一定の会計のドメイン知識が必要 ○ 特に決済サービスのところは、決済種別ごとに会計データ の連携が少し異なるため、開発・運用コストが高い ● 単式記帳を採用した台帳サービスは会計データ連携にはデー タが足りてない ● 台帳と会計帳簿のリコンサイルの仕組み化が難しい

Slide 29

Slide 29 text

会計帳簿連携 - メルコイン 決済サービス 台帳サービス 帳簿サービス (会計帳簿) メルペイ サービス 暗号資産取引 サービス 取引リクエスト 複式記帳 口座操作・記帳 リクエスト メルペイ決済 リクエスト 会計イベント

Slide 30

Slide 30 text

特徴 ● 複式記帳を採用した台帳管理の仕組みを利用して、台帳サー ビスのレイアから会計データ連携が可能になった ● 関連MSから会計連携の責務を外して、会計のこと意識しなく ても開発・運用できる ● 確定された台帳データをベースに会計帳簿へデータ連携する ため、台帳と会計帳簿のリコンサイルの仕組み化がより簡単 にできる

Slide 31

Slide 31 text

法定帳簿 - メルコイン 暗号資産交換業における法定要件を満たすための 帳簿データの集計と管理 ● 顧客・自己注文伝票 ● 顧客・自己勘定元帳 ● 分別管理表 ● など

Slide 32

Slide 32 text

法定帳簿 メルコイン 決済サービス 台帳サービス 帳簿サービス (法定帳簿) メルペイ サービス 暗号資産取引 サービス 決済リクエスト 複式記帳 口座操作・記帳 リクエスト メルペイ決済 リクエスト 注文データ 台帳データ

Slide 33

Slide 33 text

まとめ

Slide 34

Slide 34 text

● 複式記帳手法を採用した新しい台帳サービスの開発 ● 汎用的に利用できる価値交換決済機能を提供する決済 サービスの開発 ○ 分散型システムにおける整合性担保のための新しい取り組み ● 会計及び法定帳簿を管理する帳簿サービスの開発 メルコイン決済基盤

Slide 35

Slide 35 text

これからのチャレンジ ● メルコインでの実践経験をまた活かして、メルペイ決済 基盤も進化させていく ● 組織横断で台帳・帳簿・決済のドメインコンポーネントが 共通化できるシステム設計に挑戦

Slide 36

Slide 36 text

No content