Subaccounts APIを使う

概要

このトピックでは、パートナーがSubaccounts APIを使用してエンドカスタマーをうまく管理するユースケースについて説明します。

前提条件

を熟知している必要がある。 メインコンセプト Subaccounts API に関連付けられます。

サブアカウントの作成

パートナーはエンドカスタマーごとにSubaccountを作成し、エンドカスタマーごとに異なるAPIクレデンシャルを使用し、その支出を見ることができます。これは以下の図に示されている:

Subaccounts with shared balance

Subaccountsを作成するには、以下のコードを使用します:

コードを書く

create-subaccount.sh に以下を追加する:

curl -X "POST" "https://api.nexmo.com/accounts/$VONAGE_API_KEY/subaccounts" -u $VONAGE_API_KEY:$VONAGE_API_SECRET   \
     -H "Content-Type: application/json"  \
     -d $'{"name":"'$NEW_SUBACCOUNT_NAME'", "secret":"'$NEW_SUBACCOUNT_SECRET'"}'

全文を見る

コードを実行する

このファイルをあなたのマシンに保存し、実行する:

bash create-subaccount.sh

前提条件

npm install @vonage/subaccounts

create-subaccount.js という名前のファイルを作成し、以下のコードを追加する:

const { SubAccounts } = require('@vonage/subaccounts');

const subAccountClient = new SubAccounts({
  apiKey: VONAGE_API_KEY,
  apiSecret: VONAGE_API_SECRET,
});

全文を見る

コードを書く

create-subaccount.js に以下を追加する:

subAccountClient.createSubAccount({
  name: NEW_SUBACCOUNT_NAME,
  secret: NEW_SUBACCOUNT_SECRET,
})
  .then((newSubAccount) => console.log(newSubAccount))
  .catch((error) => console.error(error));

全文を見る

コードを実行する

このファイルをあなたのマシンに保存し、実行する:

node create-subaccount.js

前提条件

build.gradle に以下を追加する:

implementation 'com.vonage:server-sdk-kotlin:2.1.1'

CreateSubaccount という名前のファイルを作成し、main メソッドに以下のコードを追加する:

val client = Vonage {
    apiKey(VONAGE_API_KEY)
    apiSecret(VONAGE_API_SECRET)
}

全文を見る

コードを書く

CreateSubaccount ファイルのmain メソッドに以下を追加する:

val subaccount = client.subaccounts.createSubaccount(
    name = SUBACCOUNT_NAME,
    secret = SUBACCOUNT_SECRET
)

全文を見る

コードを実行する

Gradle用のアプリケーション プラグインを使うことで、アプリケーションの実行を簡単にすることができます。build.gradle を以下のように更新する:

apply plugin: 'application'
mainClassName = project.hasProperty('main') ? project.getProperty('main') : ''

以下のgradle コマンドを実行し、com.vonage.quickstart.kt.subaccountsCreateSubaccount を含むパッケージに置き換えてアプリケーションを実行する:

gradle run -Pmain=com.vonage.quickstart.kt.subaccounts.CreateSubaccount

前提条件

build.gradle に以下を追加する:

implementation 'com.vonage:server-sdk:9.3.1'

CreateSubaccount という名前のファイルを作成し、main メソッドに以下のコードを追加する:

VonageClient client = VonageClient.builder()
		.apiKey(VONAGE_API_KEY)
		.apiSecret(VONAGE_API_SECRET)
		.build();

全文を見る

コードを書く

CreateSubaccount ファイルのmain メソッドに以下を追加する:

Account subaccount = client.getSubaccountsClient().createSubaccount(
		CreateSubaccountRequest.builder()
			.name(SUBACCOUNT_NAME)
			.secret(SUBACCOUNT_SECRET)
			.build()
);

全文を見る

コードを実行する

Gradle用のアプリケーション プラグインを使うことで、アプリケーションの実行を簡単にすることができます。build.gradle を以下のように更新する:

apply plugin: 'application'
mainClassName = project.hasProperty('main') ? project.getProperty('main') : ''

以下のgradle コマンドを実行し、com.vonage.quickstart.subaccountsCreateSubaccount を含むパッケージに置き換えてアプリケーションを実行する:

gradle run -Pmain=com.vonage.quickstart.subaccounts.CreateSubaccount

前提条件

Install-Package Vonage

CreateSubAccountRequest.cs という名前のファイルを作成し、以下のコードを追加する:

using Vonage;
using Vonage.Request;

全文を見る

CreateSubAccountRequest.cs に以下を追加する:

var credentials = Credentials.FromApiKeyAndSecret(VONAGE_API_KEY, VONAGE_API_SECRET);
var client = new VonageClient(credentials);

全文を見る

コードを書く

CreateSubAccountRequest.cs に以下を追加する:

var request = Vonage.SubAccounts.CreateSubAccount.CreateSubAccountRequest.Build()
    .WithName(NEW_SUBACCOUNT_NAME)
    .WithSecret(NEW_SUBACCOUNT_SECRET)
    .Create();
var response = await client.SubAccountsClient.CreateSubAccountAsync(request);

全文を見る

前提条件

composer require vonage/client

