Beispiel #1
0
        /*   private void StoreTransactionRef()
         * {
         *     //textBox4.Text = pesapal_transaction_tracking_id + "]  [" + pesapal_merchant_reference;
         * }*/

        public String QueryPaymentStatusByMerchant(string reference)
        {
            Uri pesapalQueryPaymentStatusUri = new Uri("_pesapalQueryPaymentStatusUri");

            // Setup builder
            IBuilder builder = new APIPostParametersBuilder()
                               .ConsumerKey(ConsumerKey)
                               .ConsumerSecret(ConsumerSecret)
                               .OAuthVersion(EOAuthVersion.VERSION1)
                               .SignatureMethod(ESignatureMethod.HMACSHA1)
                               .SimplePostHttpMethod(EHttpMethod.GET)
                               .SimplePostBaseUri(pesapalQueryPaymentStatusUri);

            // Initialize API helper
            APIHelper <IBuilder> helper = new APIHelper <IBuilder>(builder);

            try
            {
                // query pesapal for status >> format of the result is
                //pesapal_response_data=<PENDING|COMPLETED|FAILED|INVALID>
                string   result        = helper.PostGetQueryPaymentStatus(reference);
                string[] resultParts   = result.Split(new char[] { '=' });
                string   paymentStatus = resultParts[1]; /* Possible values: PENDING, COMPLETED, FAILED or INVALID*/
                return(result);
            }
            catch (Exception)
            {
                // Handle error
                return("ERROR");
            }
        }
Beispiel #2
0
        public String UpdateIpnTransactionStatus(string pesapal_tracking_id, string reference)
        {
            Uri pesapalQueryPaymentStatusUri = new Uri(_pesapalQueryPaymentStatusUri);

            // Setup builder
            IBuilder builder = new APIPostParametersBuilder()
                               .ConsumerKey(ConsumerKey)
                               .ConsumerSecret(ConsumerSecret)
                               .OAuthVersion(EOAuthVersion.VERSION1)
                               .SignatureMethod(ESignatureMethod.HMACSHA1)
                               .SimplePostHttpMethod(EHttpMethod.GET)
                               .SimplePostBaseUri(pesapalQueryPaymentStatusUri);

            // Initialize API helper
            APIHelper <IBuilder> helper = new APIHelper <IBuilder>(builder);

            try
            {
                // query pesapal for status >> format of the result is
                //pesapal_response_data=<PENDING|COMPLETED|FAILED|INVALID>
                string   result        = helper.PostGetQueryPaymentStatus(pesapal_tracking_id, reference);
                string[] resultParts   = result.Split(new char[] { '=' });
                string   paymentStatus = resultParts[1]; /* Possible values: PENDING, COMPLETED, FAILED or INVALID*/

                return(paymentStatus);
            }
            catch (Exception ex)
            {
                clsGlobalFunctions.ErrorLog(ex); //Log Error
                return("Error");
            }
        }
Beispiel #3
0
        /// <summary>
        /// Payment Details Callback
        /// </summary>
        /// <returns></returns>
        public async Task <IActionResult> ProcessDonationAsync()
        {
            try
            {
                string reference           = Request.Query["pesapal_merchant_reference"].ToString();
                string pesapal_tracking_id = Request.Query["pesapal_transaction_tracking_id"].ToString();

                Uri pesapalQueryUri = new Uri("https://pesapal.com/API/querypaymentdetails");

                IBuilder builder = new APIPostParametersBuilder()
                                   .ConsumerKey(_configuration.GetSection("Configs").GetSection("consumerKey").Value)
                                   .ConsumerSecret(_configuration.GetSection("Configs").GetSection("consumerSecret").Value)
                                   .OAuthVersion(EOAuthVersion.VERSION1)
                                   .SignatureMethod(ESignatureMethod.HMACSHA1)
                                   .SimplePostHttpMethod(EHttpMethod.GET)
                                   .SimplePostBaseUri(pesapalQueryUri);

                APIHelper <IBuilder> helper = new APIHelper <IBuilder>(builder);


                string result = helper.PostGetQueryPaymentDetails(pesapal_tracking_id, reference);

                string[] resultParts         = result.Split(new char[] { '=' });
                string   paymentDetails      = resultParts[1];
                string[] paymentDetailsParts = paymentDetails.Split(new char[] { ',' });

                string pesapalTrackingId = paymentDetailsParts[0];
                string paymentMethod     = paymentDetailsParts[1];
                string paymentStatus     = paymentDetailsParts[2];
                string refnce            = paymentDetailsParts[3];

                //Deserialize TempData
                var _PesapalDirectOrderInfo = JsonConvert.DeserializeObject <PesapalDirectOrderInfo>((string)TempData["_PesapalDirectOrderInfo"]);

                //Build a key pair values for Posting to 3rd Part API
                var parameters = new Dictionary <string, string> {
                    { "pesapalTrackingId", pesapalTrackingId },
                    { "paymentMethod", paymentMethod },
                    { "paymentStatus", paymentStatus },
                    { "reference", _PesapalDirectOrderInfo.Reference },
                    { "BuyerName", _PesapalDirectOrderInfo.FirstName + " " + _PesapalDirectOrderInfo.LastName },
                    { "Email", _PesapalDirectOrderInfo.Email },
                    { "Amount", _PesapalDirectOrderInfo.Amount },
                    { "PhoneNumber", _PesapalDirectOrderInfo.PhoneNumber },
                };
                ViewData["paymentStatus"] = paymentStatus;

                await PostToBackEndAsync(parameters);
            }
            catch (Exception e)
            {
                Console.WriteLine("\nException Caught!");
                Console.WriteLine("Message :{0} ", e.Message);
            }
            return(View());
        }