Como usar a API de Subaccounts

Visão geral

Este tópico descreve um caso de uso em que um parceiro utiliza a API de Subaccounts para gerenciar com sucesso os clientes finais.

Pré-requisitos

Você deve estar familiarizado com o conceitos principais associadas à API de Subaccounts.

Criação de uma subconta

Um Parceiro decide criar uma subconta para cada cliente final e, assim, pode utilizar credenciais de API distintas para cada um deles e visualizar seus gastos. Isso é ilustrado no diagrama a seguir:

Subaccounts with shared balance

Para criar uma subconta, pode-se usar o seguinte código:

Escreva o código

Adicione o seguinte ao arquivo ` 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'"}'

Ver código-fonte completo

Execute seu código

Salve este arquivo no seu computador e execute-o:

bash create-subaccount.sh

Pré-requisitos

npm install @vonage/subaccounts

Crie um arquivo chamado ` create-subaccount.js ` e insira o seguinte código:

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

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

Ver código-fonte completo

Escreva o código

Adicione o seguinte ao arquivo ` create-subaccount.js`:

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

Ver código-fonte completo

Execute seu código

Salve este arquivo no seu computador e execute-o:

node create-subaccount.js

Pré-requisitos

Adicione o seguinte ao arquivo ` build.gradle`:

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

Crie um arquivo chamado ` CreateSubaccount ` e adicione o código a seguir ao método ` main `:

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

Ver código-fonte completo

Escreva o código

Adicione o seguinte ao método ` main ` do arquivo ` CreateSubaccount `:

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

Ver código-fonte completo

Execute seu código

Podemos usar o plugin “ aplicativo ” para o Gradle a fim de simplificar a execução do nosso aplicativo. Atualize seu arquivo ` build.gradle ` com o seguinte:

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

Execute o seguinte comando ` gradle ` para rodar seu aplicativo, substituindo ` com.vonage.quickstart.kt.subaccounts ` pelo pacote que contém ` CreateSubaccount`:

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

Pré-requisitos

Adicione o seguinte ao arquivo ` build.gradle`:

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

Crie um arquivo chamado ` CreateSubaccount ` e adicione o código a seguir ao método ` main `:

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

Ver código-fonte completo

Escreva o código

Adicione o seguinte ao método ` main ` do arquivo ` CreateSubaccount `:

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

Ver código-fonte completo

Execute seu código

Podemos usar o plugin “ aplicativo ” para o Gradle a fim de simplificar a execução do nosso aplicativo. Atualize seu arquivo ` build.gradle ` com o seguinte:

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

Execute o seguinte comando ` gradle ` para rodar seu aplicativo, substituindo ` com.vonage.quickstart.subaccounts ` pelo pacote que contém ` CreateSubaccount`:

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

Pré-requisitos

Install-Package Vonage

Crie um arquivo chamado ` CreateSubAccountRequest.cs ` e insira o seguinte código:

using Vonage;
using Vonage.Request;

Ver código-fonte completo

Adicione o seguinte ao arquivo ` CreateSubAccountRequest.cs`:

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

Ver código-fonte completo

Escreva o código

Adicione o seguinte ao arquivo ` 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);

Ver código-fonte completo

Pré-requisitos

composer require vonage/client

Crie um arquivo chamado ` create-subaccount.php ` e insira o seguinte código:


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

Ver código-fonte completo

Escreva o código

Adicione o seguinte ao arquivo ` 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);

Ver código-fonte completo

Execute seu código

Salve este arquivo no seu computador e execute-o:

php create-subaccount.php

Pré-requisitos

pip install vonage python-dotenv

Escreva o código

Adicione o seguinte ao arquivo ` 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)

Ver código-fonte completo

Execute seu código

Salve este arquivo no seu computador e execute-o:

python subaccounts/create-subaccount.py

Pré-requisitos

gem install vonage

Crie um arquivo chamado ` create-subaccount.rb ` e insira o seguinte código:

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

Ver código-fonte completo

Escreva o código

Adicione o seguinte ao arquivo ` create-subaccount.rb`:

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

Ver código-fonte completo

Execute seu código

Salve este arquivo no seu computador e execute-o:

ruby create-subaccount.rb

Transferência de créditos

