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