public Tuple <Guid?, Guid?> GetIdsFromPosData(NBitpayClient.Invoice invoice)
        {
            Guid?orgId  = null;
            Guid?userId = null;

            if (invoice != null && !string.IsNullOrWhiteSpace(invoice.PosData) && invoice.PosData.Contains(":"))
            {
                var mainParts = invoice.PosData.Split(',');
                foreach (var mainPart in mainParts)
                {
                    var parts = mainPart.Split(':');
                    if (parts.Length > 1 && Guid.TryParse(parts[1], out var id))
                    {
                        if (parts[0] == "userId")
                        {
                            userId = id;
                        }
                        else if (parts[0] == "organizationId")
                        {
                            orgId = id;
                        }
                    }
                }
            }

            return(new Tuple <Guid?, Guid?>(orgId, userId));
        }
        private DateTime GetTransactionDate(NBitpayClient.Invoice invoice)
        {
            var transactions = invoice.Transactions?.Where(t => t.Type == null &&
                                                           !string.IsNullOrWhiteSpace(t.Confirmations) && t.Confirmations != "0");

            if (transactions != null && transactions.Count() == 1)
            {
                return(transactions.First().ReceivedTime.DateTime);
            }
            return(invoice.CurrentTime.DateTime);
        }
示例#3
0
        public NBitpayClient.Invoice ToBitpayClientInvoice(GlobalSettings globalSettings)
        {
            var inv = new NBitpayClient.Invoice
            {
                Price       = Amount.Value,
                Currency    = "USD",
                RedirectURL = ReturnUrl,
                BuyerEmail  = Email,
                Buyer       = new NBitpayClient.Buyer
                {
                    email = Email,
                    Name  = Name
                },
                NotificationURL       = globalSettings.BitPay.NotificationUrl,
                FullNotifications     = true,
                ExtendedNotifications = true
            };

            var posData = string.Empty;

            if (UserId.HasValue)
            {
                posData = "userId:" + UserId.Value;
            }
            else if (OrganizationId.HasValue)
            {
                posData = "organizationId:" + OrganizationId.Value;
            }

            if (Credit)
            {
                posData     += ",accountCredit:1";
                inv.ItemDesc = "Bitwarden Account Credit";
            }
            else
            {
                inv.ItemDesc = "Bitwarden";
            }

            inv.PosData = posData;
            return(inv);
        }
示例#4
0
 public Task <NBitpayClient.Invoice> CreateInvoiceAsync(NBitpayClient.Invoice invoice)
 {
     return(_bpClient.CreateInvoiceAsync(invoice));
 }
 private bool IsAccountCredit(NBitpayClient.Invoice invoice)
 {
     return(invoice != null && invoice.PosData != null && invoice.PosData.Contains("accountCredit:1"));
 }