O Parceiro não conseguia controlar os gastos de seus clientes finais, pois todos compartilhavam o mesmo saldo. Um cliente final costumava, ocasionalmente, esgotar todo o saldo compartilhado, bloqueando efetivamente o acesso às APIs da Vonage para os demais clientes finais do Parceiro. O Parceiro decidiu definir um saldo individual e atribuir um limite de crédito a esse cliente final.

NOTA: O parceiro poderia ter feito o pré-pagamento de seus accounts.

É possível atribuir a cada subconta um saldo individual e um limite de crédito, conforme ilustrado no diagrama a seguir:

Credit allocation

O trecho de código a seguir ilustra como alocar um valor específico de crédito a uma subconta:

Escreva o código

Adicione o seguinte ao arquivo ` 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'}'

Ver código-fonte completo

Execute seu código

Salve este arquivo no seu computador e execute-o:

bash transfer-credit.sh

Pré-requisitos

npm install @vonage/subaccounts

Crie um arquivo chamado ` transfer-credit.js ` e insira o seguinte código:

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

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

Ver código-fonte completo

Escreva o código

Adicione o seguinte ao arquivo ` transfer-credit.js`:

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

Ver código-fonte completo

Execute seu código

Salve este arquivo no seu computador e execute-o:

node transfer-credit.js

Pré-requisitos

Adicione o seguinte ao arquivo ` build.gradle`:

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

Crie um arquivo chamado ` TransferCredit ` e adicione o código a seguir ao método ` main `:

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

Ver código-fonte completo

Escreva o código

Adicione o seguinte ao método ` main ` do arquivo ` TransferCredit `:

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

Ver código-fonte completo

Execute seu código

Podemos usar o plugin “ aplicativo ” para o Gradle a fim de simplificar a execução do nosso aplicativo. Atualize seu arquivo ` build.gradle ` com o seguinte:

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

Execute o seguinte comando ` gradle ` para rodar seu aplicativo, substituindo ` com.vonage.quickstart.kt.subaccounts ` pelo pacote que contém ` TransferCredit`:

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

Pré-requisitos

Adicione o seguinte ao arquivo ` build.gradle`:

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

Crie um arquivo chamado ` TransferCredit ` e adicione o código a seguir ao método ` main `:

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

Ver código-fonte completo

Escreva o código

Adicione o seguinte ao método ` main ` do arquivo ` TransferCredit `:

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());

Ver código-fonte completo

Execute seu código

Podemos usar o plugin “ aplicativo ” para o Gradle a fim de simplificar a execução do nosso aplicativo. Atualize seu arquivo ` build.gradle ` com o seguinte:

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

Execute o seguinte comando ` gradle ` para rodar seu aplicativo, substituindo ` com.vonage.quickstart.subaccounts ` pelo pacote que contém ` TransferCredit`:

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

Pré-requisitos

Install-Package Vonage

Crie um arquivo chamado ` TransferCreditRequest.cs ` e insira o seguinte código:

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

Ver código-fonte completo

Adicione o seguinte ao arquivo ` TransferCreditRequest.cs`:

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

Ver código-fonte completo

Escreva o código

Adicione o seguinte ao arquivo ` TransferCreditRequest.cs`:

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

Ver código-fonte completo

Pré-requisitos

composer require vonage/client

Crie um arquivo chamado ` transfer-credit.php ` e insira o seguinte código:

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

Ver código-fonte completo

Escreva o código

Adicione o seguinte ao arquivo ` 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);

Ver código-fonte completo

Execute seu código

Salve este arquivo no seu computador e execute-o:

php transfer-credit.php

Pré-requisitos

pip install vonage python-dotenv

Escreva o código

