Пример #1
0
        private static void Test2()
        {
            var codes = new List <Tuple <string, int, int> > ();

            foreach (var pair in PayoutData.GetData())
            {
                var code = Encoder.Conceal(GetUnique(pair.Key, pair.Value));
                codes.Add(new Tuple <string, int, int>(code, pair.Key, pair.Value));
            }

            for (int i = 0; i < codes.Count; i++)
            {
                for (int j = i + 1; j < codes.Count; j++)
                {
                    if (codes[i].Item1 == codes[j].Item1)
                    {
                        Console.WriteLine("Duplicates !!!!!");
                        Console.WriteLine("item on " + i + " : " + codes[i]);
                        Console.WriteLine("item on " + j + " : " + codes[j]);

                        Console.WriteLine($"Duplicate Code {codes[i].Item1}, payout id {codes[i].Item2}, player {codes[i].Item3}");
                        Console.WriteLine($"Duplicate Code {codes[j].Item1}, payout id {codes[j].Item2}, player {codes[j].Item3}");
                    }
                }

                //Console.WriteLine("code :" + codes[i]);
            }
        }
Пример #2
0
 public IPayoutProof ParseProof(PayoutData payout)
 {
     return(null);
 }
Пример #3
0
        public static async Task <ResultVM> TrypayBolt(ILightningClient lightningClient, PayoutBlob payoutBlob, PayoutData payoutData, BOLT11PaymentRequest bolt11PaymentRequest, PaymentMethodId pmi)
        {
            var boltAmount = bolt11PaymentRequest.MinimumAmount.ToDecimal(LightMoneyUnit.BTC);

            if (boltAmount != payoutBlob.CryptoAmount)
            {
                return(new ResultVM
                {
                    PayoutId = payoutData.Id,
                    Result = PayResult.Error,
                    Message = $"The BOLT11 invoice amount ({boltAmount} {pmi.CryptoCode}) did not match the payout's amount ({payoutBlob.CryptoAmount.GetValueOrDefault()} {pmi.CryptoCode})",
                    Destination = payoutBlob.Destination
                });
            }
            var result = await lightningClient.Pay(bolt11PaymentRequest.ToString(), new PayInvoiceParams());

            if (result.Result == PayResult.Ok)
            {
                var message = result.Details?.TotalAmount != null
                    ? $"Paid out {result.Details.TotalAmount.ToDecimal(LightMoneyUnit.BTC)}"
                    : null;
                payoutData.State = PayoutState.Completed;
                return(new ResultVM
                {
                    PayoutId = payoutData.Id,
                    Result = result.Result,
                    Destination = payoutBlob.Destination,
                    Message = message
                });
            }

            return(new ResultVM
            {
                PayoutId = payoutData.Id,
                Result = result.Result,
                Destination = payoutBlob.Destination,
                Message = result.ErrorDetail
            });
        }
Пример #4
0
        public static async Task <(BOLT11PaymentRequest, ResultVM)> GetInvoiceFromLNURL(PayoutData payoutData,
                                                                                        LightningLikePayoutHandler handler, PayoutBlob blob, LNURLPayClaimDestinaton lnurlPayClaimDestinaton, Network network)
        {
            var endpoint = lnurlPayClaimDestinaton.LNURL.IsValidEmail()
                ? LNURL.LNURL.ExtractUriFromInternetIdentifier(lnurlPayClaimDestinaton.LNURL)
                : LNURL.LNURL.Parse(lnurlPayClaimDestinaton.LNURL, out _);
            var httpClient = handler.CreateClient(endpoint);
            var lnurlInfo  =
                (LNURLPayRequest)await LNURL.LNURL.FetchInformation(endpoint, "payRequest",
                                                                    httpClient);

            var lm = new LightMoney(blob.CryptoAmount.Value, LightMoneyUnit.BTC);

            if (lm > lnurlInfo.MaxSendable || lm < lnurlInfo.MinSendable)
            {
                return(null, new ResultVM
                {
                    PayoutId = payoutData.Id,
                    Result = PayResult.Error,
                    Destination = blob.Destination,
                    Message =
                        $"The LNURL provided would not generate an invoice of {lm.MilliSatoshi}msats"
                });
            }

            try
            {
                var lnurlPayRequestCallbackResponse =
                    await lnurlInfo.SendRequest(lm, network, httpClient);

                return(lnurlPayRequestCallbackResponse.GetPaymentRequest(network), null);
            }
            catch (LNUrlException e)
            {
                return(null,
                       new ResultVM
                {
                    PayoutId = payoutData.Id,
                    Result = PayResult.Error,
                    Destination = blob.Destination,
                    Message = e.Message
                });
            }
        }