protected void Page_Load(object sender, EventArgs e)
        {
            if (!Page.IsPostBack)
            {
                // Used parts from https://www.paypaltech.com/PDTGen/
                // Visit above URL to auto-generate PDT script

                authToken = WebConfigurationManager.AppSettings["PDTToken"];

                //read in txn token from querystring
                txToken = Request.QueryString.Get("tx");

                query = string.Format("cmd=_notify-synch&tx={0}&at={1}", txToken, authToken);

                // Create the request back
                string url = WebConfigurationManager.AppSettings["PayPalSubmitUrl"];
                HttpWebRequest req = (HttpWebRequest)WebRequest.Create(url);

                // Set values for the request back
                req.Method = "POST";
                req.ContentType = "application/x-www-form-urlencoded";
                req.ContentLength = query.Length;

                // Write the request back IPN strings
                StreamWriter stOut = new StreamWriter(req.GetRequestStream(), System.Text.Encoding.ASCII);
                stOut.Write(query);
                stOut.Close();

                // Do the request to PayPal and get the response
                StreamReader stIn = new StreamReader(req.GetResponse().GetResponseStream());
                strResponse = stIn.ReadToEnd();
                stIn.Close();

                //string strResponse = "SUCCESS mc_gross=145.35 protection_eligibility=Ineligible address_status=confirmed payer_id=WJ3SRWX9PXP94 tax=0.00 address_street=1+Main+St payment_date=07%3A13%3A35+Sep+06%2C+2012+PDT payment_status=Pending terminal_id= charset=windows-1252 address_zip=95131 first_name=sdgsd receipt_reference_number= mc_fee=4.52 address_country_code=US address_name=sdgsd+sdgs custom=80%2C9b5dc3f5-54d2-413b-9803-1fbabe6770ac payer_status=verified business=sellpr_1346179874_biz%40yahoo.com address_country=United+States address_city=San+Jose quantity=1 payer_email=adver_1345188328_per%40yahoo.com txn_id=059835996R2655052 payment_type=instant last_name=sdgs address_state=CA receiver_email=sellpr_1346179874_biz%40yahoo.com store_id= payment_fee=4.52 receiver_id=EVBLGJGBR8RL8 pending_reason=paymentreview pos_transaction_type= txn_type=web_accept item_name=ewtwet num_offers=0 mc_currency=USD item_number=1 residence_country=US handling_amount=0.00 transaction_subject=80%2C9b5dc3f5-54d2-413b-9803-1fbabe6770ac payment_gross=145.35 shipping=0.00 ";
                // sanity check

                //Response.Write(strResponse);

                string CustomerID = GetCustomerID();

                PDTHolder pdt = PDTHolder.Parse(strResponse);

                // If response was SUCCESS, parse response string and output details
                //The payment is succesful
                if (strResponse.StartsWith("SUCCESS"))
                {
                    using (var context = new SidejobEntities())
                    {
                        try
                        {
                            var Custom = pdt.Custom.Split(',');
                            //var custom = GetProjectID() + "," + GetCustomerID() + "," + GetPaymentID();
                            int ProjectId = int.Parse(Custom[0]);
                            int CustomerId = int.Parse(Custom[1]);
                            int PaymentId = int.Parse(Custom[2]);

                            var result = from c in context.ArchivedCustomerSuccessfulPDTs
                                          where c.CustomerID == CustomerId && c.ProjectID == ProjectId && c.TransactionId == pdt.TransactionId
                                          select c;
                              var resultQuery = result.FirstOrDefault();
                              if (resultQuery == null)
                              {
                                  HiddenLabel.Text = string.Format("Thank you {0} {1} [{2}] for your payment of {3} {4}!",
                                                                pdt.PayerFirstName, pdt.PayerLastName, pdt.PayerEmail, pdt.GrossTotal, pdt.Currency);

                                  //Insert into Successful PDT
                                  var CustomerSuccessfulPDT = new CustomerSuccessfulPDT
                                  {
                                      PDTID = GetNextSuccessfulPDTID(),
                                      GrossTotal = pdt.GrossTotal,
                                      Invoice = pdt.InvoiceNumber,
                                      PaymentStatus = pdt.PaymentStatus,
                                      FirstName = pdt.PayerFirstName,
                                      LastName = pdt.PayerLastName,
                                      PaymentFee = pdt.PaymentFee,
                                      BusinessEmail = pdt.BusinessEmail,
                                      TxToken = Request.QueryString.Get("tx"),
                                      ReceiverEmail = pdt.ReceiverEmail,
                                      ItemName = pdt.ItemName,
                                      CurrencyCode = pdt.Currency,
                                      TransactionId = pdt.TransactionId,
                                      Custom = pdt.Custom,
                                      //Testing this one
                                      subscriberId = pdt.SubscriberId,
                                      //subscriberId = "",
                                      CustomerID = CustomerId,
                                      ProjectID = ProjectId
                                  };
                                  var PaymentID = int.Parse(Custom[2]);
                                  CustomerPaymentDue currentpaymentdue = (from c in context.CustomerPaymentDues
                                                        where c.PaymentDueID == PaymentID
                                                        select c).FirstOrDefault();

                                //Response.Write(pdt.PaymentStatus.ToString());
                                if (pdt.PaymentStatus == "Completed")
                                {
                                    //Archived PDT
                                    var archivedcustomerSuccessfulPDT = new ArchivedCustomerSuccessfulPDT
                                                                              {
                                                                                  PDTID = GetNextSuccessfulPDTID(),
                                                                                  GrossTotal = pdt.GrossTotal,
                                                                                  Invoice = pdt.InvoiceNumber,
                                                                                  PaymentStatus = pdt.PaymentStatus,
                                                                                  FirstName = pdt.PayerFirstName,
                                                                                  LastName = pdt.PayerLastName,
                                                                                  PaymentFee = pdt.PaymentFee,
                                                                                  BusinessEmail = pdt.BusinessEmail,
                                                                                  TxToken = Request.QueryString.Get("tx"),
                                                                                  ReceiverEmail = pdt.ReceiverEmail,
                                                                                  ItemName = pdt.ItemName,
                                                                                  CurrencyCode = pdt.Currency,
                                                                                  TransactionId = pdt.TransactionId,
                                                                                  Custom = pdt.Custom,
                                                                                  subscriberId = pdt.SubscriberId,
                                                                                  CustomerID = CustomerId,
                                                                                  ProjectID = ProjectId
                                                                              };
                                    context.AddToArchivedCustomerSuccessfulPDTs(archivedcustomerSuccessfulPDT);
                                    //Archived Payment Due
                                    var archivedpaymentdue = new ArchivedCustomerPayment
                                                                 {
                                                                     CustomerID = currentpaymentdue.CustomerID,
                                                                     PaymentDueID = currentpaymentdue.PaymentDueID,
                                                                     ProjectID = currentpaymentdue.ProjectID,
                                                                     ProjectAmount = currentpaymentdue.ProjectAmount,
                                                                     Date = currentpaymentdue.Date,
                                                                     StatusID = currentpaymentdue.StatusID,
                                                                     CurrencyCode = currentpaymentdue.CurrencyCode,
                                                                     PaymentDue = currentpaymentdue.PaymentDue,
                                                                     PhaseStatus = currentpaymentdue.PhaseStatus
                                                                 };
                                    context.AddToArchivedCustomerPayments(archivedpaymentdue);
                                    //Update PaymentDue
                                    context.CustomerPaymentDues.DeleteObject(currentpaymentdue);
                                    context.SaveChanges();

                                    //invoke timeup for customerpayment
                                    //Approve Ad
                                    //ApproveAd(AdID);
                                }
                                else
                                {
                                    currentpaymentdue.Status = pdt.PaymentStatus;
                                    currentpaymentdue.PaymentProcess = true;
                                }
                                context.AddToCustomerSuccessfulPDTs(CustomerSuccessfulPDT);
                                context.SaveChanges();
                            }
                            else
                            {
                                HiddenLabel.Text = Resources.Resource.AlreadyPaid;

                            }
                        }
                        catch (Exception e1)
                        {

                            string failuremessage = pdt.PayerFirstName + " " +
                                                    pdt.PayerLastName + "<br/>";
                            failuremessage += Resources.Resource.FailedTransaction + "<br/>";
                            failuremessage += Resources.Resource.FailurePDT;
                            HiddenLabel.Text = failuremessage;
                        }

                    }

                }
                else
                {
                    using (var context = new SidejobEntities())
                    {
                        try
                        {
                            string[] Custom = pdt.Custom.Split(',');
                            //var custom = GetProjectID() + "," + GetCustomerID() + "," + GetPaymentID();
                            int ProjectId = int.Parse(Custom[0]);
                            int CustomerId = int.Parse(Custom[1]);
                            int PaymentId = int.Parse(Custom[2]);

                            //Insert into HackedPDT
                            var CustomerHackedPDT = new CustomerHackedPDT
                                                          {
                                                                    PDTID = GetNextSuccessfulPDTID(),
                                                                    GrossTotal = pdt.GrossTotal,
                                                                    Invoice = pdt.InvoiceNumber,
                                                                    PaymentStatus = pdt.PaymentStatus,
                                                                    FirstName = pdt.PayerFirstName,
                                                                    LastName = pdt.PayerLastName,
                                                                    PaymentFee = pdt.PaymentFee,
                                                                    BusinessEmail = pdt.BusinessEmail,
                                                                    TxToken = Request.QueryString.Get("tx"),
                                                                    ReceiverEmail = pdt.ReceiverEmail,
                                                                    ItemName = pdt.ItemName,
                                                                    CurrencyCode = pdt.Currency,
                                                                    TransactionId = pdt.TransactionId,
                                                                    Custom = pdt.Custom,
                                                                    SubscriberId = pdt.SubscriberId,
                                                                    CustomerID = CustomerId,
                                                                    ProjectID = ProjectId
                                                          };
                            context.AddToCustomerHackedPDTs(CustomerHackedPDT);
                            context.SaveChanges();

                            //Email Admin
                            EmailAdmin("HackedPDT", GetNextSuccessfulPDTID());
                            string failuremessage = pdt.PayerFirstName + " " +
                                                    pdt.PayerFirstName + "<br/>";
                            failuremessage += Resources.Resource.FailedTransaction + "<br/>";
                            failuremessage += Resources.Resource.FailurePDT;
                            HiddenLabel.Text = failuremessage;
                        }
                        catch (Exception e1)
                        {
                            EmailAdmin("HackedPDT", GetNextSuccessfulPDTID());
                            string failuremessage = pdt.PayerFirstName + " " +
                                                    pdt.PayerFirstName + "<br/>";
                            failuremessage += Resources.Resource.FailedTransaction + "<br/>";
                            failuremessage += Resources.Resource.FailurePDT;
                            HiddenLabel.Text = failuremessage;
                        }
                    }
                }
            }
        }