Adicione o seguinte ao arquivo ` 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)

Ver código-fonte completo

Execute seu código

Salve este arquivo no seu computador e execute-o:

python subaccounts/transfer-credit.py

Pré-requisitos

gem install vonage

Crie um arquivo chamado ` transfer-credit.rb ` e insira o seguinte código:

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

Ver código-fonte completo

Escreva o código

Adicione o seguinte ao arquivo ` transfer-credit.rb`:

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

Ver código-fonte completo

Execute seu código

Salve este arquivo no seu computador e execute-o:

ruby transfer-credit.rb

Verificação do saldo de todas as Subaccounts

O Parceiro decide implementar o monitoramento. É possível verificar periodicamente o saldo de todas as Subaccounts usando o seguinte trecho de código:

Escreva o código

Adicione o seguinte ao arquivo ` get-subaccounts.sh`:

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

Ver código-fonte completo

Execute seu código

Salve este arquivo no seu computador e execute-o:

bash get-subaccounts.sh

Pré-requisitos

npm install @vonage/subaccounts

Crie um arquivo chamado ` get-subaccounts.js ` e insira o seguinte código:

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

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

Ver código-fonte completo

Escreva o código

Adicione o seguinte ao arquivo ` get-subaccounts.js`:

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

Ver código-fonte completo

Execute seu código

Salve este arquivo no seu computador e execute-o:

node get-subaccounts.js

Pré-requisitos

Adicione o seguinte ao arquivo ` build.gradle`:

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

Crie um arquivo chamado ` ListSubaccounts ` e adicione o código a seguir ao método ` main `:

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

Ver código-fonte completo

Escreva o código

Adicione o seguinte ao método ` main ` do arquivo ` ListSubaccounts `:

val subaccounts = client.subaccounts.listSubaccounts()

Ver código-fonte completo

Execute seu código

Podemos usar o plugin “ aplicativo ” para o Gradle a fim de simplificar a execução do nosso aplicativo. Atualize seu arquivo ` build.gradle ` com o seguinte:

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

Execute o seguinte comando ` gradle ` para rodar seu aplicativo, substituindo ` com.vonage.quickstart.kt.subaccounts ` pelo pacote que contém ` ListSubaccounts`:

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

Pré-requisitos

Adicione o seguinte ao arquivo ` build.gradle`:

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

Crie um arquivo chamado ` ListSubaccounts ` e adicione o código a seguir ao método ` main `:

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

Ver código-fonte completo

Escreva o código

Adicione o seguinte ao método ` main ` do arquivo ` ListSubaccounts `:

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

Ver código-fonte completo

Execute seu código

Podemos usar o plugin “ aplicativo ” para o Gradle a fim de simplificar a execução do nosso aplicativo. Atualize seu arquivo ` build.gradle ` com o seguinte:

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

Execute o seguinte comando ` gradle ` para rodar seu aplicativo, substituindo ` com.vonage.quickstart.subaccounts ` pelo pacote que contém ` ListSubaccounts`:

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

Pré-requisitos

Install-Package Vonage

Crie um arquivo chamado ` GetSubAccountsRequest.cs ` e insira o seguinte código:

using Vonage;
using Vonage.Request;

Ver código-fonte completo

Adicione o seguinte ao arquivo ` GetSubAccountsRequest.cs`:

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

Ver código-fonte completo

Escreva o código

Adicione o seguinte ao arquivo ` GetSubAccountsRequest.cs`:

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

Ver código-fonte completo

Pré-requisitos

composer require vonage/client

Crie um arquivo chamado ` get-subaccounts.php ` e insira o seguinte código:

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

Ver código-fonte completo

Escreva o código

Adicione o seguinte ao arquivo ` get-subaccounts.php`:

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

Ver código-fonte completo

Execute seu código

Salve este arquivo no seu computador e execute-o:

php get-subaccounts.php

Pré-requisitos

pip install vonage python-dotenv

Escreva o código

Adicione o seguinte ao arquivo ` 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)

Ver código-fonte completo

Execute seu código

Salve este arquivo no seu computador e execute-o:

python subaccounts/list-subaccounts.py

Pré-requisitos

gem install vonage

Crie um arquivo chamado ` list-subaccounts.rb ` e insira o seguinte código:

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

Ver código-fonte completo

Escreva o código

Adicione o seguinte ao arquivo ` list-subaccounts.rb`:

response = client.subaccounts.list

Ver código-fonte completo

Execute seu código

Salve este arquivo no seu computador e execute-o:

ruby list-subaccounts.rb

Alocação adicional de crédito

