Esempio n. 1
0
        public override void ProcessRequest()
        {
            string  strRequest = context.Request.GetFromBodyString();
            JObject request    = JObject.Parse(strRequest);

            //Set variables

            Category    = request["category"].ToString();
            ProductName = request["productName"].ToString();
            Value       = request["value"].ToString();
            Status      = request["status"].ToString();
            var Metadata = request["requestMetadata"];

            CommandName = Metadata["command"].ToString();
            Args        = Metadata["args"].ToString();
            Amount      = Value.Split(' ')[1];
            Currency    = Value.Split(' ')[0];

            if (Category == "MobileCheckout")
            {
                TransactionID = request["providerRefId"].ToString();

                try
                {
                    //Check IPs
                    //CheckIP();

                    //Check duplicated transactions
                    CheckIfNotDoneYet(TransactionID);

                    //Check if we are the merchant
                    CheckMerchant(MPesaAccountDetails.Exists(ProductName));

                    //Check currency
                    CheckCurrency(Currency);

                    //Check status
                    CheckStatus(Status, "Success");

                    //All OK, let's proceed
                    Assembly    assembly = Assembly.GetAssembly(typeof(IIpnHandler));
                    var         type     = assembly.GetType(CommandName, true, true);
                    IIpnHandler command  = Activator.CreateInstance(type) as IIpnHandler;

                    command.HandleMPesa(Args, TransactionID, Amount);
                }
                catch (Exception ex)
                {
                    ErrorLogger.Log(ex);
                }
            }
        }
Esempio n. 2
0
        /// <summary>
        /// Creates some general payza button
        /// </summary>
        /// <param name="itemName">Name describing the item or service. Max Length: 50 characters</param>
        /// <param name="amount">The price or cost of the product or service. The value for
        /// amount must be positive. Null or negative numbers are not allowed.</param>
        /// <param name="command">Describes how handler should handle IPN request.
        /// Stored in field apc_1. Max Length: 100 characters</param>
        /// <param name="args">
        /// Custom values you can pass along with the payment button.
        /// The values are not displayed to the payer on our Pay Process page.
        /// Payza returns these fields back in the IPN.
        /// Used by IIpnHandler ('command')
        /// Stored in fields apc_2 - apc_6. Max Length: 100 characters
        /// </param>
        /// <returns>Http address where member should be redirected after clicking button.</returns>
        protected override string generate(string itemName, Money amount, string command, object[] args)
        {
            MPesaAccountDetails accountDetails = PaymentAccountDetails.GetFirstIncomeGateway <MPesaAccountDetails>();

            if (Member.IsLogged)
            {
                AfricasTalkingGateway gateway = new AfricasTalkingGateway(accountDetails.Username, accountDetails.ApiKey);

                Dictionary <string, string> metadata = new Dictionary <string, string>();
                metadata.Add("itemName", itemName);
                metadata.Add("command", command);
                metadata.Add("args", String.Join(ButtonGenerationStrategy.ArgsDelimeter.ToString(), args));

                var reply = gateway.initiateMobilePaymentCheckout(accountDetails.ProductName, Member.CurrentInCache.GetPaymentAddress(PaymentProcessor.MPesa), AppSettings.Site.CurrencyCode,
                                                                  amount.ToDecimal(), metadata);
            }

            string url = String.Empty;

            return(url);
        }
Esempio n. 3
0
 public MPesaButtonGenerationStrategy(MPesaAccountDetails mPesa)
 {
     account = mPesa;
 }