Beispiel #1
0
        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);
        }
Beispiel #2
0
        /// <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));
        }
Beispiel #3
0
        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));
        }