Após algum tempo, o Parceiro percebeu que o cliente final 1 (subconta 1) havia esgotado todo o seu crédito (40 de 40) e não podia mais fazer chamadas de API. O Parceiro tinha duas opções: esperar que o cliente final 1 pagasse a ele (para, então, efetuar o pagamento à Vonage e transferir o saldo correspondente para a subconta) ou aumentar imediatamente o limite de crédito do cliente final, para que o cliente final 1 pudesse continuar usando a API da Vonage. O Parceiro decidiu alocar crédito adicional. O Parceiro tem 40 = |-60| - |-20| de crédito disponível e decide alocar 20 para a subconta. Isso é ilustrado no diagrama a seguir:

Additional credit

Transferências de saldo no final do mês

No final do mês, o Parceiro recebeu uma fatura de |-20| + |-50| = €70 da Vonage (correspondente a todos os gastos de todas as suas contas). O cliente final 1 (subconta1) cobriu 45 dos €50 que havia gasto. Assim, o Parceiro transferiu €45 para o saldo da subconta1. Isso é ilustrado no diagrama a seguir:

Additional credit

O código a seguir mostra como transferir saldo para uma subconta:

Escreva o código

Adicione o seguinte ao arquivo ` 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'}'

Ver código-fonte completo

Execute seu código

Salve este arquivo no seu computador e execute-o:

bash transfer-balance.sh

Pré-requisitos

npm install @vonage/subaccounts

Crie um arquivo chamado ` transfer-balance.js ` e insira o seguinte código:

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

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

Ver código-fonte completo

Escreva o código

Adicione o seguinte ao arquivo ` transfer-balance.js`:

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

Ver código-fonte completo

Execute seu código

Salve este arquivo no seu computador e execute-o:

node transfer-balance.js

Pré-requisitos

Adicione o seguinte ao arquivo ` build.gradle`:

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

Crie um arquivo chamado ` TransferBalance ` e adicione o código a seguir ao método ` main `:

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

Ver código-fonte completo

Escreva o código

Adicione o seguinte ao método ` main ` do arquivo ` TransferBalance `:

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

Ver código-fonte completo

Execute seu código

Podemos usar o plugin “ aplicativo ” para o Gradle a fim de simplificar a execução do nosso aplicativo. Atualize seu arquivo ` build.gradle ` com o seguinte:

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

Execute o seguinte comando ` gradle ` para rodar seu aplicativo, substituindo ` com.vonage.quickstart.kt.subaccounts ` pelo pacote que contém ` TransferBalance`:

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

Pré-requisitos

Adicione o seguinte ao arquivo ` build.gradle`:

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

Crie um arquivo chamado ` TransferBalance ` e adicione o código a seguir ao método ` main `:

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

Ver código-fonte completo

Escreva o código

Adicione o seguinte ao método ` main ` do arquivo ` TransferBalance `:

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());

Ver código-fonte completo

Execute seu código

Podemos usar o plugin “ aplicativo ” para o Gradle a fim de simplificar a execução do nosso aplicativo. Atualize seu arquivo ` build.gradle ` com o seguinte:

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

Execute o seguinte comando ` gradle ` para rodar seu aplicativo, substituindo ` com.vonage.quickstart.subaccounts ` pelo pacote que contém ` TransferBalance`:

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

Pré-requisitos

Install-Package Vonage

Crie um arquivo chamado ` TransferBalanceRequest.cs ` e insira o seguinte código:

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

Ver código-fonte completo

Adicione o seguinte ao arquivo ` TransferBalanceRequest.cs`:

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

Ver código-fonte completo

Escreva o código

Adicione o seguinte ao arquivo ` TransferBalanceRequest.cs`:

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

Ver código-fonte completo

Pré-requisitos

composer require vonage/client

Crie um arquivo chamado ` transfer-balance.php ` e insira o seguinte código:

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

Ver código-fonte completo

Escreva o código

Adicione o seguinte ao arquivo ` 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);

Ver código-fonte completo

Execute seu código

Salve este arquivo no seu computador e execute-o:

php transfer-balance.php

Pré-requisitos

pip install vonage python-dotenv

Escreva o código