create-subaccount.php という名前のファイルを作成し、以下のコードを追加する:


$basic = new \Vonage\Client\Credentials\Basic(VONAGE_API_KEY, VONAGE_API_SECRET);
$client = new \Vonage\Client($basic);

全文を見る

コードを書く

create-subaccount.php に以下を追加する:

$account = new \Vonage\Subaccount\SubaccountObjects\Account();
$account->setName(NEW_SUBACCOUNT_NAME);
$account->setSecret(NEW_SUBACCOUNT_SECRET);

$client->subaccount()->createSubaccount(VONAGE_API_KEY, $account);

全文を見る

コードを実行する

このファイルをあなたのマシンに保存し、実行する:

php create-subaccount.php

前提条件

pip install vonage python-dotenv

コードを書く

create-subaccount.py に以下を追加する:

from vonage import Auth, Vonage
from vonage_subaccounts import NewSubaccount, SubaccountOptions

client = Vonage(Auth(api_key=VONAGE_API_KEY, api_secret=VONAGE_API_SECRET))

response: NewSubaccount = client.subaccounts.create_subaccount(
    SubaccountOptions(name=SUBACCOUNT_NAME, secret=SUBACCOUNT_SECRET)
)

print(response)

全文を見る

コードを実行する

このファイルをあなたのマシンに保存し、実行する:

python subaccounts/create-subaccount.py

前提条件

gem install vonage

create-subaccount.rb という名前のファイルを作成し、以下のコードを追加する:

client = Vonage::Client.new(
  api_key: VONAGE_API_KEY,
  api_secret: VONAGE_API_SECRET
)

全文を見る

コードを書く

create-subaccount.rb に以下を追加する:

client.subaccounts.create(
  name: NEW_SUBACCOUNT_NAME,
  secret: NEW_SUBACCOUNT_SECRET
)

全文を見る

コードを実行する

このファイルをあなたのマシンに保存し、実行する:

ruby create-subaccount.rb

単位移行

パートナーは、エンドカスタマーがすべて同じ残高を共有していたため、エンドカスタマー間の支出を管理できませんでした。あるエンドカスタマーが、共有残高をすべて消費してしまうことがあり、他のパートナーのエンドカスタマーのVonage APIへのアクセスを事実上ブロックしていました。パートナーは個別の残高を設定し、そのエンド顧客にクレジット・リミットを割り当てることにしました。

注: パートナーは口座を前払いにすることもできたはずだ。

各Subaccountには、以下の図に示すように、個別の残高と与信限度額を割り当てることができる:

Credit allocation

次のコード・スニペットは、指定されたクレジット額を Subaccount に割り当てる例です:

コードを書く

transfer-credit.sh に以下を追加する:

curl -X "POST" "https://api.nexmo.com/accounts/$VONAGE_API_KEY/credit-transfers" -u $VONAGE_API_KEY:$VONAGE_API_SECRET   \
     -H "Content-Type: application/json"  \
     -d $'{"from":"'$VONAGE_API_KEY'", "to":"'$SUBACCOUNT_KEY'", "amount": '$AMOUNT'}'

全文を見る

コードを実行する

このファイルをあなたのマシンに保存し、実行する:

bash transfer-credit.sh

前提条件

npm install @vonage/subaccounts

transfer-credit.js という名前のファイルを作成し、以下のコードを追加する:

const { SubAccounts } = require('@vonage/subaccounts');

const subAccountClient = new SubAccounts({
  apiKey: VONAGE_API_KEY,
  apiSecret: VONAGE_API_SECRET,
});

全文を見る

コードを書く

transfer-credit.js に以下を追加する:

subAccountClient.transferCredit({
  from: VONAGE_API_KEY,
  to: SUBACCOUNT_KEY,
  amount: AMOUNT,
})
  .then((creditTransfer) => console.log(creditTransfer))
  .catch((error) => console.error(error));

全文を見る

コードを実行する

このファイルをあなたのマシンに保存し、実行する:

node transfer-credit.js

前提条件

build.gradle に以下を追加する:

implementation 'com.vonage:server-sdk-kotlin:2.1.1'

TransferCredit という名前のファイルを作成し、main メソッドに以下のコードを追加する:

val client = Vonage {
    apiKey(VONAGE_API_KEY)
    apiSecret(VONAGE_API_SECRET)
}

全文を見る

コードを書く

TransferCredit ファイルのmain メソッドに以下を追加する:

val receipt = client.subaccounts.transferCredit(
    from = VONAGE_API_KEY,
    to = SUBACCOUNT_KEY,
    amount = SUBACCOUNT_CREDIT_AMOUNT
)

全文を見る

コードを実行する

Gradle用のアプリケーション プラグインを使うことで、アプリケーションの実行を簡単にすることができます。build.gradle を以下のように更新する:

apply plugin: 'application'
mainClassName = project.hasProperty('main') ? project.getProperty('main') : ''

以下のgradle コマンドを実行し、com.vonage.quickstart.kt.subaccountsTransferCredit を含むパッケージに置き換えてアプリケーションを実行する:

gradle run -Pmain=com.vonage.quickstart.kt.subaccounts.TransferCredit

