public string GetPesapalUrl(Account userAccount) { Uri pesaPalUri = new Uri("http://demo.pesapal.com/API/PostPesapalDirectOrderV4"); Uri pesapalCallbackUri = new Uri("http://jobmtaani.co.ke/#/home"); string SubscriptionPaymentId = ShortGuid.NewShortGuid().Value; IBuilder builder = GetApiParameterBuilder(pesaPalUri, pesapalCallbackUri); APIHelper <IBuilder> helper = new APIHelper <IBuilder>(builder); List <LineItem> lineItems = new List <LineItem>(); LineItem subscription = new LineItem() { Particulars = "Subscription", UniqueId = SubscriptionPaymentId, Quantity = 1, UnitCost = 50 }; subscription.SubTotal = (subscription.Quantity * subscription.UnitCost); lineItems.Add(subscription); PesapalDirectOrderInfo webOrder = GetWebOrder(userAccount, SubscriptionPaymentId, lineItems, subscription); AddSubscriptionToDB(userAccount, SubscriptionPaymentId); string iframeUrl = helper.PostGetPesapalDirectOrderUrl(webOrder); return(iframeUrl); }
/// <summary> ///Post Donation To PesaPal and Process the response /// </summary> /// <param name="model"></param> /// <returns></returns> protected string PostDonationToPesaPal(DonationViewModel model) { Uri pesapalPostUri = new Uri("https://pesapal.com/API/PostPesapalDirectOrderV4"); Uri pesapalCallBackUri = new Uri(_configuration.GetSection("Configs").GetSection("callback_url").Value); // Setup builder APIHelper <IBuilder> helper = new APIHelper <IBuilder>(new APIPostParametersBuilderV2() .ConsumerKey(_configuration.GetSection("Configs").GetSection("consumerKey").Value) .ConsumerSecret(_configuration.GetSection("Configs").GetSection("consumerSecret").Value) .OAuthVersion(EOAuthVersion.VERSION1) .SignatureMethod(ESignatureMethod.HMACSHA1) .SimplePostHttpMethod(EHttpMethod.GET) .SimplePostBaseUri(pesapalPostUri) .OAuthCallBackUri(pesapalCallBackUri)); // Populate line items var lineItem = new LineItem { Particulars = "Donation", UniqueId = Guid.NewGuid().ToString(), Quantity = 1, UnitCost = model.Amount }; lineItem.SubTotal = (lineItem.Quantity * lineItem.UnitCost); List <LineItem> lineItems = new List <LineItem> { }; lineItems.Add(lineItem); // Compose the donation var webOrder = new PesapalDirectOrderInfo() { Amount = lineItems.Sum(x => x.SubTotal).ToString(), Description = "Donation", Type = "MERCHANT", Reference = Guid.NewGuid().ToString(), Email = model.Email, FirstName = model.FirstName, LastName = model.LastName, PhoneNumber = model.Mobile, LineItems = lineItems }; //Serialize Store donation Details Temporarily TempData["_PesapalDirectOrderInfo"] = JsonConvert.SerializeObject(webOrder); // Post the donation to PesaPal return(helper.PostGetPesapalDirectOrderUrl(webOrder)); }
public string GetPesapalUrl() { Uri pesapalPostUri = new Uri(_pesapalPostUri); Uri pesapalCallBackUri = new Uri("https://www.google.com/"); // Setup builder IBuilder builder = new APIPostParametersBuilderV2() .ConsumerKey(ConsumerKey) .ConsumerSecret(ConsumerSecret) .OAuthVersion(EOAuthVersion.VERSION1) .SignatureMethod(ESignatureMethod.HMACSHA1) .SimplePostHttpMethod(EHttpMethod.GET) .SimplePostBaseUri(pesapalPostUri) .OAuthCallBackUri(pesapalCallBackUri); // Initialize API helper APIHelper <IBuilder> helper = new APIHelper <IBuilder>(builder); // Populate line items var lineItems = new List <LineItem> { }; // For each item purchased, add a lineItem. // For example, if the user purchased 3 of Item A, add a line item as follows: var lineItem = new LineItem { Particulars = "Photo Printing", UniqueId = StationNumber, Quantity = 1, UnitCost = Cost }; lineItem.SubTotal = (lineItem.Quantity * lineItem.UnitCost); lineItems.Add(lineItem); // Do the same for additional items purchased ... // Compose the order PesapalDirectOrderInfo webOrder = new PesapalDirectOrderInfo() { Amount = (lineItems.Sum(x => x.SubTotal)).ToString(), Description = "Photo Printing", Type = "MERCHANT", Reference = GenerateReference(), Email = "*****@*****.**", FirstName = firstName, LastName = lastName, PhoneNumber = phoneNumber, LineItems = lineItems }; // Post the order to PesaPal, which upon successful verification, // will return the string containing the url to load in the iframe return(helper.PostGetPesapalDirectOrderUrl(webOrder)); }