private void SavedToDatabase(IPNHolder pdt, string CustomerID) { ////Customer IPN //// CustomerPDTDataSetTableAdapters.CustomerIPNTableAdapter customerIpnAdapter = new CustomerPDTDataSetTableAdapters.CustomerIPNTableAdapter(); customerIpnAdapter.AddTransaction(Convert.ToDouble(pdt._paymentGross), pdt._invoice, pdt._paymentStatus, pdt._firstName, pdt._lastName, Convert.ToDouble(pdt._paymentFee), pdt._business, pdt._receiverEmail, pdt._itemName, pdt._currency, pdt._txnID, pdt._custom, "No Subscriber", Convert.ToInt32(CustomerID), Convert.ToInt32(pdt._custom), pdt._txnType, pdt._pendingReason, System.DateTime.UtcNow, pdt._address, pdt._city, pdt._state, pdt._zip, pdt._country, pdt._countryCode, pdt._addressStatus, pdt._payerStatus, pdt._payerID, pdt._paymentType, pdt._notifyVersion, pdt._payerPhone, pdt._tax, pdt._payerBusinessName); ProcessIpn(pdt, CustomerID); }
protected void ProcessIpn(IPNHolder pdt, string CustomerID) { // 1 //check that receiver_email is your Primary PayPal email // 2 //check the payment_status is Completed // 3 //check that payment_amount/payment_currency are correct // 4 //check that txn_id has not been previously processed // 5 //process payment //Customer IPN// CustomerPDTDataSetTableAdapters.CustomerIPNTableAdapter CustomerIPNTPDTAdapter = new CustomerPDTDataSetTableAdapters.CustomerIPNTableAdapter(); CustomerPDTDataSet.CustomerIPNDataTable CustomerIPNTable = new CustomerPDTDataSet.CustomerIPNDataTable(); CustomerIPNTPDTAdapter.FillCustomerIPN(CustomerIPNTable); //Successful PDT// CustomerPDTDataSetTableAdapters.CustomerSuccessfulPDTTableAdapter CustomerSuccessfulPDTAdapter = new CustomerPDTDataSetTableAdapters.CustomerSuccessfulPDTTableAdapter(); CustomerPDTDataSet.CustomerSuccessfulPDTDataTable CustomerSuccessfulPDTTable = new CustomerPDTDataSet.CustomerSuccessfulPDTDataTable(); //Suspicious IPN// CustomerPDTDataSetTableAdapters.CustomerSuspiciousIPNTableAdapter CustomerSuspiciousIPNAdapter = new CustomerPDTDataSetTableAdapters.CustomerSuspiciousIPNTableAdapter(); CustomerPDTDataSet.CustomerSuspiciousIPNDataTable CustomerSuspiciousIPNTable = new CustomerPDTDataSet.CustomerSuspiciousIPNDataTable(); //Transaction History// CustomerPDTDataSetTableAdapters.QueriesTableAdapter CustomerPDT = new CustomerPDTDataSetTableAdapters.QueriesTableAdapter(); foreach (DataRow row in CustomerIPNTable.Rows) { //1///check that receiver_email is your Primary PayPal email if (row["ReceiverEmail"].ToString() == "*****@*****.**") { //2//check the payment_status is Completed if (row["PaymentStatus"].ToString() == "Completed") { //3//check that payment_amount/payment_currency are correct CustomerSuccessfulPDTAdapter.FillCustomerSuccededPDT(CustomerSuccessfulPDTTable, Convert.ToInt32(CustomerID), Convert.ToInt32(row["ProjectID"].ToString())); foreach (DataRow row1 in CustomerSuccessfulPDTTable.Rows) { if ((string.Equals(row1["CurrencyCode"].ToString(), row["CurrencyCode"].ToString())) && (string.Equals(row1["GrossTotal"].ToString(), row["GrossTotal"].ToString()))) { //Customer had the confirmation page and the amount is right //Successful IPN// CustomerPDTDataSetTableAdapters.CustomerSuccesfulIPNTableAdapter CustomerSuccessfulIPNAdapter = new CustomerPDTDataSetTableAdapters.CustomerSuccesfulIPNTableAdapter(); CustomerPDTDataSet.CustomerSuccesfulIPNDataTable CustomerSuccessfulIPNTable = new CustomerPDTDataSet.CustomerSuccesfulIPNDataTable(); //4//check that txn_id has not been previously processed CustomerSuccessfulIPNAdapter.FillByTransactionID(CustomerSuccessfulIPNTable, Convert.ToInt32(row["ProjectID"].ToString()), Convert.ToInt32(CustomerID), row["TransactionId"].ToString()); if (CustomerSuccessfulIPNTable.Rows.Count == 0) { //Insert a new record CustomerSuccessfulIPNAdapter.AddTransaction(Convert.ToInt32(row["IPNID"].ToString())); //Successful IPN CustomerPDT.AddCustomerTransactionHistory(Convert.ToInt32(CustomerID), Convert.ToInt32(row["ProjectID"].ToString()), 0); //EmailBuyer EmailBuyer(Resources.Resource.PaypalSuccessfulHeader, "Success", pdt._payerEmail.ToString(), pdt); //EmailAdmin EmailAdmin(("Successful Payment"), pdt); } else { //the record already exist.Don't do anything. } } else { //Suspicicous GrossTotal , CurrencyCode or ProjectID //Customer Close the window or Hacked //Insert a new record to Suspicious ///Suspicious Checking IPN//// CustomerPDTDataSetTableAdapters.CustomerSuspiousVerificationTableAdapter CustomerSuspiciousCheckinIPNAdapter = new CustomerPDTDataSetTableAdapters.CustomerSuspiousVerificationTableAdapter(); CustomerPDTDataSet.CustomerSuspiousVerificationDataTable CustomerSuspiciousCheckinIPNTable = new CustomerPDTDataSet.CustomerSuspiousVerificationDataTable(); CustomerSuspiciousCheckinIPNAdapter.FillCheck(CustomerSuspiciousCheckinIPNTable, Convert.ToInt32(row["ProjectID"].ToString()), Convert.ToInt32(CustomerID.ToString())); //4//check that IPNID has not been previously processed if (CustomerSuspiciousCheckinIPNTable.Rows.Count == 0) { CustomerSuspiciousIPNAdapter.AddTransactionByID(Convert.ToInt32(row["IPNID"].ToString())); CustomerSuspiciousIPNAdapter.UpdatePendingReason("Suspicious Amount", (Convert.ToInt32(row["IPNID"].ToString()))); //EmailAdmin EmailAdmin(("Suspicious Payment"), pdt); //Suspicious IPN CustomerPDT.AddCustomerTransactionHistory(Convert.ToInt32(CustomerID), Convert.ToInt32(row["ProjectID"].ToString()), 1); } } } //3//check that payment_amount/payment_currency are correct }//2// else { }//2//check the payment_status is Completed }//1// else { } //1//check that receiver_email is your Primary PayPal email } }