前提条件

build.gradle に以下を追加する:

implementation 'com.vonage:server-sdk:9.3.1'

TransferCredit という名前のファイルを作成し、main メソッドに以下のコードを追加する:

VonageClient client = VonageClient.builder()
		.apiKey(VONAGE_API_KEY)
		.apiSecret(VONAGE_API_SECRET)
		.build();

全文を見る

コードを書く

TransferCredit ファイルのmain メソッドに以下を追加する:

MoneyTransfer receipt = client.getSubaccountsClient().transferCredit(
		MoneyTransfer.builder()
			.from(VONAGE_API_KEY).to(SUBACCOUNT_KEY)
			.amount(SUBACCOUNT_CREDIT_AMOUNT).build()
);
System.out.println("Transfer successful: "+receipt.getId());

全文を見る

コードを実行する

Gradle用のアプリケーション プラグインを使うことで、アプリケーションの実行を簡単にすることができます。build.gradle を以下のように更新する:

apply plugin: 'application'
mainClassName = project.hasProperty('main') ? project.getProperty('main') : ''

以下のgradle コマンドを実行し、com.vonage.quickstart.subaccountsTransferCredit を含むパッケージに置き換えてアプリケーションを実行する:

gradle run -Pmain=com.vonage.quickstart.subaccounts.TransferCredit

前提条件

Install-Package Vonage

TransferCreditRequest.cs という名前のファイルを作成し、以下のコードを追加する:

using Vonage;
using Vonage.Request;
using Vonage.SubAccounts.TransferAmount;

全文を見る

TransferCreditRequest.cs に以下を追加する:

var credentials = Credentials.FromApiKeyAndSecret(VONAGE_API_KEY, VONAGE_API_SECRET);
var client = new VonageClient(credentials);

全文を見る

コードを書く

TransferCreditRequest.cs に以下を追加する:

var request = TransferAmountRequest.Build()
    .WithFrom(VONAGE_API_KEY)
    .WithTo(SUBACCOUNT_KEY)
    .WithAmount(amount)
    .Create();
var response = await client.SubAccountsClient.TransferCreditAsync(request);

全文を見る

前提条件

composer require vonage/client

transfer-credit.php という名前のファイルを作成し、以下のコードを追加する:

$client = new \Vonage\Client($basic);

全文を見る

コードを書く

transfer-credit.php に以下を追加する:

$transferRequest = new \Vonage\Subaccount\Request\TransferBalanceRequest(VONAGE_API_KEY);
$transferRequest
    ->setFrom(VONAGE_API_KEY)
    ->setTo(SUBACCOUNT_KEY)
    ->setAmount(250);

$subaccount = $client->subaccount()->makeBalanceTransfer($transferRequest);

全文を見る

コードを実行する

このファイルをあなたのマシンに保存し、実行する:

php transfer-credit.php

前提条件

pip install vonage python-dotenv

コードを書く

transfer-credit.py に以下を追加する:

from vonage import Auth, Vonage
from vonage_subaccounts import Transfer, TransferRequest

client = Vonage(Auth(api_key=VONAGE_API_KEY, api_secret=VONAGE_API_SECRET))

request = TransferRequest(
    from_=VONAGE_API_KEY, to=SUBACCOUNT_KEY, amount=SUBACCOUNT_CREDIT_AMOUNT
)

response: Transfer = client.subaccounts.transfer_credit(request)

print(response)

全文を見る

コードを実行する

このファイルをあなたのマシンに保存し、実行する:

python subaccounts/transfer-credit.py

前提条件

gem install vonage

transfer-credit.rb という名前のファイルを作成し、以下のコードを追加する:

client = Vonage::Client.new(
  api_key: VONAGE_API_KEY,
  api_secret: VONAGE_API_SECRET
)

全文を見る

コードを書く

transfer-credit.rb に以下を追加する:

client.subaccounts.transfer_credit(
  from: VONAGE_API_KEY,
  to: SUBACCOUNT_KEY,
  amount: AMOUNT
)

全文を見る

コードを実行する

このファイルをあなたのマシンに保存し、実行する:

ruby transfer-credit.rb

すべてのSubaccountの残高確認

パートナーはモニタリングを導入することを決定する。以下のコード・スニペットを使って、すべてのSubaccountの残高を定期的にチェックすることができます:

コードを書く

get-subaccounts.sh に以下を追加する:

curl "https://api.nexmo.com/accounts/$VONAGE_API_KEY/subaccounts" -u $VONAGE_API_KEY:$VONAGE_API_SECRET

全文を見る

コードを実行する

このファイルをあなたのマシンに保存し、実行する:

bash get-subaccounts.sh

前提条件

npm install @vonage/subaccounts

get-subaccounts.js という名前のファイルを作成し、以下のコードを追加する:

const { SubAccounts } = require('@vonage/subaccounts');

const subAccountClient = new SubAccounts({
  apiKey: VONAGE_API_KEY,
  apiSecret: VONAGE_API_SECRET,
});

全文を見る

コードを書く

get-subaccounts.js に以下を追加する:

subAccountClient.getSubAccounts()
  .then((subAccounts) => console.log(subAccounts))
  .catch((error) => console.error(error));