Adicione o seguinte ao arquivo ` 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)

Ver código-fonte completo

Execute seu código

Salve este arquivo no seu computador e execute-o:

python subaccounts/transfer-balance.py

Pré-requisitos

gem install vonage

Crie um arquivo chamado ` transfer-balance.rb ` e insira o seguinte código:

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

Ver código-fonte completo

Escreva o código

Adicione o seguinte ao arquivo ` transfer-balance.rb`:

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

Ver código-fonte completo

Execute seu código

Salve este arquivo no seu computador e execute-o:

ruby transfer-balance.rb

Suspensão de uma subconta

O Parceiro gostou da possibilidade de controlar os gastos da subconta e decidiu atribuir um saldo individual e um crédito de €30 ao cliente final 2 (subconta2). O Parceiro, que estava monitorando os gastos de suas subaccounts, percebeu que a subconta2 havia consumido €25 de seu saldo. Preocupado com o ritmo de gastos da subconta 2, o Parceiro decidiu suspendê-la temporariamente. O código para suspender uma subconta é mostrado aqui:

Escreva o código

Adicione o seguinte ao arquivo ` 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}'

Ver código-fonte completo

Execute seu código

Salve este arquivo no seu computador e execute-o:

bash suspend-subaccount.sh

Pré-requisitos

npm install @vonage/subaccounts

Crie um arquivo chamado ` suspend-subaccount.js ` e insira o seguinte código:

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

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

Ver código-fonte completo

Escreva o código

Adicione o seguinte ao arquivo ` suspend-subaccount.js`:

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

Ver código-fonte completo

Execute seu código

Salve este arquivo no seu computador e execute-o:

node suspend-subaccount.js

Pré-requisitos

Adicione o seguinte ao arquivo ` build.gradle`:

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

Crie um arquivo chamado ` SuspendSubaccount ` e adicione o código a seguir ao método ` main `:

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

Ver código-fonte completo

Escreva o código

Adicione o seguinte ao método ` main ` do arquivo ` SuspendSubaccount `:

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

Ver código-fonte completo

Execute seu código

Podemos usar o plugin “ aplicativo ” para o Gradle a fim de simplificar a execução do nosso aplicativo. Atualize seu arquivo ` build.gradle ` com o seguinte:

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

Execute o seguinte comando ` gradle ` para rodar seu aplicativo, substituindo ` com.vonage.quickstart.kt.subaccounts ` pelo pacote que contém ` SuspendSubaccount`:

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

Pré-requisitos

Adicione o seguinte ao arquivo ` build.gradle`:

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

Crie um arquivo chamado ` DeactivateSubaccount ` e adicione o código a seguir ao método ` main `:

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

Ver código-fonte completo

Escreva o código

Adicione o seguinte ao método ` main ` do arquivo ` DeactivateSubaccount `:

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

Ver código-fonte completo

Execute seu código

Podemos usar o plugin “ aplicativo ” para o Gradle a fim de simplificar a execução do nosso aplicativo. Atualize seu arquivo ` build.gradle ` com o seguinte:

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

Execute o seguinte comando ` gradle ` para rodar seu aplicativo, substituindo ` com.vonage.quickstart.subaccounts ` pelo pacote que contém ` DeactivateSubaccount`:

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

Pré-requisitos

Install-Package Vonage

Crie um arquivo chamado ` SuspendAccountRequest.cs ` e insira o seguinte código:

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

Ver código-fonte completo

Adicione o seguinte ao arquivo ` SuspendAccountRequest.cs`:

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

Ver código-fonte completo

Escreva o código

Adicione o seguinte ao arquivo ` SuspendAccountRequest.cs`:

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

Ver código-fonte completo

Pré-requisitos

composer require vonage/client

Crie um arquivo chamado ` suspend-subaccount.php ` e insira o seguinte código:

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

Ver código-fonte completo

Escreva o código

Adicione o seguinte ao arquivo ` suspend-subaccount.php`:

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

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

Ver código-fonte completo

Execute seu código

Salve este arquivo no seu computador e execute-o:

php suspend-subaccount.php

Pré-requisitos

pip install vonage python-dotenv

Escreva o código

