CoreCommon: payment url with quantity of products
This commit is contained in:
parent
f43a228477
commit
ef7419c9ae
@ -33,7 +33,7 @@ public interface ITariffService
|
||||
IEnumerable<PaymentInfo> GetPayments(int tenantId);
|
||||
string GetButton(int tariffId, string partnerId);
|
||||
Tariff GetTariff(int tenantId, bool withRequestToPaymentSystem = true);
|
||||
Uri GetShoppingUri(int tenant, string currency = null, string language = null, string customerEmail = null, string quantity = null, string backUrl = null);
|
||||
Uri GetShoppingUri(int tenant, string currency = null, string language = null, string customerEmail = null, Dictionary<string, int> quantity = null, string backUrl = null);
|
||||
Uri GetShoppingUri(int? tenant, int quotaId, string affiliateId, string currency = null, string language = null, string customerId = null, string quantity = null);
|
||||
Uri GetShoppingUri(string[] productIds, string affiliateId = null, string currency = null, string language = null, string customerId = null, string quantity = null);
|
||||
void ClearCache(int tenantId);
|
||||
|
@ -309,9 +309,10 @@ public class TariffService : ITariffService
|
||||
return payments;
|
||||
}
|
||||
|
||||
public Uri GetShoppingUri(int tenant, string currency = null, string language = null, string customerEmail = null, string quantity = null, string backUrl = null)
|
||||
public Uri GetShoppingUri(int tenant, string currency = null, string language = null, string customerEmail = null, Dictionary<string, int> quantity = null, string backUrl = null)
|
||||
{
|
||||
var key = "shopingurl_all";
|
||||
var hasQuantity = quantity != null && quantity.Any();
|
||||
var key = "shopingurl_" + (hasQuantity ? string.Join('_', quantity.Keys.ToArray()) : "all");
|
||||
var url = _cache.Get<string>(key);
|
||||
if (url == null)
|
||||
{
|
||||
@ -320,9 +321,12 @@ public class TariffService : ITariffService
|
||||
{
|
||||
try
|
||||
{
|
||||
var productIds = _quotaService.GetTenantQuotas()
|
||||
.Where(q => !string.IsNullOrEmpty(q.ProductId) && q.Visible)
|
||||
.Select(q => q.ProductId);
|
||||
var quotas = _quotaService.GetTenantQuotas()
|
||||
.Where(q =>
|
||||
!string.IsNullOrEmpty(q.ProductId)
|
||||
&& q.Visible);
|
||||
|
||||
var productIds = quantity.Select(item => quotas.FirstOrDefault(q => q.Name == item.Key)?.ProductId);
|
||||
|
||||
var client = GetBillingClient();
|
||||
url =
|
||||
@ -334,7 +338,7 @@ public class TariffService : ITariffService
|
||||
!string.IsNullOrEmpty(currency) ? "__Currency__" : null,
|
||||
!string.IsNullOrEmpty(language) ? "__Language__" : null,
|
||||
!string.IsNullOrEmpty(customerEmail) ? "__CustomerEmail__" : null,
|
||||
!string.IsNullOrEmpty(quantity) ? "__Quantity__" : null,
|
||||
hasQuantity ? "__Quantity__" : null,
|
||||
!string.IsNullOrEmpty(backUrl) ? "__BackUrl__" : null
|
||||
);
|
||||
}
|
||||
@ -358,8 +362,8 @@ public class TariffService : ITariffService
|
||||
.Replace("__Currency__", HttpUtility.UrlEncode(currency ?? ""))
|
||||
.Replace("__Language__", HttpUtility.UrlEncode((language ?? "").ToLower()))
|
||||
.Replace("__CustomerEmail__", HttpUtility.UrlEncode(customerEmail ?? ""))
|
||||
.Replace("__Quantity__", HttpUtility.UrlEncode(quantity ?? ""))
|
||||
.Replace("__BackUrl__", HttpUtility.UrlEncode(backUrl ?? "")));
|
||||
.Replace("__Quantity__", hasQuantity ? string.Join(',', quantity.Values) : "")
|
||||
.Replace("__BackUrl__", HttpUtility.UrlEncode(backUrl ?? "")));
|
||||
return result;
|
||||
}
|
||||
|
||||
|
@ -73,7 +73,7 @@ public class PaymentManager
|
||||
return _tariffService.GetProductPriceInfo(productIds);
|
||||
}
|
||||
|
||||
public Uri GetShoppingUri(string currency = null, string language = null, string customerEmail = null, string quantity = null, string backUrl = null)
|
||||
public Uri GetShoppingUri(string currency = null, string language = null, string customerEmail = null, Dictionary<string, int> quantity = null, string backUrl = null)
|
||||
{
|
||||
return _tariffService.GetShoppingUri(_tenantManager.GetCurrentTenant().Id, currency, language, customerEmail, quantity, backUrl);
|
||||
}
|
||||
|
@ -194,10 +194,10 @@ public class PortalController : ControllerBase
|
||||
public long GetUsersCount()
|
||||
{
|
||||
return _coreBaseSettings.Personal ? 1 : _userManager.GetUserNames(EmployeeStatus.Active).Length;
|
||||
}
|
||||
|
||||
[HttpGet("payment/url")]
|
||||
public Uri GetPaymentUrl(string currency, string backUrl)
|
||||
}
|
||||
|
||||
[HttpPut("payment/url")]
|
||||
public Uri GetPaymentUrl(PaymentUrlRequestsDto inDto)
|
||||
{
|
||||
if (_paymentManager.GetTariffPayments(Tenant.Id).Any()
|
||||
|| !_userManager.GetUsers(_securityContext.CurrentAccount.ID).IsAdmin(_userManager))
|
||||
@ -205,10 +205,11 @@ public class PortalController : ControllerBase
|
||||
return null;
|
||||
}
|
||||
|
||||
return _paymentManager.GetShoppingUri(currency,
|
||||
return _paymentManager.GetShoppingUri(inDto.Currency,
|
||||
Thread.CurrentThread.CurrentCulture.TwoLetterISOLanguageName,
|
||||
_userManager.GetUsers(_securityContext.CurrentAccount.ID).Email,
|
||||
backUrl: backUrl);
|
||||
_userManager.GetUsers(_securityContext.CurrentAccount.ID).Email,
|
||||
inDto.Quantity,
|
||||
inDto.BackUrl);
|
||||
}
|
||||
|
||||
[HttpGet("payment/account")]
|
||||
|
@ -0,0 +1,34 @@
|
||||
// (c) Copyright Ascensio System SIA 2010-2022
|
||||
//
|
||||
// This program is a free software product.
|
||||
// You can redistribute it and/or modify it under the terms
|
||||
// of the GNU Affero General Public License (AGPL) version 3 as published by the Free Software
|
||||
// Foundation. In accordance with Section 7(a) of the GNU AGPL its Section 15 shall be amended
|
||||
// to the effect that Ascensio System SIA expressly excludes the warranty of non-infringement of
|
||||
// any third-party rights.
|
||||
//
|
||||
// This program is distributed WITHOUT ANY WARRANTY, without even the implied warranty
|
||||
// of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. For details, see
|
||||
// the GNU AGPL at: http://www.gnu.org/licenses/agpl-3.0.html
|
||||
//
|
||||
// You can contact Ascensio System SIA at Lubanas st. 125a-25, Riga, Latvia, EU, LV-1021.
|
||||
//
|
||||
// The interactive user interfaces in modified source and object code versions of the Program must
|
||||
// display Appropriate Legal Notices, as required under Section 5 of the GNU AGPL version 3.
|
||||
//
|
||||
// Pursuant to Section 7(b) of the License you must retain the original Product logo when
|
||||
// distributing the program. Pursuant to Section 7(e) we decline to grant you any rights under
|
||||
// trademark law for use of our trademarks.
|
||||
//
|
||||
// All the Product's GUI elements, including illustrations and icon sets, as well as technical writing
|
||||
// content are licensed under the terms of the Creative Commons Attribution-ShareAlike 4.0
|
||||
// International. See the License terms at http://creativecommons.org/licenses/by-sa/4.0/legalcode
|
||||
|
||||
namespace ASC.Web.Api.Models;
|
||||
|
||||
public class PaymentUrlRequestsDto
|
||||
{
|
||||
public Dictionary<string, int> Quantity { get; set; }
|
||||
public string Currency { get; set; }
|
||||
public string BackUrl { get; set; }
|
||||
}
|
Loading…
Reference in New Issue
Block a user