全文を見る

コードを実行する

このファイルをあなたのマシンに保存し、実行する:

node get-subaccounts.js

前提条件

build.gradle に以下を追加する:

implementation 'com.vonage:server-sdk-kotlin:2.1.1'

ListSubaccounts という名前のファイルを作成し、main メソッドに以下のコードを追加する:

val client = Vonage {
    apiKey(VONAGE_API_KEY)
    apiSecret(VONAGE_API_SECRET)
}

全文を見る

コードを書く

ListSubaccounts ファイルのmain メソッドに以下を追加する:

val subaccounts = client.subaccounts.listSubaccounts()

全文を見る

コードを実行する

Gradle用のアプリケーション プラグインを使うことで、アプリケーションの実行を簡単にすることができます。build.gradle を以下のように更新する:

apply plugin: 'application'
mainClassName = project.hasProperty('main') ? project.getProperty('main') : ''

以下のgradle コマンドを実行し、com.vonage.quickstart.kt.subaccountsListSubaccounts を含むパッケージに置き換えてアプリケーションを実行する:

gradle run -Pmain=com.vonage.quickstart.kt.subaccounts.ListSubaccounts

前提条件

build.gradle に以下を追加する:

implementation 'com.vonage:server-sdk:9.3.1'

ListSubaccounts という名前のファイルを作成し、main メソッドに以下のコードを追加する:

VonageClient client = VonageClient.builder()
		.apiKey(VONAGE_API_KEY)
		.apiSecret(VONAGE_API_SECRET)
		.build();

全文を見る

コードを書く

ListSubaccounts ファイルのmain メソッドに以下を追加する:

ListSubaccountsResponse response = client.getSubaccountsClient().listSubaccounts();

全文を見る

コードを実行する

Gradle用のアプリケーション プラグインを使うことで、アプリケーションの実行を簡単にすることができます。build.gradle を以下のように更新する:

apply plugin: 'application'
mainClassName = project.hasProperty('main') ? project.getProperty('main') : ''

以下のgradle コマンドを実行し、com.vonage.quickstart.subaccountsListSubaccounts を含むパッケージに置き換えてアプリケーションを実行する:

gradle run -Pmain=com.vonage.quickstart.subaccounts.ListSubaccounts

前提条件

Install-Package Vonage

GetSubAccountsRequest.cs という名前のファイルを作成し、以下のコードを追加する:

using Vonage;
using Vonage.Request;

全文を見る

GetSubAccountsRequest.cs に以下を追加する:

var credentials = Credentials.FromApiKeyAndSecret(VONAGE_API_KEY, VONAGE_API_SECRET);
var client = new VonageClient(credentials);

全文を見る

コードを書く

GetSubAccountsRequest.cs に以下を追加する:

var response = await client.SubAccountsClient.GetSubAccountsAsync();

全文を見る

前提条件

composer require vonage/client

get-subaccounts.php という名前のファイルを作成し、以下のコードを追加する:

$basic = new \Vonage\Client\Credentials\Basic(VONAGE_API_KEY, VONAGE_API_SECRET);
$client = new \Vonage\Client($basic);

全文を見る

コードを書く

get-subaccounts.php に以下を追加する:

$subaccounts = $client->subaccount()->getSubaccounts(VONAGE_API_KEY);

全文を見る

コードを実行する

このファイルをあなたのマシンに保存し、実行する:

php get-subaccounts.php

前提条件

pip install vonage python-dotenv

コードを書く

list-subaccounts.py に以下を追加する:

from vonage import Auth, Vonage
from vonage_subaccounts import ListSubaccountsResponse

client = Vonage(Auth(api_key=VONAGE_API_KEY, api_secret=VONAGE_API_SECRET))

response: ListSubaccountsResponse = client.subaccounts.list_subaccounts()

print(response)

全文を見る

コードを実行する

このファイルをあなたのマシンに保存し、実行する:

python subaccounts/list-subaccounts.py

前提条件

gem install vonage

list-subaccounts.rb という名前のファイルを作成し、以下のコードを追加する:

client = Vonage::Client.new(
  api_key: VONAGE_API_KEY,
  api_secret: VONAGE_API_SECRET
)

全文を見る

コードを書く

list-subaccounts.rb に以下を追加する:

response = client.subaccounts.list

全文を見る

コードを実行する

このファイルをあなたのマシンに保存し、実行する:

ruby list-subaccounts.rb

追加クレジット配分

しばらくして、パートナーはエンドカスタマー1(サブアカウント1)がクレジットをすべて使い切り(40のうち40)、これ以上APIコールができないことに気づいた。パートナーは、エンド・カスタマ1が支払いを行うのを待つか(そして今度はVonageに支払いを行い、対応する残高をサブアカウントに移す)、エンド・カスタマ1がVonage APIを使い続けられるようにエンド・カスタマのクレジット・リミットを直ちに増やすかの選択を迫られた。パートナーは追加クレジットを割り当てることにした。パートナーには 40 = |-60| - |-20| の利用可能クレジットがあり、20 をサブアカウントに割り当てることにしました。これは以下の図に示されています:

