Esempio n. 1
0
        private static async Task <int?> GenerateAndSendReddeInvoice(EntityTypes entityType, IStakeType stakeType, ReddeSettingsDTO reddeSettings, string PayOption, string MomoNumber = null, string voucher = null)
        {
            string customerMobileNumber = MomoNumber ?? stakeType.User.PhoneNumber;

            //string customerEmail = email == "default" ? stakeType.User.Email : email;
            try
            {
                ReddeRequest request = new ReddeRequest
                {
                    Amount          = stakeType.Amount,
                    Appid           = reddeSettings.AppId,
                    Clientreference = stakeType.TxRef,
                    Clienttransid   = stakeType.TxRef,
                    Description     = entityType.ToString() + " Investment",
                    Nickname        = reddeSettings.NickName,
                    Paymentoption   = PayOption,
                    Vouchercode     = voucher,
                    Walletnumber    = FormatGhanaianPhoneNumberWp(customerMobileNumber)
                };

                var httpClient = new HttpClient();


                var data = JsonConvert.SerializeObject(request, new JsonSerializerSettings {
                    ContractResolver = new CamelCasePropertyNamesContractResolver()
                });
                var stringContent = new StringContent(data);
                httpClient.DefaultRequestHeaders.Add("apikey", reddeSettings.ApiKey);
                stringContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");

                var responseMessage = await httpClient.PostAsync("https://api.reddeonline.com/v1/receive", stringContent);

                var contentString = await responseMessage.Content.ReadAsStringAsync();

                ReddeInitialResponse response = JsonConvert.DeserializeObject <ReddeInitialResponse>(contentString);

                return(response.Transactionid);
            }
            catch (Exception ex)
            {
                Console.WriteLine($"GenerateReddeToken {ex.Message}");
                return(null);
            }
        }
Esempio n. 2
0
        public static async Task <int?> GenerateAndSendReddeInvoice(TicketSale ticketSale, ReddeSettingsDTO reddeSettings)
        {
            try
            {
                ReddeRequest request = new ReddeRequest
                {
                    Amount          = ticketSale.Ticket.Price,
                    Appid           = reddeSettings.AppId,
                    Clientreference = ticketSale.BuyerPhone,
                    Clienttransid   = ticketSale.VoucherCode,
                    Description     = "Ticket Sale for " + ticketSale.DateBought,
                    Nickname        = reddeSettings.NickName,
                    Paymentoption   = getReddePayOption(ticketSale.BuyerPhone),
                    Walletnumber    = FormatGhanaianPhoneNumberWp(ticketSale.BuyerPhone)
                };

                var httpClient = new HttpClient();


                var data = JsonConvert.SerializeObject(request, new JsonSerializerSettings {
                    ContractResolver = new CamelCasePropertyNamesContractResolver()
                });
                var stringContent = new StringContent(data);
                httpClient.DefaultRequestHeaders.Add("apikey", reddeSettings.ApiKey);
                stringContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");

                var responseMessage = await httpClient.PostAsync("https://api.reddeonline.com/v1/receive", stringContent);

                var contentString = await responseMessage.Content.ReadAsStringAsync();

                ReddeInitialResponse response = JsonConvert.DeserializeObject <ReddeInitialResponse>(contentString);

                return(response.Transactionid);
            }
            catch (Exception ex)
            {
                Console.WriteLine($"GenerateReddeToken {ex.Message}");
                return(null);
            }
        }
        public async void MomoTransfer(IStakeType stakeType)
        {
            if (Constants.PaymentGateway == PaymentGateway.flutterwave)
            {
                try
                {
                    var data = new
                    {
                        account_bank     = stakeType.User.MomoDetails.Network,
                        account_number   = Misc.FormatGhanaianPhoneNumberWp(stakeType.User.MomoDetails.Number),
                        amount           = stakeType.AmountToWin,
                        seckey           = AppSettings.FlatterWaveSettings.GetApiSecret(),
                        narration        = "Ntoboa " + stakeType + " Winner",
                        currency         = stakeType.User.MomoDetails.Currency,
                        reference        = stakeType.User.Id + DateTime.Now.ToShortDateString() + DateTime.Now.ToShortTimeString() + "_PMCK",
                        beneficiary_name = stakeType.User.FirstName + " " + stakeType.User.LastName,
                        callback_url     = "https://32d4015e.ngrok.io/transaction/momohook"
                    };
                    var payload       = JsonConvert.SerializeObject(data, Misc.getDefaultResolverJsonSettings());
                    var stringContent = new StringContent(payload);
                    stringContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");

                    var httpClient = new HttpClient();
                    HttpResponseMessage response = await httpClient.PostAsync("https://api.ravepay.co/v2/gpx/transfers/create", stringContent);

                    var responseStr    = response.Content.ReadAsStringAsync().Result;
                    var responseObject = JsonConvert.DeserializeObject <TransferResponse>(responseStr);
                    if (responseObject.status == "success")
                    {
                        //If transfer is successfull add a new payment
                        var payment = new Payment
                        {
                            // Reference = responseObject.data.reference,
                        };
                    }
                    else
                    {
                    }
                }
                catch (Exception ex)
                {
                }
            }
            else if (Constants.PaymentGateway == PaymentGateway.redde)
            {
                try
                {
                    var          txRef   = Misc.getTxRef(stakeType.User.MomoDetails.Number);
                    ReddeRequest request = new ReddeRequest
                    {
                        Amount          = stakeType.AmountToWin,
                        Appid           = AppSettings.ReddeSettings.AppId,
                        Clientreference = txRef,
                        Clienttransid   = txRef,
                        Description     = "",
                        Nickname        = AppSettings.ReddeSettings.NickName,
                        Paymentoption   = Misc.getReddePayOption(stakeType.User.MomoDetails.Number),
                        Walletnumber    = Misc.FormatGhanaianPhoneNumberWp(stakeType.User.MomoDetails.Number)
                    };

                    var httpClient = new HttpClient();

                    var data = JsonConvert.SerializeObject(request, new JsonSerializerSettings {
                        ContractResolver = new CamelCasePropertyNamesContractResolver()
                    });
                    var stringContent = new StringContent(data);
                    httpClient.DefaultRequestHeaders.Add("apikey", AppSettings.ReddeSettings.ApiKey);
                    stringContent.Headers.ContentType = new MediaTypeHeaderValue("application/json");

                    var responseMessage = await httpClient.PostAsync("https://api.reddeonline.com/v1/cashout", stringContent);

                    var contentString = await responseMessage.Content.ReadAsStringAsync();

                    ReddeInitialResponse response = JsonConvert.DeserializeObject <ReddeInitialResponse>(contentString);

                    if (response.Status == "OK")
                    {
                        dbContext.Payments.Add(new Payment
                        {
                            ItemPayedFor   = stakeType.GetType().Name + " winning",
                            ItemPayedForId = stakeType.Id,
                            DatePayed      = DateTime.Now
                        });
                        await dbContext.SaveChangesAsync();
                    }
                }
                catch (Exception ex)
                {
                    Console.WriteLine($"MomoTransfer {ex.Message}");
                }
            }
        }