Uso de la API de Subaccounts

Visión general

En este tema se describe un caso de uso en el que un socio utiliza la API de Subaccounts para gestionar con éxito a los clientes finales.

Requisitos previos

Deberías estar familiarizado con el conceptos principales relacionadas con la API de Subaccounts.

Crear una subcuenta

Un socio decide crear una subcuenta para cada cliente final y, por lo tanto, puede utilizar credenciales de API distintas para cada uno de los clientes finales y ver sus gastos. Esto se ilustra en el siguiente diagrama:

Subaccounts with shared balance

Para crear una subcuenta, se puede utilizar el siguiente código:

Escriba el código

Añada lo siguiente a 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 fuente completa

Ejecute su código

Guarde este archivo en su máquina y ejecútelo:

bash create-subaccount.sh

Requisitos previos

npm install @vonage/subaccounts

Crea un archivo llamado create-subaccount.js y añade el siguiente código:

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

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

Ver fuente completa

Escriba el código

Añada lo siguiente a create-subaccount.js:

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

Ver fuente completa

Ejecute su código

Guarde este archivo en su máquina y ejecútelo:

node create-subaccount.js

Requisitos previos

Añada lo siguiente a build.gradle:

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

Crea un archivo llamado CreateSubaccount y añade el siguiente código al método main:

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

Ver fuente completa

Escriba el código

Añada lo siguiente al método main del archivo CreateSubaccount:

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

Ver fuente completa

Ejecute su código

Podemos utilizar el plugin aplicación para Gradle para simplificar la ejecución de nuestra aplicación. Actualiza tu build.gradle con lo siguiente:

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

Ejecute el siguiente comando gradle para ejecutar su aplicación, sustituyendo com.vonage.quickstart.kt.subaccounts por el paquete que contiene CreateSubaccount:

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

Requisitos previos

Añada lo siguiente a build.gradle:

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

Crea un archivo llamado CreateSubaccount y añade el siguiente código al método main:

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

Ver fuente completa

Escriba el código

Añada lo siguiente al método main del archivo CreateSubaccount:

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

Ver fuente completa

Ejecute su código

Podemos utilizar el plugin aplicación para Gradle para simplificar la ejecución de nuestra aplicación. Actualiza tu build.gradle con lo siguiente:

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

Ejecute el siguiente comando gradle para ejecutar su aplicación, sustituyendo com.vonage.quickstart.subaccounts por el paquete que contiene CreateSubaccount:

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

Requisitos previos

Install-Package Vonage

Crea un archivo llamado CreateSubAccountRequest.cs y añade el siguiente código:

using Vonage;
using Vonage.Request;

Ver fuente completa

Añada lo siguiente a CreateSubAccountRequest.cs:

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

Ver fuente completa

Escriba el código

Añada lo siguiente a 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 fuente completa

Requisitos previos

composer require vonage/client

Crea un archivo llamado create-subaccount.php y añade el siguiente código:


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

Ver fuente completa

Escriba el código

Añada lo siguiente a 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 fuente completa

Ejecute su código

Guarde este archivo en su máquina y ejecútelo:

php create-subaccount.php

Requisitos previos

pip install vonage python-dotenv

Escriba el código

Añada lo siguiente a 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 fuente completa

Ejecute su código

Guarde este archivo en su máquina y ejecútelo:

python subaccounts/create-subaccount.py

Requisitos previos

gem install vonage

Crea un archivo llamado create-subaccount.rb y añade el siguiente código:

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

Ver fuente completa

Escriba el código

Añada lo siguiente a create-subaccount.rb:

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

Ver fuente completa

Ejecute su código

Guarde este archivo en su máquina y ejecútelo:

ruby create-subaccount.rb

Transferencia de créditos

El socio no podía controlar el gasto de sus clientes finales, ya que todos compartían el mismo saldo. Uno de los clientes finales solía agotar ocasionalmente todo el saldo compartido, lo que impedía de hecho el acceso a las API de Vonage al resto de clientes finales del socio. El socio decidió establecer un saldo individual y asignar un límite de crédito a ese cliente final.

NOTA: El socio podría haber hecho prepago de sus cuentas.

A cada subcuenta se le puede asignar un saldo individual y un límite de crédito, como se muestra en el siguiente diagrama:

Credit allocation

El siguiente fragmento de código ilustra la asignación de una cantidad específica de crédito a una subcuenta:

Escriba el código

Añada lo siguiente a 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 fuente completa

