use alxmsl\Cli\CommandPosix;
use alxmsl\Cli\Exception\RequiredOptionException;
use alxmsl\Cli\Option;
use alxmsl\Google\AndroidPublisher\Purchases\Subscriptions\SubscriptionsClient;
$accessToken = '';
$packageName = '';
$subscriptionId = '';
$token = '';
$Command = new CommandPosix();
$Command->appendHelpParameter('show help');
$Command->appendParameter(new Option('access', 'a', 'access token', Option::TYPE_STRING, true), function ($name, $value) use(&$accessToken) {
    $accessToken = $value;
});
$Command->appendParameter(new Option('package', 'p', 'package name', Option::TYPE_STRING), function ($name, $value) use(&$packageName) {
    $packageName = $value;
});
$Command->appendParameter(new Option('subscription', 's', 'subscription id', Option::TYPE_STRING, true), function ($name, $value) use(&$subscriptionId) {
    $subscriptionId = $value;
});
$Command->appendParameter(new Option('token', 't', 'purchase token', Option::TYPE_STRING, true), function ($name, $value) use(&$token) {
    $token = $value;
});
try {
    $Command->parse(true);
    $Client = new SubscriptionsClient();
    $Client->setPackage($packageName)->setAccessToken($accessToken);
    $Resource = $Client->refund($subscriptionId, $token);
    printf("subscription %s refunded\n", $subscriptionId);
} catch (RequiredOptionException $Ex) {
    $Command->displayHelp();
}