ScalarDL エスクロー支払い CLI
このページは英語版のページが機械翻訳されたものです。英語版との間に矛盾または不一致がある場合は、英語版を正としてください。
以下は、ScalarDL を試してテストするための簡単な Java CLI アプリケーションです。 CLI フレームワークとして PicoCLI が使用されます。
ScalarDL には複数の言語のサポートと SDK があります。 この例ではJAVAが使用されています。
これは単なるサンプル プロジェクトであるため、すべてのコマンドは Gradle 経由で実行できます。 これは本番環境に対応した例ではなく、学習資料としてのみ提供されています。
どのコマンドが実行されているかを確認するには、前述の Makefile コマンドと ScalarDL の公式ドキュメントを確認してください。
導入
預託
口座 A から口座 B に資金を直接送金する代わりに、仲介口座が導入されます。 両当事者が取引の完了に同意するまで、資金はこの仲介口座にロックされます。 何か問題が発生した場合、問題が解決されるまで買い手と売り手の両方が資金にアクセスできなくなります。
以下は典型的なエスクロー支払いフローです。
- アカウント A を持つ登録購入者は、アカウント B を持つ登録販売者から商品を購入します。
- 注文エントリが作成され、注文は
open
ステータスに設定されます。 - 両当事者間でエスクローアカウントが作成されます。
- アカウント A に入金され、資金がエスクロー口座に移動されます。
- 販売者は注文を更新し、パッケージの発送を通知します。
- 注文が更新され、
shipped
ステータスに設定されます。 - パッケージを受け取った後、購入者は注文を更新し、受信済みとしてマークします。
- エスクロー口座に入金され、資金が口座 B に移動されます。
- 注文はクローズされ、ステータスが
complete
とマークされます。
注文のキャンセルは可能ですが、注文がまだ open
ステータスにある場合に限ります。 後に
商品が発送された後、現在の実装では注文をキャンセルすることはできません。
特徴
この CLI アプリケーションは、エスクロー支払いフローをシミュレートするための最も重要なアクションを提供します。 データの検索と監視のために追加のアクションがサポートされています。
次のアクションがサポートされています。
アカウント
- 新しいアカウントを登録する
- 資金の追加、チャージ、アカウント
- アカウント履歴の表示
アイテム
- 新しいアイテムを登録する
- アイテムの詳細を表示
注文
- 新しい注文を作成する
- 注文を発送済みとしてマークする
- 受領済みとしてマークして注文する (注文を完了する)
- 注文をキャンセルする
- 注文履歴の表示
エスクローアカウント
- エスクローアカウント履歴の表示
前提条件
- Docker
- Makefile
- Java
設定
ScalarDL
ScalarDL サーバーを起動するコードは、このリポジトリには含まれていません。 ScalarDL をすぐに起動して実行するには、次のリポジトリ のクローンを作成し、ScalarDL の使用を開始するためのコマンドに従ってください。
証明書
証明書の例が使用されていますが、例としては十分です。 証明書は make register-certificate
経由でロードできます。
コントラクト
すべてのコントラクト名には接尾辞が追加されます。 これは証明書所有者の名前で、この場合は foo
です。 これは必須ではなく、コントラクト名が一意であることを確認するためにのみ行われます。
コントラクトは make register-contracts
を通じてロードできます。
クライアント SDK
Java クライアント SDK が動作するには、 client.properties
ファイルが必要です。 現在、ScalarDL サンプル プロジェクトと同じ設定が使用されています。
テストシナリオ
実際の支払いと注文キャンセルのフローを確認するために、2 つのテスト シナリオの例が提供されています。
シナリオは、make run-complete-order-scenario
および make run-cancel-order-scenario
によって実行できます。
使用法
建てる
アプリケーションは、./gradlew build
を介して、または make build
Makefile コマンドを実行することによってビルドできます。
CLI コマンド
アカウント
CLI を介したアカウントの管理。
アカウントを作成する
文字列で何でもよい id
を指定して、新しいアカウントを作成します。 アカウントの balance
は 0 に設定され、created_at
は現在のタイムスタンプに自動的に設定されます。
コマンド
./gradlew run --args="account add -id <account id> -n <name>"
アカウント履歴の表示
アカウント履歴を取得します。
コマンド
./gradlew run --args="account view -id <account id>"
チャージアカウント
アカウントの残高に資金を追加します。
コマンド
./gradlew run --args="account charge -id <account id> -a <amount>"
アイテム
CLI を介したアイテムの管理。
アイテムの作成
id
、price
、seller
(アカウント ID)、およびアイテムの name
を指定して、新しいアイテムを作成します。
コマンド
./gradlew run --args="item add -id <item id> -p <price> -s <seller account id -n <item name>"
アイテムの表示
アイテムの詳細を見る
コマンド
./gradlew run --args="item view -id <item id>"
注文
CLI を介した注文の管理。
注文の作成
id
、item id
、およびアカウント ID である buyer
を指定して、新しい注文を作成します。
コマンド
./gradlew run --args="order add -id <order id> -b <buyer account id> -i <item id>"
注文をキャンセルする
現在 open
ステータスにある注文をキャンセルします。 他の州では注文をキャンセルできなくなります。 account id
は必須であり、検証されます。 注文が指定されたアカウントに属していない場合、注文をキャンセルすることはできません。
コマンド
./gradlew run --args="order cancel -id <order id> -a <account id>"
注文アイテムを発送済みとしてマークする
販売者として注文を更新し、商品が発送されたことを購入者に通知します。
コマンド
./gradlew run --args="order shipped -id <order id> -s <seller account id>"
注文アイテムを受領済みとしてマークする
購入者として注文を更新し、商品が受け取られたことを販売者に通知します。 ご注文が完了となります。
コマンド
./gradlew run --args="order received -id <order id> -b <buyer account id>"
注文履歴の表示
1 つの注文の履歴を表示します。
コマンド
./gradlew run --args="order view -id <order id>"
エスクローアカウント
CLI を介したエスクロー アカウントの管理。
エスクローアカウント履歴の表示
買い手と売り手の間の特定のエスク ロー口座のアクティビティと更新履歴を表示します
コマンド
./gradlew run --args="escrow view -b <buyer account id> -s <seller account id>"