Ejecute su código

Guarde este archivo en su máquina y ejecútelo:

bash transfer-credit.sh

Requisitos previos

npm install @vonage/subaccounts

Crea un archivo llamado transfer-credit.js y añade el siguiente código:

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

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

Ver fuente completa

Escriba el código

Añada lo siguiente a 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 fuente completa

Ejecute su código

Guarde este archivo en su máquina y ejecútelo:

node transfer-credit.js

Requisitos previos

Añada lo siguiente a build.gradle:

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

Crea un archivo llamado TransferCredit y añade el siguiente código al método main:

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

Ver fuente completa

Escriba el código

Añada lo siguiente al método main del archivo TransferCredit:

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

Ver fuente completa

Ejecute su código

Podemos utilizar el plugin aplicación para Gradle para simplificar la ejecución de nuestra aplicación. Actualiza tu build.gradle con lo siguiente:

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

Ejecute el siguiente comando gradle para ejecutar su aplicación, sustituyendo com.vonage.quickstart.kt.subaccounts por el paquete que contiene TransferCredit:

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

Requisitos previos

Añada lo siguiente a build.gradle:

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

Crea un archivo llamado TransferCredit y añade el siguiente código al método main:

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

Ver fuente completa

Escriba el código

Añada lo siguiente al método main del archivo 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 fuente completa

Ejecute su código

Podemos utilizar el plugin aplicación para Gradle para simplificar la ejecución de nuestra aplicación. Actualiza tu build.gradle con lo siguiente:

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

Ejecute el siguiente comando gradle para ejecutar su aplicación, sustituyendo com.vonage.quickstart.subaccounts por el paquete que contiene TransferCredit:

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

Requisitos previos

Install-Package Vonage

Crea un archivo llamado TransferCreditRequest.cs y añade el siguiente código:

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

Ver fuente completa

Añada lo siguiente a TransferCreditRequest.cs:

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

Ver fuente completa

Escriba el código

Añada lo siguiente a TransferCreditRequest.cs:

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

Ver fuente completa

Requisitos previos

composer require vonage/client

Crea un archivo llamado transfer-credit.php y añade el siguiente código:

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

Ver fuente completa

Escriba el código

Añada lo siguiente a 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 fuente completa

Ejecute su código

Guarde este archivo en su máquina y ejecútelo:

php transfer-credit.php

Requisitos previos

pip install vonage python-dotenv

Escriba el código

Añada lo siguiente a 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 fuente completa

Ejecute su código

Guarde este archivo en su máquina y ejecútelo:

python subaccounts/transfer-credit.py

Requisitos previos

gem install vonage

Crea un archivo llamado transfer-credit.rb y añade el siguiente código:

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

Ver fuente completa

Escriba el código

Añada lo siguiente a transfer-credit.rb:

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

Ver fuente completa

Ejecute su código

Guarde este archivo en su máquina y ejecútelo:

ruby transfer-credit.rb

Comprobación del saldo de todas las Subaccounts

El socio decide implementar un sistema de seguimiento. Es posible comprobar periódicamente el saldo de todas las Subaccounts utilizando el siguiente fragmento de código:

Escriba el código

Añada lo siguiente a get-subaccounts.sh:

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

Ver fuente completa

Ejecute su código

Guarde este archivo en su máquina y ejecútelo:

bash get-subaccounts.sh

Requisitos previos

npm install @vonage/subaccounts

Crea un archivo llamado get-subaccounts.js y añade el siguiente código:

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

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

Ver fuente completa

Escriba el código

Añada lo siguiente a get-subaccounts.js:

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

Ver fuente completa

Ejecute su código

Guarde este archivo en su máquina y ejecútelo:

node get-subaccounts.js

Requisitos previos

Añada lo siguiente a build.gradle:

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

Crea un archivo llamado ListSubaccounts y añade el siguiente código al método main:

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

Ver fuente completa

Escriba el código

Añada lo siguiente al método main del archivo ListSubaccounts:

val subaccounts = client.subaccounts.listSubaccounts()

Ver fuente completa

Ejecute su código

Podemos utilizar el plugin aplicación para Gradle para simplificar la ejecución de nuestra aplicación. Actualiza tu build.gradle con lo siguiente:

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

Ejecute el siguiente comando gradle para ejecutar su aplicación, sustituyendo com.vonage.quickstart.kt.subaccounts por el paquete que contiene ListSubaccounts:

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

Requisitos previos

Añada lo siguiente a build.gradle:

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

