Transaction Notification

Hello ' . htmlspecialchars($transaction_details['response'][0]['c_name']) . ',

You have received a new transaction.. Below are the details:

Amount:
' . htmlspecialchars($transaction_details['response'][0]['transaction_amount'] . ' ' . $transaction_details['response'][0]['transaction_currency']) . '
Fee:
' . htmlspecialchars($transaction_details['response'][0]['transaction_fee'] . ' ' . $transaction_details['response'][0]['transaction_currency']) . '
Refund:
' . htmlspecialchars($transaction_details['response'][0]['transaction_refund_amount'] . ' ' . $transaction_details['response'][0]['transaction_currency']) . '
Net:
' . htmlspecialchars($transaction_details['response'][0]['transaction_amount']+$transaction_details['response'][0]['transaction_fee']-$transaction_details['response'][0]['transaction_refund_amount'] . ' ' . $transaction_details['response'][0]['transaction_currency']) . '
Status:
' . htmlspecialchars($transaction_details['response'][0]['transaction_status']) . '
Date:
' . htmlspecialchars($transaction_details['response'][0]['created_at']) . '
'; // Load PHPMailer if (!class_exists('PHPMailer\PHPMailer\PHPMailer')) { require_once __DIR__ . '/phpmailer/PHPMailer.php'; require_once __DIR__ . '/phpmailer/SMTP.php'; require_once __DIR__ . '/phpmailer/Exception.php'; } $mail = new \PHPMailer\PHPMailer\PHPMailer(true); // Server settings $mail->isSMTP(); $mail->Host = $smtp_settings['host']; $mail->SMTPAuth = true; $mail->Username = $smtp_settings['username']; $mail->Password = $smtp_settings['password']; $mail->SMTPSecure = $smtp_settings['secure']; // 'tls' or 'ssl' $mail->Port = $smtp_settings['port']; // Sender & Recipient $mail->setFrom($smtp_settings['username'], $smtp_settings['from']); $mail->addAddress($to_email); // Content $mail->isHTML(true); $mail->Subject = $subject; $mail->Body = $body; // Add plain text version for email clients that don't support HTML $mail->AltBody = "Hello " . $transaction_details['response'][0]['c_name'] . ",\n\n" . "Your transaction has been processed.\n\n" . "Amount: " . $transaction_details['response'][0]['transaction_amount'] . ' ' . $transaction_details['response'][0]['transaction_currency'] . "\n" . "Fee: " . $transaction_details['response'][0]['transaction_fee'] . ' ' . $transaction_details['response'][0]['transaction_currency'] . "\n" . "Refund: " . $transaction_details['response'][0]['transaction_refund_amount'] . ' ' . $transaction_details['response'][0]['transaction_currency'] . "\n" . "Net: " . $transaction_details['response'][0]['transaction_amount']+$transaction_details['response'][0]['transaction_fee']-$transaction_details['response'][0]['transaction_refund_amount'] . ' ' . $transaction_details['response'][0]['transaction_currency'] . "\n" . "Status: " . $transaction_details['response'][0]['transaction_status'] . "\n" . "Date: " . $transaction_details['response'][0]['created_at'] . "\n\n" . "Thank you for using our service."; $mail->send(); } function send_smtp_mailer_transaction_ipn($transaction_id) { global $conn; $transaction_details = pp_get_transation($transaction_id); $setting = pp_get_settings(); $plugin_slug = 'smtp-mailer'; $smtp_settings = pp_get_plugin_setting($plugin_slug); if (empty($smtp_settings)) { return; // SMTP settings not found } if (filter_var($transaction_details['response'][0]['c_email_mobile'], FILTER_VALIDATE_EMAIL)) { }else{ return; // Email not valid } $to_email = $transaction_details['response'][0]['c_email_mobile']; $subject = 'Transaction Notification - ' . $transaction_details['response'][0]['transaction_status']; // HTML Email Body with Bootstrap-like styling (inline CSS for email clients) $body = ' Transaction Notification

Transaction Notification

Hello ' . htmlspecialchars($transaction_details['response'][0]['c_name']) . ',

Your transaction has been processed. Below are the details:

Amount:
' . htmlspecialchars($transaction_details['response'][0]['transaction_amount'] . ' ' . $transaction_details['response'][0]['transaction_currency']) . '
Fee:
' . htmlspecialchars($transaction_details['response'][0]['transaction_fee'] . ' ' . $transaction_details['response'][0]['transaction_currency']) . '
Refund:
' . htmlspecialchars($transaction_details['response'][0]['transaction_refund_amount'] . ' ' . $transaction_details['response'][0]['transaction_currency']) . '
Net:
' . htmlspecialchars($transaction_details['response'][0]['transaction_amount']+$transaction_details['response'][0]['transaction_fee']-$transaction_details['response'][0]['transaction_refund_amount'] . ' ' . $transaction_details['response'][0]['transaction_currency']) . '
Status:
' . htmlspecialchars($transaction_details['response'][0]['transaction_status']) . '
Date:
' . htmlspecialchars($transaction_details['response'][0]['created_at']) . '

If you have any questions about this transaction, please contact our support team.

Thank you for using our service!

'; // Load PHPMailer if (!class_exists('PHPMailer\PHPMailer\PHPMailer')) { require_once __DIR__ . '/phpmailer/PHPMailer.php'; require_once __DIR__ . '/phpmailer/SMTP.php'; require_once __DIR__ . '/phpmailer/Exception.php'; } $mail = new \PHPMailer\PHPMailer\PHPMailer(true); // Server settings $mail->isSMTP(); $mail->Host = $smtp_settings['host']; $mail->SMTPAuth = true; $mail->Username = $smtp_settings['username']; $mail->Password = $smtp_settings['password']; $mail->SMTPSecure = $smtp_settings['secure']; // 'tls' or 'ssl' $mail->Port = $smtp_settings['port']; // Sender & Recipient $mail->setFrom($smtp_settings['username'], $smtp_settings['from']); $mail->addAddress($to_email); // Content $mail->isHTML(true); $mail->Subject = $subject; $mail->Body = $body; // Add plain text version for email clients that don't support HTML $mail->AltBody = "Hello " . $transaction_details['response'][0]['c_name'] . ",\n\n" . "Your transaction has been processed.\n\n" . "Amount: " . $transaction_details['response'][0]['transaction_amount'] . ' ' . $transaction_details['response'][0]['transaction_currency'] . "\n" . "Fee: " . $transaction_details['response'][0]['transaction_fee'] . ' ' . $transaction_details['response'][0]['transaction_currency'] . "\n" . "Refund: " . $transaction_details['response'][0]['transaction_refund_amount'] . ' ' . $transaction_details['response'][0]['transaction_currency'] . "\n" . "Net: " . $transaction_details['response'][0]['transaction_amount']+$transaction_details['response'][0]['transaction_fee']-$transaction_details['response'][0]['transaction_refund_amount'] . ' ' . $transaction_details['response'][0]['transaction_currency'] . "\n" . "Status: " . $transaction_details['response'][0]['transaction_status'] . "\n" . "Date: " . $transaction_details['response'][0]['created_at'] . "\n\n" . "Thank you for using our service."; $mail->send(); } function send_smtp_mailer_invoice_ipn($invoice_id) { global $conn; // Get invoice data (assuming these functions exist) $invoice_details = pp_get_invoice($invoice_id); $invoice_details_items = pp_get_invoice_items($invoice_id); $setting = pp_get_settings(); // SMTP settings $plugin_slug = 'smtp-mailer'; $smtp_settings = pp_get_plugin_setting($plugin_slug); if (empty($smtp_settings)) { return; // SMTP settings not found } if (filter_var($invoice_details['response'][0]['c_email_mobile'], FILTER_VALIDATE_EMAIL)) { }else{ return; // Email not valid } // Determine status seal $status_class = strtolower($invoice_details['response'][0]['i_status']); $status_icon = 'fa-question-circle'; $to_email = $invoice_details['response'][0]['c_email_mobile']; switch($invoice_details['response'][0]['i_status']) { case 'unpaid': $status_icon = 'fa-exclamation-circle'; $subject = "Action Required: Invoice Payment Due"; break; case 'paid': $status_icon = 'fa-check-circle'; $subject = "We've Received Your Payment - Thank You"; break; case 'refunded': $status_icon = 'fa-info-circle'; $subject = "Your Refund Has Been Processed"; break; case 'canceled': $status_icon = 'fa-exclamation-triangle'; $subject = "Invoice Cancellation Notice"; break; } // Calculate invoice totals $subtotal = 0; $total_discount = 0; $total_vat = 0; $items_html = ''; foreach ($invoice_details_items['response'] as $items) { $item_subtotal = $items['amount'] * $items['quantity']; $item_discount = min($items['discount'], $item_subtotal); $item_amount_after_discount = $item_subtotal - $item_discount; $item_vat = $item_amount_after_discount * ($items['vat'] / 100); $subtotal += $item_subtotal; $total_discount += $item_discount; $total_vat += $item_vat; $items_html .= ' '.htmlspecialchars($items['description']).' '.(int)$items['quantity'].' '.number_format($items['amount'], 2).$invoice_details['response'][0]['i_currency'].' '.number_format($item_subtotal, 2).$invoice_details['response'][0]['i_currency'].' '; } $shipping_cost = isset($invoice_details['response'][0]['i_amount_shipping']) ? floatval($invoice_details['response'][0]['i_amount_shipping']) : 0; $total_amount = $subtotal - $total_discount + $total_vat + $shipping_cost; $currency = $invoice_details['response'][0]['i_currency']; // HTML Email Body $body = ' '.$subject.'
INVOICE
#'.$invoice_details['response'][0]['i_id'].'
From
'.$setting['response'][0]['site_name'].'
'.$setting['response'][0]['street_address'].'
'.$setting['response'][0]['city_town'].' '.$setting['response'][0]['postal_zip_code'].'
'.$setting['response'][0]['country'].'
Bill To
'.$invoice_details['response'][0]['c_name'].'
'.$invoice_details['response'][0]['c_email_mobile'].'
Invoice Date
'.convertToReadableDate($invoice_details['response'][0]['created_at']).'
Due Date
'.convertToReadableDate($invoice_details['response'][0]['i_due_date']).'
Status
'.ucfirst($invoice_details['response'][0]['i_status']).'
'.$items_html.'
Description Qty Unit Price Amount
'; if ($shipping_cost > 0) { $body .= ' '; } if ($total_vat > 0) { $body .= ' '; } if ($total_discount > 0) { $body .= ' '; } $body .= '
Subtotal '.number_format($subtotal, 2).$currency.'
Shipping '.number_format($shipping_cost, 2).$currency.'
VAT '.number_format($total_vat, 2).$currency.'
Discount -'.number_format($total_discount, 2).$currency.'
Total Amount '.number_format(round($total_amount, 2), 2).$currency.'
'; if(!empty($invoice_details['response'][0]['i_note']) && $invoice_details['response'][0]['i_note'] != "--") { $body .= '
Notes: '.$invoice_details['response'][0]['i_note'].'
'; } if($invoice_details['response'][0]['i_status'] == "unpaid") { $body .= '
Pay Now
'; } $body .= '
'; // Plain text version for email clients that don't support HTML $plain_text = "INVOICE #".$invoice_details['response'][0]['i_id']."\n\n"; $plain_text .= "Status: ".ucfirst($invoice_details['response'][0]['i_status'])."\n"; $plain_text .= "Invoice Date: ".convertToReadableDate($invoice_details['response'][0]['created_at'])."\n"; $plain_text .= "Due Date: ".convertToReadableDate($invoice_details['response'][0]['i_due_date'])."\n\n"; $plain_text .= "Bill To: ".$invoice_details['response'][0]['c_name']."\n"; $plain_text .= "Email: ".$invoice_details['response'][0]['c_email_mobile']."\n\n"; $plain_text .= "ITEMS:\n"; foreach ($invoice_details_items['response'] as $items) { $item_subtotal = $items['amount'] * $items['quantity']; $plain_text .= "- ".$items['description']." (Qty: ".$items['quantity'].") @ ".number_format($items['amount'], 2).$currency." = ".number_format($item_subtotal, 2).$currency."\n"; } $plain_text .= "\nSUBTOTAL: ".number_format($subtotal, 2).$currency."\n"; if ($shipping_cost > 0) $plain_text .= "SHIPPING: ".number_format($shipping_cost, 2).$currency."\n"; if ($total_vat > 0) $plain_text .= "VAT: ".number_format($total_vat, 2).$currency."\n"; if ($total_discount > 0) $plain_text .= "DISCOUNT: -".number_format($total_discount, 2).$currency."\n"; $plain_text .= "TOTAL AMOUNT: ".number_format(round($total_amount, 2), 2).$currency."\n\n"; if(!empty($invoice_details['response'][0]['i_note']) && $invoice_details['response'][0]['i_note'] != "--") { $plain_text .= "NOTES: ".$invoice_details['response'][0]['i_note']."\n\n"; } if($invoice_details['response'][0]['i_status'] == "unpaid") { $plain_text .= "PAY NOW: ".get_invoice_link($invoice_id)."\n\n"; } $plain_text .= "Thank you for your business!\n"; $plain_text .= $setting['response'][0]['site_name']."\n"; // Load PHPMailer if (!class_exists('PHPMailer\PHPMailer\PHPMailer')) { require_once __DIR__ . '/phpmailer/PHPMailer.php'; require_once __DIR__ . '/phpmailer/SMTP.php'; require_once __DIR__ . '/phpmailer/Exception.php'; } try { $mail = new \PHPMailer\PHPMailer\PHPMailer(true); // Server settings $mail->isSMTP(); $mail->Host = $smtp_settings['host']; $mail->SMTPAuth = true; $mail->Username = $smtp_settings['username']; $mail->Password = $smtp_settings['password']; $mail->SMTPSecure = $smtp_settings['secure']; // 'tls' or 'ssl' $mail->Port = $smtp_settings['port']; // Recipients $mail->setFrom($smtp_settings['username'], $setting['response'][0]['site_name']); $mail->addAddress($to_email, $invoice_details['response'][0]['c_name']); // Attach PDF if available // Content $mail->isHTML(true); $mail->Subject = $subject; $mail->Body = $body; $mail->AltBody = $plain_text; $mail->send(); return true; } catch (Exception $e) { error_log("Invoice email could not be sent. Error: {$mail->ErrorInfo}"); return false; } } ?>