Additional credit

月末残高振替

月末にパートナーはVonageから|-20| + |-50| = 70ユーロの請求書を受け取った(すべてのアカウントからのすべての支出に対して)。エンドカスタマ1(サブアカウント1)は、使用した50ユーロのうち45ユーロをカバーした。したがって、パートナーは€45をサブアカウント1の残高に送金した。これは以下の図に示されている:

Additional credit

次のコードは、残高をSubaccountsに移す方法を示しています:

コードを書く

transfer-balance.sh に以下を追加する:

curl -X "POST" "https://api.nexmo.com/accounts/$VONAGE_API_KEY/balance-transfers" -u $VONAGE_API_KEY:$VONAGE_API_SECRET \
     -H "Content-Type: application/json"  \
     -d $'{"from":"'$VONAGE_API_KEY'", "to":"'$SUBACCOUNT_KEY'", "amount": '$AMOUNT'}'

全文を見る

コードを実行する

このファイルをあなたのマシンに保存し、実行する:

bash transfer-balance.sh

前提条件

npm install @vonage/subaccounts

transfer-balance.js という名前のファイルを作成し、以下のコードを追加する:

const { SubAccounts } = require('@vonage/subaccounts');

const subAccountClient = new SubAccounts({
  apiKey: VONAGE_API_KEY,
  apiSecret: VONAGE_API_SECRET,
});

全文を見る

コードを書く

transfer-balance.js に以下を追加する:

subAccountClient.transferBalance({
  from: VONAGE_API_KEY,
  to: SUBACCOUNT_KEY,
  amount: AMOUNT,
})
  .then((balanceTransfer) => console.log(balanceTransfer))
  .catch((error) => console.error(error));

全文を見る

コードを実行する

このファイルをあなたのマシンに保存し、実行する:

node transfer-balance.js

前提条件

build.gradle に以下を追加する:

implementation 'com.vonage:server-sdk-kotlin:2.1.1'

TransferBalance という名前のファイルを作成し、main メソッドに以下のコードを追加する:

val client = Vonage {
    apiKey(VONAGE_API_KEY)
    apiSecret(VONAGE_API_SECRET)
}

全文を見る

コードを書く

TransferBalance ファイルのmain メソッドに以下を追加する:

val receipt = client.subaccounts.transferBalance(
    from = VONAGE_API_KEY,
    to = SUBACCOUNT_KEY,
    amount = SUBACCOUNT_BALANCE_AMOUNT
)

全文を見る

コードを実行する

Gradle用のアプリケーション プラグインを使うことで、アプリケーションの実行を簡単にすることができます。build.gradle を以下のように更新する:

apply plugin: 'application'
mainClassName = project.hasProperty('main') ? project.getProperty('main') : ''

以下のgradle コマンドを実行し、com.vonage.quickstart.kt.subaccountsTransferBalance を含むパッケージに置き換えてアプリケーションを実行する:

gradle run -Pmain=com.vonage.quickstart.kt.subaccounts.TransferBalance

前提条件

build.gradle に以下を追加する:

implementation 'com.vonage:server-sdk:9.3.1'

TransferBalance という名前のファイルを作成し、main メソッドに以下のコードを追加する:

VonageClient client = VonageClient.builder()
		.apiKey(VONAGE_API_KEY)
		.apiSecret(VONAGE_API_SECRET)
		.build();

全文を見る

コードを書く

TransferBalance ファイルのmain メソッドに以下を追加する:

MoneyTransfer receipt = client.getSubaccountsClient().transferBalance(
		MoneyTransfer.builder()
			.from(VONAGE_API_KEY).to(SUBACCOUNT_KEY)
			.amount(SUBACCOUNT_BALANCE_AMOUNT).build()
);
System.out.println("Transfer successful: "+receipt.getId());

全文を見る

コードを実行する

Gradle用のアプリケーション プラグインを使うことで、アプリケーションの実行を簡単にすることができます。build.gradle を以下のように更新する:

apply plugin: 'application'
mainClassName = project.hasProperty('main') ? project.getProperty('main') : ''

以下のgradle コマンドを実行し、com.vonage.quickstart.subaccountsTransferBalance を含むパッケージに置き換えてアプリケーションを実行する:

gradle run -Pmain=com.vonage.quickstart.subaccounts.TransferBalance

前提条件

Install-Package Vonage

TransferBalanceRequest.cs という名前のファイルを作成し、以下のコードを追加する:

using Vonage;
using Vonage.Request;
using Vonage.SubAccounts.TransferAmount;

全文を見る

TransferBalanceRequest.cs に以下を追加する:

var credentials = Credentials.FromApiKeyAndSecret(VONAGE_API_KEY, VONAGE_API_SECRET);
var client = new VonageClient(credentials);

全文を見る

コードを書く

TransferBalanceRequest.cs に以下を追加する:

var request = TransferAmountRequest.Build()
    .WithFrom(VONAGE_API_KEY)
    .WithTo(SUBACCOUNT_KEY)
    .WithAmount(amount)
    .Create();
var response = await client.SubAccountsClient.TransferBalanceAsync(request);

全文を見る

前提条件