Crea un archivo llamado ListSubaccounts y añade el siguiente código al método main:

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

Ver fuente completa

Escriba el código

Añada lo siguiente al método main del archivo ListSubaccounts:

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

Ver fuente completa

Ejecute su código

Podemos utilizar el plugin aplicación para Gradle para simplificar la ejecución de nuestra aplicación. Actualiza tu build.gradle con lo siguiente:

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

Ejecute el siguiente comando gradle para ejecutar su aplicación, sustituyendo com.vonage.quickstart.subaccounts por el paquete que contiene ListSubaccounts:

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

Requisitos previos

Install-Package Vonage

Crea un archivo llamado GetSubAccountsRequest.cs y añade el siguiente código:

using Vonage;
using Vonage.Request;

Ver fuente completa

Añada lo siguiente a GetSubAccountsRequest.cs:

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

Ver fuente completa

Escriba el código

Añada lo siguiente a GetSubAccountsRequest.cs:

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

Ver fuente completa

Requisitos previos

composer require vonage/client

Crea un archivo llamado get-subaccounts.php y añade el siguiente código:

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

Ver fuente completa

Escriba el código

Añada lo siguiente a get-subaccounts.php:

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

Ver fuente completa

Ejecute su código

Guarde este archivo en su máquina y ejecútelo:

php get-subaccounts.php

Requisitos previos

pip install vonage python-dotenv

Escriba el código

Añada lo siguiente a 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 fuente completa

Ejecute su código

Guarde este archivo en su máquina y ejecútelo:

python subaccounts/list-subaccounts.py

Requisitos previos

gem install vonage

Crea un archivo llamado list-subaccounts.rb y añade el siguiente código:

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

Ver fuente completa

Escriba el código

Añada lo siguiente a list-subaccounts.rb:

response = client.subaccounts.list

Ver fuente completa

Ejecute su código

Guarde este archivo en su máquina y ejecútelo:

ruby list-subaccounts.rb

Asignación adicional de créditos

Luego de un tiempo, el socio notó que el cliente final 1 (subcuenta1) había agotado todo su crédito (40 de 40) y no podía realizar más llamadas a la API. El socio tenía la opción de esperar a que el cliente final 1 les pagara (y luego, a su vez, realizar un pago a Vonage y transferir el saldo correspondiente a la subcuenta) o aumentar el límite de crédito del cliente final de inmediato para que el cliente final 1 pudiera seguir usando la API de Vonage. El socio decidió asignar crédito adicional. El socio tiene 40 = |-60| - |-20| crédito disponible y decide asignar 20 a la subcuenta. Esto se ilustra en el siguiente diagrama:

Additional credit

Transferencias de saldo a fin de mes

A fin de mes, el socio recibió una factura de |-20| + |-50| = 70 euros de Vonage (por todos los gastos de todas sus cuentas). El cliente final 1 (subcuenta1) cubrió 45 de los 50 euros que había gastado. Por lo tanto, el socio transfirió 45 euros al saldo de la subcuenta1. Esto se ilustra en el siguiente diagrama:

Additional credit

El siguiente código muestra cómo transferir saldo a una subcuenta:

Escriba el código

Añada lo siguiente a 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 fuente completa

Ejecute su código

Guarde este archivo en su máquina y ejecútelo:

bash transfer-balance.sh

Requisitos previos

npm install @vonage/subaccounts

Crea un archivo llamado transfer-balance.js y añade el siguiente código:

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

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

Ver fuente completa

Escriba el código

Añada lo siguiente a 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 fuente completa

Ejecute su código

Guarde este archivo en su máquina y ejecútelo:

node transfer-balance.js

Requisitos previos

Añada lo siguiente a build.gradle:

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

Crea un archivo llamado TransferBalance y añade el siguiente código al método main:

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

Ver fuente completa

Escriba el código

Añada lo siguiente al método main del archivo TransferBalance:

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

Ver fuente completa

Ejecute su código

Podemos utilizar el plugin aplicación para Gradle para simplificar la ejecución de nuestra aplicación. Actualiza tu build.gradle con lo siguiente:

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

Ejecute el siguiente comando gradle para ejecutar su aplicación, sustituyendo com.vonage.quickstart.kt.subaccounts por el paquete que contiene TransferBalance:

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

Requisitos previos

Añada lo siguiente a build.gradle:

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

Crea un archivo llamado TransferBalance y añade el siguiente código al método main:

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

Ver fuente completa

