public async Task <Bundle> CreateSubscriptionsWithAddOns(IEnumerable <Subscription> subscriptions, RequestOptions inputOptions, DateTime?requestedDate = null, int?timeoutSec = null) { foreach (var subscription in subscriptions) { ValidateSubscription(subscription); } var queryParams = new MultiMap <string>().Create(inputOptions.QueryParams); if (timeoutSec.HasValue && timeoutSec.Value > 0) { queryParams.Add(Configuration.QUERY_CALL_COMPLETION, "true"); queryParams.Add(Configuration.QUERY_CALL_TIMEOUT, timeoutSec.Value.ToString()); } if (requestedDate.HasValue) { queryParams.Add(Configuration.QUERY_REQUESTED_DT, requestedDate.Value.ToDateString()); } // var httpTimeout = Math.Max(Configuration.DEFAULT_HTTP_TIMEOUT_SEC, timeoutSec ?? 0); var uri = Configuration.SUBSCRIPTIONS_PATH + "/" + Configuration.CREATEENTITLEMENTS_WITHADDONS; var followLocation = inputOptions.FollowLocation ?? true; var requestOptions = inputOptions.Extend().WithQueryParams(queryParams).WithFollowLocation(followLocation).Build(); return(await _client.Post <Bundle>(uri, subscriptions, requestOptions)); }
public async Task <Subscription> CreateSubscription(Subscription subscription, RequestOptions inputOptions, DateTime?requestedDate = null, bool?isMigrated = null) { ValidateSubscription(subscription); // var httpTimeout = Configuration.DEFAULT_HTTP_TIMEOUT_SEC; var followLocation = inputOptions.FollowLocation ?? true; var queryParams = new MultiMap <string>().Create(inputOptions.QueryParams); // if (timeoutSec.HasValue) // { // queryParams.Add(Configuration.QUERY_CALL_COMPLETION, timeoutSec.Value > 0 ? "true" : "false"); // queryParams.Add(Configuration.QUERY_CALL_TIMEOUT, timeoutSec.Value.ToString()); // timeoutSec = timeoutSec.Value; // } if (requestedDate.HasValue) { queryParams.Add(Configuration.QUERY_REQUESTED_DT, requestedDate.Value.ToShortDateString()); } if (isMigrated.HasValue) { queryParams.Add(Configuration.QUERY_MIGRATED, isMigrated.ToString()); } var requestOptions = inputOptions.Extend().WithQueryParams(queryParams).WithFollowLocation(followLocation).Build(); // return client.Post<Subscription>(Configuration.SUBSCRIPTIONS_PATH, subscription, requestOptions, httpTimeout); return(await _client.Post <Subscription>(Configuration.SUBSCRIPTIONS_PATH, subscription, requestOptions)); }
public async Task CancelSubscription(Guid subscriptionId, RequestOptions inputOptions, DateTime?requestedDate = null, bool?useRequestedDateForBilling = null, EntitlementActionPolicy?entitlementPolicy = null, BillingActionPolicy?billingPolicy = null) { var uri = Configuration.SUBSCRIPTIONS_PATH + "/" + subscriptionId; var queryParams = new MultiMap <string>().Create(inputOptions.QueryParams); // if (timeoutSec.HasValue) // { // queryParams.Add(Configuration.QUERY_CALL_COMPLETION, timeoutSec.Value > 0 ? "true" : "false"); // queryParams.Add(Configuration.QUERY_CALL_TIMEOUT, timeoutSec.Value.ToString()); // timeoutSec = timeoutSec.Value; // } if (requestedDate.HasValue) { queryParams.Add(Configuration.QUERY_REQUESTED_DT, requestedDate.Value.ToShortDateString()); } if (entitlementPolicy.HasValue) { queryParams.Add(Configuration.QUERY_ENTITLEMENT_POLICY, entitlementPolicy.ToString()); } if (billingPolicy.HasValue) { queryParams.Add(Configuration.QUERY_BILLING_POLICY, billingPolicy.ToString()); } if (useRequestedDateForBilling.HasValue) { queryParams.Add(Configuration.QUERY_USE_REQUESTED_DATE_FOR_BILLING, useRequestedDateForBilling.Value ? "true" : "false"); } var requestOptions = inputOptions.Extend().WithQueryParams(queryParams).Build(); await _client.Delete(uri, requestOptions); }
public async Task <Subscription> UpdateSubscription(Subscription subscription, RequestOptions inputOptions, BillingActionPolicy?billingPolicy = null, DateTime?requestedDate = null, bool?isMigrated = null) { if (subscription.SubscriptionId.Equals(Guid.Empty)) { throw new ArgumentException("Subscription#subscriptionId cannot be empty"); } ValidateSubscription(subscription, false); var uri = Configuration.SUBSCRIPTIONS_PATH + "/" + subscription.SubscriptionId; var queryParams = new MultiMap <string>().Create(inputOptions.QueryParams); // if (timeoutSec.HasValue) // { // queryParams.Add(Configuration.QUERY_CALL_COMPLETION, timeoutSec.Value > 0 ? "true" : "false"); // queryParams.Add(Configuration.QUERY_CALL_TIMEOUT, timeoutSec.Value.ToString()); // timeoutSec = timeoutSec.Value; // } if (requestedDate.HasValue) { queryParams.Add(Configuration.QUERY_REQUESTED_DT, requestedDate.Value.ToShortDateString()); } if (billingPolicy.HasValue) { queryParams.Add(Configuration.QUERY_BILLING_POLICY, billingPolicy.ToString()); } var requestOptions = inputOptions.Extend().WithQueryParams(queryParams).Build(); return(await _client.Put <Subscription>(uri, subscription, requestOptions)); }
private async Task <IEnumerable <InvoiceItem> > CreateExternalCharges(Guid accountId, IEnumerable <InvoiceItem> externalCharges, DateTime?requestedDate, bool autoPay, bool autoCommit, string paymentExternalKey, string transactionExternalKey, RequestOptions inputOptions) { var uri = Configuration.INVOICES_PATH + "/" + Configuration.CHARGES + "/" + accountId; var queryParams = new MultiMap <string>(); if (requestedDate.HasValue) { queryParams.Add(Configuration.QUERY_REQUESTED_DT, requestedDate.Value.ToDateString()); } queryParams.Add(Configuration.QUERY_PAY_INVOICE, autoPay.ToString()); queryParams.Add(Configuration.QUERY_AUTO_COMMIT, autoCommit.ToString()); if (!string.IsNullOrEmpty(paymentExternalKey)) { queryParams.Add(Configuration.QUERY_PAYMENT_EXT_KEY, paymentExternalKey); } if (!string.IsNullOrEmpty(transactionExternalKey)) { queryParams.Add(Configuration.QUERY_TRANSACTION_EXT_KEY, transactionExternalKey); } var requestOptions = inputOptions.Extend().WithQueryParams(queryParams).Build(); return(await _client.Post <List <InvoiceItem> >(uri, externalCharges, requestOptions)); }
public async Task <Account> CreateAccount(Account account, RequestOptions inputOptions) { var followLocation = inputOptions.FollowLocation ?? true; var requestOptions = inputOptions.Extend().WithFollowLocation(followLocation).Build(); return(await _client.Post <Account>(Configuration.ACCOUNTS_PATH, account, requestOptions)); }
public async Task <Tenant> GetTenant(string apiKey, RequestOptions inputOptions) { var uri = Configuration.TENANTS_PATH; var queryParams = new MultiMap <string>().Create(inputOptions.QueryParams); queryParams.Add(Configuration.QUERY_API_KEY, apiKey); var requestOptions = inputOptions.Extend().WithQueryParams(queryParams).Build(); return(await _client.Get <Tenant>(uri, requestOptions)); }
public async Task <Credit> GetCredit(Guid creditId, RequestOptions inputOptions, AuditLevel auditLevel = DefaultAuditLevel) { var uri = Configuration.CREDITS_PATH + "/" + creditId; var queryParams = new MultiMap <string>().Create(inputOptions.QueryParams); queryParams.Add(Configuration.QUERY_AUDIT, auditLevel.ToString()); var requestOptions = inputOptions.Extend().WithQueryParams(queryParams).Build(); return(await _client.Get <Credit>(uri, requestOptions)); }
public async Task DeletePaymentMethod(Guid paymentMethodId, RequestOptions inputOptions, bool deleteDefault = false, bool forceDeleteDefault = false) { var uri = Configuration.PAYMENT_METHODS_PATH + "/" + paymentMethodId; var queryParams = new MultiMap <string>().Create(inputOptions.QueryParams); queryParams.Add(Configuration.QUERY_DELETE_DEFAULT_PM_WITH_AUTO_PAY_OFF, deleteDefault.ToString()); queryParams.Add(Configuration.QUERY_FORCE_DEFAULT_PM_DELETION, forceDeleteDefault.ToString()); var requestOptions = inputOptions.Extend().WithQueryParams(queryParams).Build(); await _client.Delete(uri, requestOptions); }
public async Task <Account> UpdateAccount(Account account, bool treatNullAsReset, RequestOptions inputOptions) { var uri = Configuration.ACCOUNTS_PATH + "/" + account.AccountId; var queryParams = new MultiMap <string>().Create(inputOptions.QueryParams); queryParams.Add(Configuration.QUERY_ACCOUNT_TREAT_NULL_AS_RESET, treatNullAsReset ? "true" : "false"); var requestOptions = inputOptions.Extend().WithQueryParams(queryParams).Build(); return(await _client.Put <Account>(uri, account, requestOptions)); }
public async Task <InvoicePayments> GetInvoicePaymentsForAccount(Guid accountId, RequestOptions inputOptions, AuditLevel auditLevel = DefaultAuditLevel) { var uri = Configuration.ACCOUNTS_PATH + "/" + accountId + "/" + Configuration.INVOICE_PAYMENTS; var queryParams = new MultiMap <string>().Create(inputOptions.QueryParams); queryParams.Add(Configuration.QUERY_AUDIT, auditLevel.ToString()); var requestOptions = inputOptions.Extend().WithQueryParams(queryParams).Build(); return(await _client.Get <InvoicePayments>(uri, requestOptions)); }
// TENANT KEY public async Task <TenantKey> RegisterCallBackNotificationForTenant(string callback, RequestOptions inputOptions) { var uri = Configuration.TENANTS_PATH + "/" + Configuration.REGISTER_NOTIFICATION_CALLBACK; var followLocation = inputOptions.FollowLocation ?? true; var queryParams = new MultiMap <string>().Create(inputOptions.QueryParams); queryParams.Add(Configuration.QUERY_NOTIFICATION_CALLBACK, callback); var requestOptions = inputOptions.Extend().WithFollowLocation(followLocation).WithQueryParams(queryParams).Build(); return(await _client.Post <TenantKey>(uri, null, requestOptions)); }
// ACCOUNT TIMELINE public async Task <AccountTimeline> GetAccountTimeline(Guid accountId, RequestOptions inputOptions, AuditLevel auditLevel = DefaultAuditLevel) { var uri = Configuration.ACCOUNTS_PATH + "/" + accountId + "/" + Configuration.TIMELINE; var queryParams = new MultiMap <string>().Create(inputOptions.QueryParams); queryParams.Add(Configuration.QUERY_AUDIT, auditLevel.ToString()); var requestOptions = inputOptions.Extend().WithQueryParams(queryParams).Build(); return(await _client.Get <AccountTimeline>(uri, requestOptions)); }
public async Task <Bundles> GetAccountBundles(Guid accountId, string externalKey, RequestOptions inputOptions) { var uri = Configuration.ACCOUNTS_PATH + "/" + accountId + "/" + Configuration.BUNDLES; var queryParams = new MultiMap <string>().Create(inputOptions.QueryParams); queryParams.Add(Configuration.QUERY_EXTERNAL_KEY, externalKey); var requestOptions = inputOptions.Extend().WithQueryParams(queryParams).Build(); return(await _client.Get <Bundles>(uri, requestOptions)); }
public async Task <List <PlanDetail> > GetAvailableAddons(string baseProductName, RequestOptions inputOptions) { var uri = Configuration.CATALOG_PATH + "/" + Configuration.AVAILABLEADDONS; var queryParams = new MultiMap <string>().Create(inputOptions.QueryParams); queryParams.Add("baseProductName", baseProductName); var requestOptions = inputOptions.Extend().WithQueryParams(queryParams).Build(); return(await _client.Get <List <PlanDetail> >(uri, requestOptions)); }
// PAYMENT METHODS public async Task <PaymentMethod> GetPaymentMethod(Guid paymentMethodId, RequestOptions inputOptions, bool withPluginInfo = false, AuditLevel auditLevel = DefaultAuditLevel) { var uri = Configuration.PAYMENT_METHODS_PATH + "/" + paymentMethodId; var queryParams = new MultiMap <string>().Create(inputOptions.QueryParams); queryParams.Add(Configuration.QUERY_WITH_PLUGIN_INFO, withPluginInfo.ToString()); queryParams.Add(Configuration.QUERY_AUDIT, auditLevel.ToString()); var requestOptions = inputOptions.Extend().WithQueryParams(queryParams).Build(); return(await _client.Get <PaymentMethod>(uri, requestOptions)); }
// BUNDLES public async Task <Bundles> GetBundles(RequestOptions inputOptions, long offset = 0L, long limit = 100L, AuditLevel auditLevel = DefaultAuditLevel) { var uri = Configuration.BUNDLES_PATH + "/" + Configuration.PAGINATION; var queryParams = new MultiMap <string>().Create(inputOptions.QueryParams); queryParams.Add(Configuration.QUERY_SEARCH_OFFSET, offset.ToString()); queryParams.Add(Configuration.QUERY_SEARCH_LIMIT, limit.ToString()); queryParams.Add(Configuration.QUERY_AUDIT, auditLevel.ToString()); var requestOptions = inputOptions.Extend().WithQueryParams(queryParams).Build(); return(await _client.Get <Bundles>(uri, requestOptions)); }
public async Task <Account> GetAccount(string externalKey, RequestOptions inputOptions, bool withBalance = false, bool withCba = false) { var uri = Configuration.ACCOUNTS_PATH; var queryParams = new MultiMap <string>().Create(inputOptions.QueryParams); queryParams.Add(Configuration.QUERY_EXTERNAL_KEY, externalKey); queryParams.Add(Configuration.QUERY_ACCOUNT_WITH_BALANCE, withBalance ? "true" : "false"); queryParams.Add(Configuration.QUERY_ACCOUNT_WITH_BALANCE_AND_CBA, withCba ? "true" : "false"); var requestOptions = inputOptions.Extend().WithQueryParams(queryParams).Build(); return(await _client.Get <Account>(uri, requestOptions)); }
// INVOICE public async Task <Invoice> CreateInvoice(Guid accountId, DateTime futureDate, RequestOptions inputOptions) { var followLocation = inputOptions.FollowLocation ?? true; var queryParams = new MultiMap <string>().Create(inputOptions.QueryParams); queryParams.Add(Configuration.QUERY_ACCOUNT_ID, accountId.ToString()); queryParams.Add(Configuration.QUERY_TARGET_DATE, futureDate.ToDateString()); var requestOptions = inputOptions.Extend().WithFollowLocation(followLocation).WithQueryParams(queryParams).Build(); return(await _client.Post <Invoice>(Configuration.INVOICES_PATH, null, requestOptions)); }
public async Task <PaymentMethods> GetPaymentMethodsForAccount(Guid accountId, RequestOptions inputOptions, Dictionary <string, string> pluginProperties = null, bool withPluginInfo = false, AuditLevel auditLevel = DefaultAuditLevel) { var uri = Configuration.ACCOUNTS_PATH + "/" + accountId + "/" + Configuration.PAYMENT_METHODS; var queryParams = new MultiMap <string>().Create(inputOptions.QueryParams); queryParams.Add(Configuration.QUERY_WITH_PLUGIN_INFO, withPluginInfo.ToString()); queryParams.Add(Configuration.QUERY_AUDIT, auditLevel.ToString()); StorePluginPropertiesAsParams(pluginProperties, ref queryParams); var requestOptions = inputOptions.Extend().WithQueryParams(queryParams).Build(); return(await _client.Get <PaymentMethods>(uri, requestOptions)); }
private async Task <Invoice> GetInvoiceByIdOrNumber(string invoiceIdOrNumber, RequestOptions inputOptions, bool withItems = false, bool withChildrenItems = false, AuditLevel auditLevel = DefaultAuditLevel) { var uri = Configuration.INVOICES_PATH + "/" + invoiceIdOrNumber; var queryParams = new MultiMap <string>().Create(inputOptions.QueryParams); queryParams.Add(Configuration.QUERY_INVOICE_WITH_ITEMS, withItems.ToString()); queryParams.Add(Configuration.QUERY_INVOICE_WITH_CHILDREN_ITEMS, withChildrenItems.ToString()); queryParams.Add(Configuration.QUERY_AUDIT, auditLevel.ToString()); var requestOptions = inputOptions.Extend().WithQueryParams(queryParams).Build(); return(await _client.Get <Invoice>(uri, requestOptions)); }
public async Task <Accounts> GetAccounts(long offset, long limit, RequestOptions inputOptions, AuditLevel auditLevel = AuditLevel.NONE) { var uri = Configuration.ACCOUNTS_PATH + "/" + Configuration.PAGINATION; var queryParams = new MultiMap <string>().Create(inputOptions.QueryParams); queryParams.Add(Configuration.QUERY_SEARCH_OFFSET, offset.ToString()); queryParams.Add(Configuration.QUERY_SEARCH_LIMIT, limit.ToString()); queryParams.Add(Configuration.QUERY_AUDIT, auditLevel.ToString()); var requestOptions = inputOptions.Extend().WithQueryParams(queryParams).Build(); return(await _client.Get <Accounts>(uri, requestOptions)); }
// CATALOG public async Task <List <Catalog> > GetCatalogJson(RequestOptions inputOptions, DateTime?requestedDate = null) { var uri = Configuration.CATALOG_PATH; var queryParams = new MultiMap <string>().Create(inputOptions.QueryParams); if (requestedDate.HasValue) { queryParams.Add(Configuration.QUERY_REQUESTED_DT, requestedDate.Value.ToDateString()); } var requestOptions = inputOptions.Extend().WithQueryParams(queryParams).Build(); return(await _client.Get <List <Catalog> >(uri, requestOptions)); }
public async Task <Bundle> GetBundle(string externalKey, RequestOptions inputOptions) { var uri = Configuration.BUNDLES_PATH; var queryParams = new MultiMap <string>().Create(inputOptions.QueryParams); queryParams.Add(Configuration.QUERY_EXTERNAL_KEY, externalKey); var requestOptions = inputOptions.Extend().WithQueryParams(queryParams).Build(); var bundles = await _client.Get <Bundles>(uri, requestOptions); return(bundles?.First()); }
public async Task <Payment> CreatePayment(Guid accountId, Guid?paymentMethodId, PaymentTransaction paymentTransaction, List <string> controlPluginNames, Dictionary <string, string> pluginProperties, RequestOptions inputOptions) { var allowedTransactionTypes = new[] { "AUTHORIZE", "CREDIT", "PURCHASE" }; if (accountId.Equals(Guid.Empty)) { throw new ArgumentException("createPayment#accountId must not be empty"); } if (paymentTransaction == null) { throw new ArgumentNullException(nameof(paymentTransaction)); } if (!allowedTransactionTypes.Contains(paymentTransaction.TransactionType)) { throw new ArgumentException("Invalid paymentTransaction type " + paymentTransaction.TransactionType); } if (paymentTransaction.Amount <= 0) { throw new ArgumentException("PaymentTransaction#amount cannot be 0 or less"); } if (paymentTransaction.Currency == null) { throw new ArgumentException("PaymentTransaction#currency cannot be null"); } var uri = Configuration.ACCOUNTS_PATH + "/" + accountId + "/" + Configuration.PAYMENTS; var param = new MultiMap <string>().Create(inputOptions.QueryParams); if (paymentMethodId.HasValue) { param.Add("paymentMethodId", paymentMethodId.ToString()); } if (controlPluginNames != null && controlPluginNames.Count > 0) { param.PutAll(Configuration.CONTROL_PLUGIN_NAME, controlPluginNames); } StorePluginPropertiesAsParams(pluginProperties, ref param); var followLocation = inputOptions.FollowLocation ?? true; var requestOptions = inputOptions.Extend().WithQueryParams(param).WithFollowLocation(followLocation).Build(); return(await _client.Post <Payment>(uri, paymentTransaction, requestOptions)); }
private async Task <Invoices> SearchInvoices(string key, long offset, long limit, AuditLevel auditLevel, RequestOptions inputOptions) { var utf = Encoding.UTF8.GetBytes(key); var uri = Configuration.INVOICES_PATH + "/" + Configuration.SEARCH + "/" + Encoding.UTF8.GetString(utf); var queryParams = new MultiMap <string>().Create(inputOptions.QueryParams); queryParams.Add(Configuration.QUERY_SEARCH_OFFSET, offset.ToString()); queryParams.Add(Configuration.QUERY_SEARCH_LIMIT, limit.ToString()); queryParams.Add(Configuration.QUERY_AUDIT, auditLevel.ToString()); var requestOptions = inputOptions.Extend().WithQueryParams(queryParams).Build(); return(await _client.Get <Invoices>(uri, requestOptions)); }
public async Task <Invoices> GetInvoices(bool withItems, long offset, long limit, RequestOptions inputOptions, AuditLevel auditLevel = AuditLevel.NONE) { var uri = Configuration.INVOICES_PATH + "/" + Configuration.PAGINATION; var queryParams = new MultiMap <string>().Create(inputOptions.QueryParams); queryParams.Add(Configuration.QUERY_SEARCH_OFFSET, offset.ToString()); queryParams.Add(Configuration.QUERY_SEARCH_LIMIT, limit.ToString()); queryParams.Add(Configuration.QUERY_INVOICE_WITH_ITEMS, withItems.ToString()); queryParams.Add(Configuration.QUERY_AUDIT, auditLevel.ToString()); var requestOptions = inputOptions.Extend().WithQueryParams(queryParams).Build(); return(await _client.Get <Invoices>(uri, requestOptions)); }
public async Task <Invoices> GetInvoicesForAccount(Guid accountId, RequestOptions inputOptions, bool withItems = false, bool unpaidOnly = false, bool includeMigrationInvoices = false, AuditLevel auditLevel = DefaultAuditLevel) { var uri = Configuration.ACCOUNTS_PATH + "/" + accountId + "/" + Configuration.INVOICES; var queryParams = new MultiMap <string>().Create(inputOptions.QueryParams); queryParams.Add(Configuration.QUERY_INVOICE_WITH_ITEMS, withItems.ToString()); queryParams.Add(Configuration.QUERY_UNPAID_INVOICES_ONLY, unpaidOnly.ToString()); queryParams.Add(Configuration.QUERY_WITH_MIGRATION_INVOICES, includeMigrationInvoices.ToString()); queryParams.Add(Configuration.QUERY_AUDIT, auditLevel.ToString()); var requestOptions = inputOptions.Extend().WithQueryParams(queryParams).Build(); return(await _client.Get <Invoices>(uri, requestOptions)); }
// PRICE LIST public async Task <PriceList> GetPriceListFromSubscription(Guid subscriptionId, RequestOptions inputOptions, DateTime?requestedDate = null) { var uri = Configuration.CATALOG_PATH + "/" + Configuration.PRICELIST; var queryParams = new MultiMap <string>().Create(inputOptions.QueryParams); queryParams.Add(Configuration.QUERY_SUBSCRIPTION_ID, subscriptionId.ToString()); if (requestedDate.HasValue) { queryParams.Add(Configuration.QUERY_REQUESTED_DT, requestedDate.Value.ToDateString()); } var requestOptions = inputOptions.Extend().WithQueryParams(queryParams).Build(); return(await _client.Get <PriceList>(uri, requestOptions)); }
public async Task UncancelSubscription(Guid subscriptionId, RequestOptions inputOptions, Dictionary <string, string> pluginProperties = null) { if (subscriptionId == Guid.Empty) { throw new ArgumentNullException(nameof(subscriptionId)); } var uri = Configuration.SUBSCRIPTIONS_PATH + "/" + subscriptionId + "/" + Configuration.UNCANCEL; var queryParams = new MultiMap <string>().Create(inputOptions.QueryParams); StorePluginPropertiesAsParams(pluginProperties, ref queryParams); var requestOptions = inputOptions.Extend().WithQueryParams(queryParams).Build(); await _client.Put(uri, null, requestOptions); }