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); } }
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}"); } } }