Escriba el código

Añada lo siguiente al método main del archivo 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 fuente completa

Ejecute su código

Podemos utilizar el plugin aplicación para Gradle para simplificar la ejecución de nuestra aplicación. Actualiza tu build.gradle con lo siguiente:

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

Ejecute el siguiente comando gradle para ejecutar su aplicación, sustituyendo com.vonage.quickstart.subaccounts por el paquete que contiene TransferBalance:

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

Requisitos previos

Install-Package Vonage

Crea un archivo llamado TransferBalanceRequest.cs y añade el siguiente código:

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

Ver fuente completa

Añada lo siguiente a TransferBalanceRequest.cs:

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

Ver fuente completa

Escriba el código

Añada lo siguiente a TransferBalanceRequest.cs:

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

Ver fuente completa

Requisitos previos

composer require vonage/client

Crea un archivo llamado transfer-balance.php y añade el siguiente código:

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

Ver fuente completa

Escriba el código

Añada lo siguiente a 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 fuente completa

Ejecute su código

Guarde este archivo en su máquina y ejecútelo:

php transfer-balance.php

Requisitos previos

pip install vonage python-dotenv

Escriba el código

Añada lo siguiente a 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 fuente completa

Ejecute su código

Guarde este archivo en su máquina y ejecútelo:

python subaccounts/transfer-balance.py

Requisitos previos

gem install vonage

Crea un archivo llamado transfer-balance.rb y añade el siguiente código:

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

Ver fuente completa

Escriba el código

Añada lo siguiente a transfer-balance.rb:

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

Ver fuente completa

Ejecute su código

Guarde este archivo en su máquina y ejecútelo:

ruby transfer-balance.rb

Suspender una subcuenta

Al Socio le gustó la posibilidad de controlar el gasto de la subcuenta y decidió asignar saldo individual y crédito de 30 euros al cliente final 2 (subcuenta2). El Socio, que estaba controlando el gasto de sus subcuentas, observó que la subcuenta2 consumía 25 euros de su saldo. Alarmado por el ritmo de gasto de la subcuenta2, el Socio decidió suspender temporalmente la subcuenta2. El código para suspender una subcuenta se muestra aquí:

Escriba el código

Añada lo siguiente a 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 fuente completa

Ejecute su código

Guarde este archivo en su máquina y ejecútelo:

bash suspend-subaccount.sh

Requisitos previos

npm install @vonage/subaccounts

Crea un archivo llamado suspend-subaccount.js y añade el siguiente código:

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

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

Ver fuente completa

Escriba el código

Añada lo siguiente a suspend-subaccount.js:

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

Ver fuente completa

Ejecute su código

Guarde este archivo en su máquina y ejecútelo:

node suspend-subaccount.js

Requisitos previos

Añada lo siguiente a build.gradle:

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

Crea un archivo llamado SuspendSubaccount y añade el siguiente código al método main:

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

Ver fuente completa

Escriba el código

Añada lo siguiente al método main del archivo SuspendSubaccount:

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

Ver fuente completa

Ejecute su código

Podemos utilizar el plugin aplicación para Gradle para simplificar la ejecución de nuestra aplicación. Actualiza tu build.gradle con lo siguiente:

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

Ejecute el siguiente comando gradle para ejecutar su aplicación, sustituyendo com.vonage.quickstart.kt.subaccounts por el paquete que contiene SuspendSubaccount:

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

Requisitos previos

Añada lo siguiente a build.gradle:

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

Crea un archivo llamado DeactivateSubaccount y añade el siguiente código al método main:

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

Ver fuente completa

Escriba el código

Añada lo siguiente al método main del archivo DeactivateSubaccount:

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

Ver fuente completa

Ejecute su código

Podemos utilizar el plugin aplicación para Gradle para simplificar la ejecución de nuestra aplicación. Actualiza tu build.gradle con lo siguiente:

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

Ejecute el siguiente comando gradle para ejecutar su aplicación, sustituyendo com.vonage.quickstart.subaccounts por el paquete que contiene DeactivateSubaccount:

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

Requisitos previos

Install-Package Vonage

Crea un archivo llamado SuspendAccountRequest.cs y añade el siguiente código:

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

Ver fuente completa

Añada lo siguiente a SuspendAccountRequest.cs:

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

Ver fuente completa

Escriba el código

Añada lo siguiente a SuspendAccountRequest.cs:

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

Ver fuente completa

Requisitos previos

composer require vonage/client