Exemple #2
0
    public void ArchiveSuccessfulIPN(SidejobEntities context)
    {
        var customersuccessfulIPN = (from c in context.CustomerSuccesfulIPNs
                                     where c.ProjectID == ProjectID
                                     select c).ToList();

        if (customersuccessfulIPN.Count != 0)
        {
            foreach (var acsipn in customersuccessfulIPN.Select(csipn => new ArchivedCustomerSuccesfulIPN
                                                                             {
                                                                                 IPNID = csipn.IPNID,
                                                                                 GrossTotal = csipn.GrossTotal,
                                                                                 Invoice = csipn.Invoice,
                                                                                 PaymentStatus = csipn.PaymentStatus,
                                                                                 FirstName = csipn.FirstName,
                                                                                 LastName = csipn.LastName,
                                                                                 PaymentFee = csipn.PaymentFee,
                                                                                 BusinessEmail = csipn.BusinessEmail,
                                                                                 ReceiverEmail = csipn.ReceiverEmail,
                                                                                 ItemName = csipn.ItemName,
                                                                                 CurrencyCode = csipn.CurrencyCode,
                                                                                 TransactionId = csipn.TransactionId,
                                                                                 Custom = csipn.Custom,
                                                                                 SubscriberId = csipn.SubscriberId,
                                                                                 CustomerID = csipn.CustomerID,
                                                                                 ProjectID = csipn.ProjectID,
                                                                                 TxType = csipn.TxType,
                                                                                 PendingReason = csipn.PendingReason,
                                                                                 PaymentDate = csipn.PaymentDate,
                                                                                 Address = csipn.Address,
                                                                                 City = csipn.City,
                                                                                 State = csipn.State,
                                                                                 Zip = csipn.Zip,
                                                                                 Country = csipn.Country,
                                                                                 CountryCode = csipn.CountryCode,
                                                                                 AddressStatus = csipn.AddressStatus,
                                                                                 PayerStatus = csipn.PayerStatus,
                                                                                 PayerID = csipn.PayerID,
                                                                                 PaymentType = csipn.PaymentType,
                                                                                 NotifyVersion = csipn.NotifyVersion,
                                                                                 PayerPhone = csipn.PayerPhone,
                                                                                 Tax = csipn.Tax,
                                                                                 PayerBusinessName = csipn.PayerBusinessName
                                                                             }))
            {
                context.AddToArchivedCustomerSuccesfulIPNs(acsipn);
            }
        }

        var professionalsuccessfulIPN = (from c in context.ProfessionalSuccesfulIPNs
                                         where c.ProjectID == ProjectID
                                         select c).ToList();
        if (professionalsuccessfulIPN.Count != 0)
        {
            foreach (var apsipn in professionalsuccessfulIPN.Select(csipn => new ArchivedProfessionalSuccesfulIPN
                                                                                 {
                                                                                     IPNID = csipn.IPNID,
                                                                                     GrossTotal = csipn.GrossTotal,
                                                                                     Invoice = csipn.Invoice,
                                                                                     PaymentStatus = csipn.PaymentStatus,
                                                                                     FirstName = csipn.FirstName,
                                                                                     LastName = csipn.LastName,
                                                                                     PaymentFee = csipn.PaymentFee,
                                                                                     BusinessEmail = csipn.BusinessEmail,
                                                                                     ReceiverEmail = csipn.ReceiverEmail,
                                                                                     ItemName = csipn.ItemName,
                                                                                     CurrencyCode = csipn.CurrencyCode,
                                                                                     TransactionId = csipn.TransactionId,
                                                                                     Custom = csipn.Custom,
                                                                                     SubscriberId = csipn.SubscriberId,
                                                                                     ProID = csipn.ProID,
                                                                                     ProjectID = csipn.ProjectID,
                                                                                     TxType = csipn.TxType,
                                                                                     PendingReason = csipn.PendingReason,
                                                                                     PaymentDate = csipn.PaymentDate,
                                                                                     Address = csipn.Address,
                                                                                     City = csipn.City,
                                                                                     State = csipn.State,
                                                                                     Zip = csipn.Zip,
                                                                                     Country = csipn.Country,
                                                                                     CountryCode = csipn.CountryCode,
                                                                                     AddressStatus = csipn.AddressStatus,
                                                                                     PayerStatus = csipn.PayerStatus,
                                                                                     PayerID = csipn.PayerID,
                                                                                     PaymentType = csipn.PaymentType,
                                                                                     NotifyVersion = csipn.NotifyVersion,
                                                                                     PayerPhone = csipn.PayerPhone,
                                                                                     Tax = csipn.Tax,
                                                                                     PayerBusinessName = csipn.PayerBusinessName
                                                                                 }))
            {
                context.AddToArchivedProfessionalSuccesfulIPNs(apsipn);
            }
        }

        var customersuccessfulpdt = (from c in context.CustomerSuccessfulPDTs
                                     where c.ProjectID == ProjectID
                                     select c).ToList();
        if (customersuccessfulpdt.Count != 0)
        {
            foreach (var acspdt in customersuccessfulpdt.Select(cspdt => new ArchivedCustomerSuccessfulPDT
                                                                             {
                                                                                 PDTID = cspdt.PDTID,
                                                                                 GrossTotal = cspdt.GrossTotal,
                                                                                 Invoice = cspdt.Invoice,
                                                                                 PaymentStatus = cspdt.PaymentStatus,
                                                                                 FirstName = cspdt.FirstName,
                                                                                 LastName = cspdt.LastName,
                                                                                 PaymentFee = cspdt.PaymentFee,
                                                                                 BusinessEmail = cspdt.BusinessEmail,
                                                                                 TxToken = cspdt.TxToken,
                                                                                 ReceiverEmail = cspdt.ReceiverEmail,
                                                                                 ItemName = cspdt.ItemName,
                                                                                 CurrencyCode = cspdt.CurrencyCode,
                                                                                 TransactionId = cspdt.TransactionId,
                                                                                 Custom = cspdt.Custom,
                                                                                 subscriberId = cspdt.subscriberId,
                                                                                 CustomerID = cspdt.CustomerID,
                                                                                 ProjectID = cspdt.ProjectID
                                                                             }))
            {
                context.AddToArchivedCustomerSuccessfulPDTs(acspdt);
            }

            var professionalsuccessfulpdt = (from c in context.ProfessionalSuccessfulPDTs
                                             where c.ProjectID == ProjectID
                                             select c).ToList();
            if (professionalsuccessfulpdt.Count != 0)
            {
                foreach (var apspdt in professionalsuccessfulpdt.Select(cspdt => new ArchivedProfessionalSuccessfulPDT
                                                                                     {

                                                                                         PDTID = cspdt.PDTID,
                                                                                         GrossTotal = cspdt.GrossTotal,
                                                                                         Invoice = cspdt.Invoice,
                                                                                         PaymentStatus = cspdt.PaymentStatus,
                                                                                         FirstName = cspdt.FirstName,
                                                                                         LastName = cspdt.LastName,
                                                                                         PaymentFee = cspdt.PaymentFee,
                                                                                         BusinessEmail = cspdt.BusinessEmail,
                                                                                         TxToken = cspdt.TxToken,
                                                                                         ReceiverEmail = cspdt.ReceiverEmail,
                                                                                         ItemName = cspdt.ItemName,
                                                                                         CurrencyCode = cspdt.CurrencyCode,
                                                                                         TransactionId = cspdt.TransactionId,
                                                                                         Custom = cspdt.Custom,
                                                                                         subscriberId = cspdt.subscriberId,
                                                                                         ProID = cspdt.ProID,
                                                                                         ProjectID = cspdt.ProjectID
                                                                                     }))
                {
                    context.AddToArchivedProfessionalSuccessfulPDTs(apspdt);
                }
            }
        }
    }