composer require vonage/client

transfer-balance.php という名前のファイルを作成し、以下のコードを追加する:

$basic = new \Vonage\Client\Credentials\Basic(VONAGE_API_KEY, VONAGE_API_SECRET);
$client = new \Vonage\Client($basic);

全文を見る

コードを書く

transfer-balance.php に以下を追加する:

$transferRequest = new \Vonage\Subaccount\Request\TransferBalanceRequest(VONAGE_API_KEY);
$transferRequest
    ->setFrom(VONAGE_API_KEY)
    ->setTo(SUBACCOUNT_KEY)
    ->setAmount(250);

$subaccount = $client->subaccount()->makeBalanceTransfer($transferRequest);

全文を見る

コードを実行する

このファイルをあなたのマシンに保存し、実行する:

php transfer-balance.php

前提条件

pip install vonage python-dotenv

コードを書く

transfer-balance.py に以下を追加する:

from vonage import Auth, Vonage
from vonage_subaccounts import Transfer, TransferRequest

client = Vonage(Auth(api_key=VONAGE_API_KEY, api_secret=VONAGE_API_SECRET))

request = TransferRequest(
    from_=VONAGE_API_KEY, to=SUBACCOUNT_KEY, amount=SUBACCOUNT_BALANCE_AMOUNT
)

transfer: Transfer = client.subaccounts.transfer_balance(request)

print(transfer)

全文を見る

コードを実行する

このファイルをあなたのマシンに保存し、実行する:

python subaccounts/transfer-balance.py

前提条件

gem install vonage

transfer-balance.rb という名前のファイルを作成し、以下のコードを追加する:

client = Vonage::Client.new(
  api_key: VONAGE_API_KEY,
  api_secret: VONAGE_API_SECRET
)

全文を見る

コードを書く

transfer-balance.rb に以下を追加する:

client.subaccounts.transfer_balance(
  from: VONAGE_API_KEY,
  to: SUBACCOUNT_KEY,
  amount: AMOUNT
)

全文を見る

コードを実行する

このファイルをあなたのマシンに保存し、実行する:

ruby transfer-balance.rb

サブアカウントの一時停止

パートナーは、サブアカウントの支出をコントロールできることを気に入り、個々の残高と30ユーロのクレジットをエンドカスタマー2(サブアカウント2)に割り当てることにした。サブアカウントの支出を監視していたパートナーは、サブアカウント2が残高の25ユーロを消費していることに気づいた。サブアカウント2の支出率に憂慮したパートナーは、サブアカウント2を一時的に停止することにした。サブアカウントを一時停止するコードをここに示す:

コードを書く

suspend-subaccount.sh に以下を追加する:

curl -X "PATCH" "https://api.nexmo.com/accounts/$VONAGE_API_KEY/subaccounts/$SUBACCOUNT_KEY" -u $VONAGE_API_KEY:$VONAGE_API_SECRET \
     -H "Content-Type: application/json"  \
     -d $'{"suspended":true}'

全文を見る

コードを実行する

このファイルをあなたのマシンに保存し、実行する:

bash suspend-subaccount.sh

前提条件

npm install @vonage/subaccounts

suspend-subaccount.js という名前のファイルを作成し、以下のコードを追加する:

const { SubAccounts } = require('@vonage/subaccounts');

const subAccountClient = new SubAccounts({
  apiKey: VONAGE_API_KEY,
  apiSecret: VONAGE_API_SECRET,
});

全文を見る

コードを書く

suspend-subaccount.js に以下を追加する:

subAccountClient.updateSubAccount(
  SUBACCOUNT_KEY,
  { suspended: true },
)
  .then((subAccount) => console.log(subAccount))
  .catch((error) => console.error(error));

全文を見る

コードを実行する

このファイルをあなたのマシンに保存し、実行する:

node suspend-subaccount.js

前提条件

build.gradle に以下を追加する:

implementation 'com.vonage:server-sdk-kotlin:2.1.1'

SuspendSubaccount という名前のファイルを作成し、main メソッドに以下のコードを追加する:

val client = Vonage {
    apiKey(VONAGE_API_KEY)
    apiSecret(VONAGE_API_SECRET)
}

全文を見る

コードを書く

SuspendSubaccount ファイルのmain メソッドに以下を追加する:

val subaccount = client.subaccounts.subaccount(SUBACCOUNT_KEY).suspended(true)

全文を見る

コードを実行する

Gradle用のアプリケーション プラグインを使うことで、アプリケーションの実行を簡単にすることができます。build.gradle を以下のように更新する:

apply plugin: 'application'
mainClassName = project.hasProperty('main') ? project.getProperty('main') : ''

以下のgradle コマンドを実行し、com.vonage.quickstart.kt.subaccountsSuspendSubaccount を含むパッケージに置き換えてアプリケーションを実行する:

gradle run -Pmain=com.vonage.quickstart.kt.subaccounts.SuspendSubaccount

前提条件

build.gradle に以下を追加する:

implementation 'com.vonage:server-sdk:9.3.1'

DeactivateSubaccount という名前のファイルを作成し、main メソッドに以下のコードを追加する:

VonageClient client = VonageClient.builder()
		.apiKey(VONAGE_API_KEY)
		.apiSecret(VONAGE_API_SECRET)
		.build();

全文を見る

コードを書く

DeactivateSubaccount ファイルのmain メソッドに以下を追加する:

Account subaccount = client.getSubaccountsClient().updateSubaccount(
		UpdateSubaccountRequest.builder(SUBACCOUNT_KEY).suspended(true).build()
);

全文を見る

コードを実行する

Gradle用のアプリケーション プラグインを使うことで、アプリケーションの実行を簡単にすることができます。build.gradle を以下のように更新する:

apply plugin: 'application'
mainClassName = project.hasProperty('main') ? project.getProperty('main') : ''

以下のgradle コマンドを実行し、com.vonage.quickstart.subaccountsDeactivateSubaccount を含むパッケージに置き換えてアプリケーションを実行する:

gradle run -Pmain=com.vonage.quickstart.subaccounts.DeactivateSubaccount

前提条件

Install-Package Vonage

SuspendAccountRequest.cs という名前のファイルを作成し、以下のコードを追加する:

using Vonage;
using Vonage.Request;
using Vonage.SubAccounts.UpdateSubAccount;

全文を見る

SuspendAccountRequest.cs に以下を追加する:

var credentials = Credentials.FromApiKeyAndSecret(VONAGE_API_KEY, VONAGE_API_SECRET);
var client = new VonageClient(credentials);

全文を見る

コードを書く

SuspendAccountRequest.cs に以下を追加する:

var request = UpdateSubAccountRequest.Build().WithSubAccountKey(SUBACCOUNT_KEY)
    .SuspendAccount()
    .Create();
var response = await client.SubAccountsClient.UpdateSubAccountAsync(request);

全文を見る

前提条件

composer require vonage/client

suspend-subaccount.php という名前のファイルを作成し、以下のコードを追加する:

$basic = new \Vonage\Client\Credentials\Basic(VONAGE_API_KEY, VONAGE_API_SECRET);
$client = new \Vonage\Client($basic);

全文を見る

コードを書く

suspend-subaccount.php に以下を追加する:

$account = new \Vonage\Subaccount\SubaccountObjects\Account();
$account->setSuspended(true);

$subaccount = $client->subaccount()->updateSubaccount(VONAGE_API_KEY, SUBACCOUNT_KEY, $account);

全文を見る

コードを実行する

このファイルをあなたのマシンに保存し、実行する:

php suspend-subaccount.php

前提条件

pip install vonage python-dotenv

コードを書く

suspend-subaccount.py に以下を追加する:

from vonage import Auth, Vonage
from vonage_subaccounts import ModifySubaccountOptions, Subaccount

client = Vonage(Auth(api_key=VONAGE_API_KEY, api_secret=VONAGE_API_SECRET))

response: Subaccount = client.subaccounts.modify_subaccount(
    subaccount_api_key=SUBACCOUNT_KEY,
    options=ModifySubaccountOptions(suspended=True),
)

print(response)

全文を見る

コードを実行する

このファイルをあなたのマシンに保存し、実行する:

python subaccounts/suspend-subaccount.py

前提条件

gem install vonage

suspend-subaccount.rb という名前のファイルを作成し、以下のコードを追加する:

client = Vonage::Client.new(
  api_key: VONAGE_API_KEY,
  api_secret: VONAGE_API_SECRET
)

全文を見る

コードを書く

suspend-subaccount.rb に以下を追加する:

client.subaccounts.update(
  subaccount_key: SUBACCOUNT_KEY,
  suspended: true
)

全文を見る

コードを実行する

このファイルをあなたのマシンに保存し、実行する:

ruby suspend-subaccount.rb

Subaccountの再有効化

サブアカウント2との協議の結果、パートナーはサブアカウント2のアカウントを再有効化することを決定します。これは以下のコードで実現できる:

コードを書く

reactivate-subaccount.sh に以下を追加する:

curl -X "PATCH" "https://api.nexmo.com/accounts/$VONAGE_API_KEY/subaccounts/$SUBACCOUNT_KEY" -u $VONAGE_API_KEY:$VONAGE_API_SECRET \
     -H "Content-Type: application/json"  \
     -d $'{"suspended":false}'

全文を見る

コードを実行する

このファイルをあなたのマシンに保存し、実行する:

bash reactivate-subaccount.sh

前提条件

npm install @vonage/subaccounts

reactivate-subaccount.js という名前のファイルを作成し、以下のコードを追加する:

const { SubAccounts } = require('@vonage/subaccounts');

const subAccountClient = new SubAccounts({
  apiKey: VONAGE_API_KEY,
  apiSecret: VONAGE_API_SECRET,
});

全文を見る

コードを書く

reactivate-subaccount.js に以下を追加する:

subAccountClient.updateSubAccount(
  SUBACCOUNT_KEY,
  { suspended: false },
)
  .then((subAccount) => console.log(subAccount))
  .catch((error) => console.error(error));

全文を見る

コードを実行する

このファイルをあなたのマシンに保存し、実行する:

node reactivate-subaccount.js

前提条件

build.gradle に以下を追加する:

implementation 'com.vonage:server-sdk-kotlin:2.1.1'

ReactivateSubaccount という名前のファイルを作成し、main メソッドに以下のコードを追加する:

val client = Vonage {
    apiKey(VONAGE_API_KEY)
    apiSecret(VONAGE_API_SECRET)
}

全文を見る

コードを書く

ReactivateSubaccount ファイルのmain メソッドに以下を追加する:

val subaccount = client.subaccounts.subaccount(SUBACCOUNT_KEY).suspended(false)

全文を見る

コードを実行する

Gradle用のアプリケーション プラグインを使うことで、アプリケーションの実行を簡単にすることができます。build.gradle を以下のように更新する:

apply plugin: 'application'
mainClassName = project.hasProperty('main') ? project.getProperty('main') : ''

以下のgradle コマンドを実行し、com.vonage.quickstart.kt.subaccountsReactivateSubaccount を含むパッケージに置き換えてアプリケーションを実行する:

gradle run -Pmain=com.vonage.quickstart.kt.subaccounts.ReactivateSubaccount

前提条件

build.gradle に以下を追加する:

implementation 'com.vonage:server-sdk:9.3.1'

ReactivateSubaccount という名前のファイルを作成し、main メソッドに以下のコードを追加する:

VonageClient client = VonageClient.builder()
		.apiKey(VONAGE_API_KEY)
		.apiSecret(VONAGE_API_SECRET)
		.build();

全文を見る

コードを書く

ReactivateSubaccount ファイルのmain メソッドに以下を追加する:

Account subaccount = client.getSubaccountsClient().updateSubaccount(
		UpdateSubaccountRequest.builder(SUBACCOUNT_KEY).suspended(false).build()
);

全文を見る

コードを実行する

Gradle用のアプリケーション プラグインを使うことで、アプリケーションの実行を簡単にすることができます。build.gradle を以下のように更新する:

apply plugin: 'application'
mainClassName = project.hasProperty('main') ? project.getProperty('main') : ''

以下のgradle コマンドを実行し、com.vonage.quickstart.subaccountsReactivateSubaccount を含むパッケージに置き換えてアプリケーションを実行する:

gradle run -Pmain=com.vonage.quickstart.subaccounts.ReactivateSubaccount

前提条件

Install-Package Vonage

EnableAccountRequest.cs という名前のファイルを作成し、以下のコードを追加する:

using Vonage;
using Vonage.Request;
using Vonage.SubAccounts.UpdateSubAccount;

全文を見る

EnableAccountRequest.cs に以下を追加する:

var credentials = Credentials.FromApiKeyAndSecret(VONAGE_API_KEY, VONAGE_API_SECRET);
var client = new VonageClient(credentials);

全文を見る

コードを書く

EnableAccountRequest.cs に以下を追加する:

var request = UpdateSubAccountRequest.Build().WithSubAccountKey(SUBACCOUNT_KEY)
    .EnableAccount()
    .Create();
var response = await client.SubAccountsClient.UpdateSubAccountAsync(request);

全文を見る

前提条件

composer require vonage/client

reactivate-subaccount.php という名前のファイルを作成し、以下のコードを追加する:

$basic = new \Vonage\Client\Credentials\Basic(VONAGE_API_KEY, VONAGE_API_SECRET);
$client = new \Vonage\Client($basic);

全文を見る

コードを書く

reactivate-subaccount.php に以下を追加する:

$account = new \Vonage\Subaccount\SubaccountObjects\Account();
$account->setSuspended(false);

$subaccount = $client->subaccount()->updateSubaccount(VONAGE_API_KEY, SUBACCOUNT_KEY, $account);

全文を見る

コードを実行する

このファイルをあなたのマシンに保存し、実行する:

php reactivate-subaccount.php

前提条件

pip install vonage python-dotenv

コードを書く

reactivate-subaccount.py に以下を追加する:

from vonage import Auth, Vonage
from vonage_subaccounts import ModifySubaccountOptions, Subaccount

client = Vonage(Auth(api_key=VONAGE_API_KEY, api_secret=VONAGE_API_SECRET))

response: Subaccount = client.subaccounts.modify_subaccount(
    subaccount_api_key=SUBACCOUNT_KEY,
    options=ModifySubaccountOptions(suspended=False),
)

print(response)

全文を見る

コードを実行する

このファイルをあなたのマシンに保存し、実行する:

python subaccounts/reactivate-subaccount.py

前提条件

gem install vonage

reactivate-subaccount.rb という名前のファイルを作成し、以下のコードを追加する:

client = Vonage::Client.new(
  api_key: VONAGE_API_KEY,
  api_secret: VONAGE_API_SECRET
)

全文を見る

コードを書く

reactivate-subaccount.rb に以下を追加する:

client.subaccounts.update(
  subaccount_key: SUBACCOUNT_KEY,
  suspended: false
)

全文を見る

コードを実行する

このファイルをあなたのマシンに保存し、実行する:

ruby reactivate-subaccount.rb

概要

このトピックでは、典型的なシナリオでエンドカスタマーを管理するために Subaccounts API を使用する方法について見てきました。

その他のリソース