<?php
//Payment processing - Used for onsite payment processing. Used with the {EVENTPAYPALTXN} tag
function evr_paypal_txn(){
global $wpdb;
$today = date("m-d-Y");
$company_options = get_option('evr_company_settings');
$events_attendee_tbl = get_option('evr_attendee');
$id="";
$id=$_REQUEST['id'];//This is the id of the registrant
if ($id ==""){
echo "ID not supplied.";
}
else if ($company_options['use_sandbox'] == 'Y'){
evr_sandbox_using_ipn($id=$_REQUEST['id']);
}
else {
$p = new paypal_class;// initiate an instance of the class
$p->validate_ipn();
//store the results in reusable variables
$payer_id = $p->ipn_data['payer_id'];
$payment_date = $p->ipn_data['payment_date'];
$txn_id = $p->ipn_data['txn_id'];
$first_name = $p->ipn_data['first_name'];
$last_name = $p->ipn_data['last_name'];
$payer_email = $p->ipn_data['payer_email'];
$payer_status = $p->ipn_data['payer_status'];
$payment_type = $p->ipn_data['payment_type'];
$memo = $p->ipn_data['memo'];
$item_name = $p->ipn_data['item_name'];
$item_number = $p->ipn_data['item_number'];
$quantity = $p->ipn_data['quantity'];
if (isset($_REQUEST['mc_gross'])){
$amount_pd = $_REQUEST['mc_gross'];
}else{
$amount_pd = $_REQUEST['payment_gross'];
}
$mc_currency = $p->ipn_data['mc_currency'];
$address_name = $p->ipn_data['address_name'];
$address_street = nl2br($p->ipn_data['address_street']);
$address_city = $p->ipn_data['address_city'];
$address_state = $p->ipn_data['address_state'];
$address_zip = $p->ipn_data['address_zip'];
$address_country = $p->ipn_data['address_country'];
$address_status = $p->ipn_data['address_status'];
$payer_business_name = $p->ipn_data['payer_business_name'];
$payment_status = $p->ipn_data['payment_status'];
$pending_reason = $p->ipn_data['pending_reason'];
$reason_code = $p->ipn_data['reason_code'];
$txn_type = $p->ipn_data['txn_type'];
global $wpdb;
$events_attendee_tbl = get_option('evr_attendee');
$today = date("m-d-Y");
$sql="UPDATE ". $events_attendee_tbl . " SET payment_status = '$payment_status', amount_pd = '$amount_pd', payment_date ='$payment_date' WHERE id ='$id'";
$wpdb->query($wpdb->prepare($sql));
(is_numeric($_REQUEST['event_id'])) ? $event_id = $_REQUEST['event_id'] : $event_id = "0";
$events_detail_tbl = get_option('evr_event');
$query = "SELECT * FROM ".$events_detail_tbl." WHERE id='$event_id'";
$result = mysql_query($query) or die('Error : ' . mysql_error());
while ($row = mysql_fetch_assoc ($result)){
$event_id = $row['id'];
$event_name = stripslashes($row['event_name']);
$event_location = stripslashes($row['event_location']);
$event_address = $row['event_address'];
$event_city = $row['event_city'];
$event_postal = $row['event_postal'];
$reg_limit = $row['reg_limit'];
$start_time = $row['start_time'];
$end_time = $row['end_time'];
$start_date = $row['start_date'];
$end_date = $row['end_date'];
//added 6.00.13
$send_coord = $row['send_coord'];
$coord_email = $row['coord_email'];
$coord_msg = stripcslashes($row['coord_msg']);
$coord_pay_msg = stripslashes($row['coord_pay_msg']);
}
$events_paypal_transactions_tbl = get_option('evr_payment');
//Store transaction details in the database
$sql=array('payer_id'=>$id, 'event_id'=>$event_id, 'payment_date'=>$payment_date, 'txn_id'=>$txn_id, 'first_name'=>$first_name,
'last_name'=>$last_name, 'payer_email'=>$payer_email, 'payer_status'=>$payer_status, 'payment_type'=>$payment_type, 'memo'=>$memo,
'item_name'=>$item_name, 'item_number'=>$item_number, 'quantity'=>$quantity,
'mc_gross'=>$amount_pd, 'mc_currency'=>$mc_currency, 'address_name'=>$address_name, 'address_street'=>$address_street,
'address_city'=>$address_city, 'address_state'=>$address_state,
'address_zip'=>$address_zip, 'address_country'=>$address_country, 'address_status'=>$address_status,
'payer_business_name'=>$payer_business_name, 'payment_status'=>$payment_status,
'pending_reason'=>$pending_reason, 'reason_code'=>$reason_code, 'txn_type'=>$txn_type );
$sql_data = array('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s',
'%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s');
$query = "SELECT * FROM ". $events_attendee_tbl ." WHERE id ='".$id."'";
$result = mysql_query($query) or die('Error : ' . mysql_error());
while ($row = mysql_fetch_assoc ($result)){
$attendee_email = $row['email'];
$f_name = $row['fname'];
$l_name = $row['lname'];
}
//$wpdb->insert( get_option('evr_payment'), $sql, $sql_data );
if ($wpdb->insert( get_option('evr_payment'), $sql, $sql_data )){
$headers = "From: " . $company_options['company'] . " <". $company_options['company_email'] . ">\r\n";
$headers .= "Reply-To: " . $company_options['company'] . " <" . $company_options['company_email'] . ">\r\n";
$details = "";
foreach ($p->ipn_data as $key => $value) { $details .= "\n$key: $value"; }
$paydate = date('m/d/Y');
$paytime = date('g:i A');
$SearchValues = array( "[payer_email]","[fname]","[lname]","[attendee_email]","[event_name]", "[event_id]","[details]","[pay_date]", "[pay_time]");
$ReplaceValues = array($p->ipn_data['payer_email'],$f_name, $l_name, $attendee_email, $event_name, $event_id, $details, $paydate, $paytime);
if ($send_coord == "Y") {
$subject = 'Instant Payment Notification - Success';
$email_content = str_replace($SearchValues, $ReplaceValues, $coord_pay_msg );
wp_mail($coord_email, html_entity_decode($subject), html_entity_decode($email_content),$headers);
}
else {
$subject = 'Instant Payment Notification - Success';
$body = "An instant payment notification was successfully posted\n";
$body .= "from ".$p->ipn_data['payer_email']." on behalf of ".$f_name." ".$l_name;
$body .= " for event ".$event_name."(".$event_id.")"." on ".date('m/d/Y');
$body .= " at ".date('g:i A')."\n\nDetails:\n";
foreach ($p->ipn_data as $key => $value) { $body .= "\n$key: $value"; }
wp_mail($contact, $subject, $body,$headers);}
}
else {
if ($send_coord == "Y") {
$subject = 'Instant Payment Notification - Failure';
$body = "An instant payment notification was received but not posted!\n";
$body .= "from ".$p->ipn_data['payer_email']." on behalf of ".$f_name." ".$l_name;
$body .= " for event ".$event_name."(".$event_id.")"." on ".date('m/d/Y');
$body .= " at ".date('g:i A')."\n\nDetails:\n";
foreach ($p->ipn_data as $key => $value) { $body .= "\n$key: $value"; }
wp_mail($coord_email, $subject, $body,$headers);
}
else {
$subject = 'Instant Payment Notification - Failure';
$body = "An instant payment notification was received but not posted!\n";
$body .= "from ".$p->ipn_data['payer_email']." on behalf of ".$f_name." ".$l_name;
$body .= " for event ".$event_name."(".$event_id.")"." on ".date('m/d/Y');
$body .= " at ".date('g:i A')."\n\nDetails:\n";
foreach ($p->ipn_data as $key => $value) { $body .= "\n$key: $value"; }
wp_mail($contact, $subject, $body,$headers);
}
}
//$attendee_email = "hide@address.com";
$email_subject = $company_options['payment_subj'];
$payment_msg = stripslashes($company_options['payment_message']);
$pay_confirm = $company_options['pay_confirm'];
$Organization = $company_options['company'];
$contact = $company_options['company_email'];
$headers .= "From: " . $Organization . " <". $contact . ">\r\n";
$headers .= "Reply-To: " . $Organization . " <" . $contact . ">\r\n";
if ($send_coord == "Y") {$contact = $coord_email;} else {$contact = $company_options['company_email'];}
$payment_link = evr_permalink($company_options['return_url']). "id=".$id."&fname=".$f_name;
$SearchValues = array( "[id]","[fname]", "[lname]", "[contact]", "[payer_email]", "[event_name]",
"[event_id]","[location]","[event_city]","[amnt_pd]", "[txn_id]",
"[payment_url]","[start_date]", "[start_time]", "[end_date]","[end_time]",
"[email]");
$ReplaceValues = array($id, $f_name, $l_name, $contact, $payer_email,$event_name,
$event_id, $event_location, $event_city, $amount_pd,$txn_id,
$payment_link, $start_date,$start_time, $end_date, $end_time,
$attendee_email);
//Replace the tags
$email_content = str_replace($SearchValues, $ReplaceValues, $payment_msg );
if ($pay_confirm =='Y'){
wp_mail($attendee_email, html_entity_decode($email_subject),html_entity_decode($email_content),$headers);
}
}
}
//Using Sandbox
function evr_sandbox_using_ipn($id){
$company_options = get_option('evr_company_settings');
$email_subject = $company_options['payment_subj'];
$email_body = $company_options['payment_message'];
$default_mail=$company_options['send_confirm'];
$Organization = $company_options['company'];
$contact =$company_options['company_email'];
$events_detail_tbl = get_option('evr_event');
$id=$id;
$p = new paypal_class;// initiate an instance of the class
$p->validate_ipn();
//store the results in reusable variables
$payer_id = $p->ipn_data['payer_id'];
$payment_date = $p->ipn_data['payment_date'];
$txn_id = $p->ipn_data['txn_id'];
$first_name = $p->ipn_data['first_name'];
$last_name = $p->ipn_data['last_name'];
$payer_email = $p->ipn_data['payer_email'];
$payer_status = $p->ipn_data['payer_status'];
$payment_type = $p->ipn_data['payment_type'];
$memo = $p->ipn_data['memo'];
$item_name = $p->ipn_data['item_name'];
$item_number = $p->ipn_data['item_number'];
$quantity = $p->ipn_data['quantity'];
if (isset($_REQUEST['mc_gross'])){
$amount_pd = $_REQUEST['mc_gross'];
}else{
$amount_pd = $_REQUEST['payment_gross'];
}
$mc_currency = $p->ipn_data['mc_currency'];
$address_name = $p->ipn_data['address_name'];
$address_street = nl2br($p->ipn_data['address_street']);
$address_city = $p->ipn_data['address_city'];
$address_state = $p->ipn_data['address_state'];
$address_zip = $p->ipn_data['address_zip'];
$address_country = $p->ipn_data['address_country'];
$address_status = $p->ipn_data['address_status'];
$payer_business_name = $p->ipn_data['payer_business_name'];
$payment_status = $p->ipn_data['payment_status'];
$pending_reason = $p->ipn_data['pending_reason'];
$reason_code = $p->ipn_data['reason_code'];
$txn_type = $p->ipn_data['txn_type'];
//Debugging option
$email_paypal_dump = true;
if ($email_paypal_dump == true) {
// For this, we'll just email ourselves ALL the data as plain text output.
$subject = 'Instant Payment Notification - PayPal Variable Dump';
$body = "An instant payment notification was successfully received\n";
$body .= "from ".$p->ipn_data['payer_email']." on ".date('m/d/Y');
$body .= " at ".date('g:i A')."\n\nDetails:\n";
foreach ($p->ipn_data as $key => $value) { $body .= "\n$key: $value"; }
wp_mail($contact, $subject, $body);
}
global $wpdb;
$events_attendee_tbl = get_option('evr_attendee');
$today = date("m-d-Y");
$sql="UPDATE ". $events_attendee_tbl . " SET payment_status = '$payment_status', amount_pd = '$amount_pd', payment_date ='$payment_date' WHERE id ='$id'";
$wpdb->query($wpdb->prepare($sql));
$event_id = $_REQUEST['event_id'];
//(is_numeric($_REQUEST['event_id'])) ? $event_id = $_REQUEST['event_id'] : $event_id = "0";
$query = "SELECT * FROM ".$events_detail_tbl." WHERE id='$event_id'";
$result = mysql_query($query) or die('Error : ' . mysql_error());
while ($row = mysql_fetch_assoc ($result)){
$event_id = $row['id'];
$event_name = stripslashes($row['event_name']);
$event_location = stripslashes($row['event_location']);
$event_address = $row['event_address'];
$event_city = $row['event_city'];
$event_postal = $row['event_postal'];
$reg_limit = $row['reg_limit'];
$start_time = $row['start_time'];
$end_time = $row['end_time'];
$start_date = $row['start_date'];
$end_date = $row['end_date'];
//added 6.00.13
$send_coord = $row['send_coord'];
$coord_email = $row['coord_email'];
$coord_msg = stripcslashes($row['coord_msg']);
$coord_pay_msg = stripslashes($row['coord_pay_msg']);
}
$events_paypal_transactions_tbl = get_option('evr_payment');
//Store transaction details in the database
$sql=array('payer_id'=>$id, 'event_id'=>$event_id, 'payment_date'=>$payment_date, 'txn_id'=>$txn_id, 'first_name'=>$first_name,
'last_name'=>$last_name, 'payer_email'=>$payer_email, 'payer_status'=>$payer_status, 'payment_type'=>$payment_type, 'memo'=>$memo,
'item_name'=>$item_name, 'item_number'=>$item_number, 'quantity'=>$quantity,
'mc_gross'=>$amount_pd, 'mc_currency'=>$mc_currency, 'address_name'=>$address_name, 'address_street'=>$address_street,
'address_city'=>$address_city, 'address_state'=>$address_state,
'address_zip'=>$address_zip, 'address_country'=>$address_country, 'address_status'=>$address_status,
'payer_business_name'=>$payer_business_name, 'payment_status'=>$payment_status,
'pending_reason'=>$pending_reason, 'reason_code'=>$reason_code, 'txn_type'=>$txn_type );
$sql_data = array('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s',
'%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s');
$query = "SELECT * FROM ". $events_attendee_tbl ." WHERE id ='".$id."'";
$result = mysql_query($query) or die('Error : ' . mysql_error());
while ($row = mysql_fetch_assoc ($result)){
$attendee_email = $row['email'];
$f_name = $row['fname'];
$l_name = $row['lname'];
}
if ($wpdb->insert( get_option('evr_payment'), $sql, $sql_data )){
$headers = "From: " . $company_options['company'] . " <". $company_options['company_email'] . ">\r\n";
$headers .= "Reply-To: " . $company_options['company'] . " <" . $company_options['company_email'] . ">\r\n";
$details = "";
foreach ($p->ipn_data as $key => $value) { $details .= "\n$key: $value"; }
$paydate = date('m/d/Y');
$paytime = date('g:i A');
$SearchValues = array( "[payer_email]","[fname]","[lname]","[attendee_email]","[event_name]", "[event_id]","[details]","[pay_date]", "[pay_time]");
$ReplaceValues = array($p->ipn_data['payer_email'],$f_name, $l_name, $attendee_email, $event_name, $event_id, $details, $paydate, $paytime);
if ($send_coord == "Y") {
$subject = 'Sandbox Instant Payment Notification - Success';
$email_content = str_replace($SearchValues, $ReplaceValues, $coord_pay_msg );
wp_mail($coord_email, html_entity_decode($subject), html_entity_decode($email_content),$headers);
}
else {
$subject = 'Sandbox Instant Payment Notification - Success';
$body = "An instant payment notification was successfully posted\n";
$body .= "from ".$p->ipn_data['payer_email']." on ".date('m/d/Y');
$body .= " at ".date('g:i A')."\n\nDetails:\n";
foreach ($p->ipn_data as $key => $value) { $body .= "\n$key: $value"; }
wp_mail($contact, $subject, $body);}
}
else {
if ($send_coord == "Y") {
$subject = 'Sandbox Instant Payment Notification - Failure';
$body = "An instant payment notification was received but not posted!\n";
$body .= "from ".$p->ipn_data['payer_email']." on ".date('m/d/Y');
$body .= " at ".date('g:i A')."\n\nDetails:\n";
foreach ($p->ipn_data as $key => $value) { $body .= "\n$key: $value"; }
wp_mail($coord_email, $subject, $body);
}
else {
$subject = 'Sandbox Instant Payment Notification - Failure';
$body = "An instant payment notification was received but not posted!\n";
$body .= "from ".$p->ipn_data['payer_email']." on ".date('m/d/Y');
$body .= " at ".date('g:i A')."\n\nDetails:\n";
foreach ($p->ipn_data as $key => $value) { $body .= "\n$key: $value"; }
wp_mail($contact, $subject, $body);
}
}
$email_subject = $company_options['payment_subj'];
$payment_msg = stripslashes($company_options['payment_message']);
$pay_confirm = $company_options['pay_confirm'];
$Organization = $company_options['company'];
$contact = $company_options['company_email'];
$headers .= "From: " . $Organization . " <". $contact . ">\r\n";
$headers .= "Reply-To: " . $Organization . " <" . $contact . ">\r\n";
if ($send_coord == "Y") {$contact = $coord_email;} else {$contact = $company_options['company_email'];}
$payment_link = evr_permalink($company_options['return_url']). "id=".$id."&fname=".$f_name;
$SearchValues = array( "[id]","[fname]", "[lname]", "[contact]", "[payer_email]", "[event_name]",
"[event_id]","[location]","[event_city]","[amnt_pd]", "[txn_id]",
"[payment_url]","[start_date]", "[start_time]", "[end_date]","[end_time]",
"[email]");
$ReplaceValues = array($id, $f_name, $l_name, $contact, $payer_email,$event_name,
$event_id, $event_location, $event_city, $amount_pd,$txn_id,
$payment_link, $start_date,$start_time, $end_date, $end_time,
$attendee_email);
$email_content = str_replace($SearchValues, $ReplaceValues, $payment_msg );
//Replace the tags
if ($pay_confirm =='Y'){
wp_mail($attendee_email, html_entity_decode($email_subject),html_entity_decode($email_content),$headers);
}
}
?>