Crea un archivo llamado suspend-subaccount.php y añade el siguiente código:

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

Ver fuente completa

Escriba el código

Añada lo siguiente a suspend-subaccount.php:

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

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

Ver fuente completa

Ejecute su código

Guarde este archivo en su máquina y ejecútelo:

php suspend-subaccount.php

Requisitos previos

pip install vonage python-dotenv

Escriba el código

Añada lo siguiente a 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 fuente completa

Ejecute su código

Guarde este archivo en su máquina y ejecútelo:

python subaccounts/suspend-subaccount.py

Requisitos previos

gem install vonage

Crea un archivo llamado suspend-subaccount.rb y añade el siguiente código:

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

Ver fuente completa

Escriba el código

Añada lo siguiente a suspend-subaccount.rb:

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

Ver fuente completa

Ejecute su código

Guarde este archivo en su máquina y ejecútelo:

ruby suspend-subaccount.rb

Reactivar una subcuenta

Tras mantener conversaciones con «subaccount2», el socio decide reactivar la cuenta de «subaccount2». Esto se puede hacer utilizando el siguiente código:

Escriba el código

Añada lo siguiente a 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 fuente completa

Ejecute su código

Guarde este archivo en su máquina y ejecútelo:

bash reactivate-subaccount.sh

Requisitos previos

npm install @vonage/subaccounts

Crea un archivo llamado reactivate-subaccount.js y añade el siguiente código:

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

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

Ver fuente completa

Escriba el código

Añada lo siguiente a reactivate-subaccount.js:

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

Ver fuente completa

Ejecute su código

Guarde este archivo en su máquina y ejecútelo:

node reactivate-subaccount.js

Requisitos previos

Añada lo siguiente a build.gradle:

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

Crea un archivo llamado ReactivateSubaccount y añade el siguiente código al método main:

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

Ver fuente completa

Escriba el código

Añada lo siguiente al método main del archivo ReactivateSubaccount:

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

Ver fuente completa

Ejecute su código

Podemos utilizar el plugin aplicación para Gradle para simplificar la ejecución de nuestra aplicación. Actualiza tu build.gradle con lo siguiente:

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

Ejecute el siguiente comando gradle para ejecutar su aplicación, sustituyendo com.vonage.quickstart.kt.subaccounts por el paquete que contiene ReactivateSubaccount:

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

Requisitos previos

Añada lo siguiente a build.gradle:

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

Crea un archivo llamado ReactivateSubaccount y añade el siguiente código al método main:

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

Ver fuente completa

Escriba el código

Añada lo siguiente al método main del archivo ReactivateSubaccount:

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

Ver fuente completa

Ejecute su código

Podemos utilizar el plugin aplicación para Gradle para simplificar la ejecución de nuestra aplicación. Actualiza tu build.gradle con lo siguiente:

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

Ejecute el siguiente comando gradle para ejecutar su aplicación, sustituyendo com.vonage.quickstart.subaccounts por el paquete que contiene ReactivateSubaccount:

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

Requisitos previos

Install-Package Vonage

Crea un archivo llamado EnableAccountRequest.cs y añade el siguiente código:

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

Ver fuente completa

Añada lo siguiente a EnableAccountRequest.cs:

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

Ver fuente completa

Escriba el código

Añada lo siguiente a EnableAccountRequest.cs:

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

Ver fuente completa

Requisitos previos

composer require vonage/client

Crea un archivo llamado reactivate-subaccount.php y añade el siguiente código:

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

Ver fuente completa

Escriba el código

Añada lo siguiente a reactivate-subaccount.php:

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

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

Ver fuente completa

Ejecute su código

Guarde este archivo en su máquina y ejecútelo:

php reactivate-subaccount.php

Requisitos previos

pip install vonage python-dotenv

Escriba el código

Añada lo siguiente a 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 fuente completa

Ejecute su código

Guarde este archivo en su máquina y ejecútelo:

python subaccounts/reactivate-subaccount.py

Requisitos previos

gem install vonage

Crea un archivo llamado reactivate-subaccount.rb y añade el siguiente código:

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

Ver fuente completa

Escriba el código

Añada lo siguiente a reactivate-subaccount.rb:

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

Ver fuente completa

Ejecute su código

Guarde este archivo en su máquina y ejecútelo:

ruby reactivate-subaccount.rb

Resumen

En este tema ha visto cómo utilizar la API de Subaccounts para gestionar clientes finales en escenarios típicos.

Otros recursos