Adicione o seguinte ao arquivo ` 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)

Ver código-fonte completo

Execute seu código

Salve este arquivo no seu computador e execute-o:

python subaccounts/suspend-subaccount.py

Pré-requisitos

gem install vonage

Crie um arquivo chamado ` suspend-subaccount.rb ` e insira o seguinte código:

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

Ver código-fonte completo

Escreva o código

Adicione o seguinte ao arquivo ` suspend-subaccount.rb`:

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

Ver código-fonte completo

Execute seu código

Salve este arquivo no seu computador e execute-o:

ruby suspend-subaccount.rb

Reativando uma subconta

Após conversas com a subconta2, o Parceiro decide reativar a conta da subconta2. Isso pode ser feito usando o seguinte código:

Escreva o código

Adicione o seguinte ao arquivo ` 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}'

Ver código-fonte completo

Execute seu código

Salve este arquivo no seu computador e execute-o:

bash reactivate-subaccount.sh

Pré-requisitos

npm install @vonage/subaccounts

Crie um arquivo chamado ` reactivate-subaccount.js ` e insira o seguinte código:

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

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

Ver código-fonte completo

Escreva o código

Adicione o seguinte ao arquivo ` reactivate-subaccount.js`:

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

Ver código-fonte completo

Execute seu código

Salve este arquivo no seu computador e execute-o:

node reactivate-subaccount.js

Pré-requisitos

Adicione o seguinte ao arquivo ` build.gradle`:

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

Crie um arquivo chamado ` ReactivateSubaccount ` e adicione o código a seguir ao método ` main `:

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

Ver código-fonte completo

Escreva o código

Adicione o seguinte ao método ` main ` do arquivo ` ReactivateSubaccount `:

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

Ver código-fonte completo

Execute seu código

Podemos usar o plugin “ aplicativo ” para o Gradle a fim de simplificar a execução do nosso aplicativo. Atualize seu arquivo ` build.gradle ` com o seguinte:

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

Execute o seguinte comando ` gradle ` para rodar seu aplicativo, substituindo ` com.vonage.quickstart.kt.subaccounts ` pelo pacote que contém ` ReactivateSubaccount`:

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

Pré-requisitos

Adicione o seguinte ao arquivo ` build.gradle`:

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

Crie um arquivo chamado ` ReactivateSubaccount ` e adicione o código a seguir ao método ` main `:

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

Ver código-fonte completo

Escreva o código

Adicione o seguinte ao método ` main ` do arquivo ` ReactivateSubaccount `:

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

Ver código-fonte completo

Execute seu código

Podemos usar o plugin “ aplicativo ” para o Gradle a fim de simplificar a execução do nosso aplicativo. Atualize seu arquivo ` build.gradle ` com o seguinte:

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

Execute o seguinte comando ` gradle ` para rodar seu aplicativo, substituindo ` com.vonage.quickstart.subaccounts ` pelo pacote que contém ` ReactivateSubaccount`:

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

Pré-requisitos

Install-Package Vonage

Crie um arquivo chamado ` EnableAccountRequest.cs ` e insira o seguinte código:

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

Ver código-fonte completo

Adicione o seguinte ao arquivo ` EnableAccountRequest.cs`:

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

Ver código-fonte completo

Escreva o código

Adicione o seguinte ao arquivo ` EnableAccountRequest.cs`:

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

Ver código-fonte completo

Pré-requisitos

composer require vonage/client

Crie um arquivo chamado ` reactivate-subaccount.php ` e insira o seguinte código:

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

Ver código-fonte completo

Escreva o código

Adicione o seguinte ao arquivo ` reactivate-subaccount.php`:

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

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

Ver código-fonte completo

Execute seu código

Salve este arquivo no seu computador e execute-o:

php reactivate-subaccount.php

Pré-requisitos

pip install vonage python-dotenv

Escreva o código

Adicione o seguinte ao arquivo ` 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)

Ver código-fonte completo

Execute seu código

Salve este arquivo no seu computador e execute-o:

python subaccounts/reactivate-subaccount.py

Pré-requisitos

gem install vonage

Crie um arquivo chamado ` reactivate-subaccount.rb ` e insira o seguinte código:

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

Ver código-fonte completo

Escreva o código

Adicione o seguinte ao arquivo ` reactivate-subaccount.rb`:

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

Ver código-fonte completo

Execute seu código

Salve este arquivo no seu computador e execute-o:

ruby reactivate-subaccount.rb

Resumo

Neste tópico, você viu como usar a API de Subaccounts para gerenciar clientes finais em cenários comuns.

Outros recursos