You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
107 lines
3.5 KiB
107 lines
3.5 KiB
<?php
|
|
if (!defined('pp_allowed_access')) {
|
|
die('Direct access not allowed');
|
|
}
|
|
|
|
// Hooks
|
|
add_action('pp_transaction_ipn', 'admin_app_push_notification_transaction_admin_ipn');
|
|
add_action('pp_invoice_ipn', 'admin_app_push_notification_invoice_admin_ipn');
|
|
|
|
// ✅ Helper: Send OneSignal Notification to Admin
|
|
function send_admin_onesignal_notification($title, $message) {
|
|
$plugin_slug = 'admin-app-notification';
|
|
$settings = pp_get_plugin_setting($plugin_slug);
|
|
|
|
if(isset($settings['panel_id']) && $settings['panel_id'] !== ""){
|
|
|
|
}else{
|
|
return;
|
|
}
|
|
|
|
$app_id = '0e793dbc-2992-4192-9b80-7a9056dbce59';
|
|
$api_key = 'os_v2_app_bz4t3pbjsjazfg4apkifnw6olearz772hhiuduumhgogmn2ty2j4m3swp5nd6buwqr2yvawffhia2eyy23bwlcfcdcjau5xsun5saca';
|
|
|
|
$fields = [
|
|
'app_id' => $app_id,
|
|
'include_external_user_ids' => [$settings['panel_id']],
|
|
'headings' => ['en' => $title],
|
|
'contents' => ['en' => $message],
|
|
];
|
|
|
|
$fields_json = json_encode($fields);
|
|
|
|
$ch = curl_init();
|
|
curl_setopt($ch, CURLOPT_URL, 'https://onesignal.com/api/v1/notifications');
|
|
curl_setopt($ch, CURLOPT_HTTPHEADER, [
|
|
'Content-Type: application/json; charset=utf-8',
|
|
'Authorization: Basic ' . $api_key,
|
|
]);
|
|
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
|
|
curl_setopt($ch, CURLOPT_POSTFIELDS, $fields_json);
|
|
curl_setopt($ch, CURLOPT_POST, true);
|
|
|
|
curl_exec($ch);
|
|
curl_close($ch);
|
|
}
|
|
|
|
// ✅ Transaction Notification to Admin
|
|
function admin_app_push_notification_transaction_admin_ipn($transaction_id) {
|
|
$transaction = pp_get_transation($transaction_id);
|
|
$t = $transaction['response'][0];
|
|
|
|
$status = ucfirst($t['transaction_status']);
|
|
$amount = $t['transaction_amount'];
|
|
$currency = $t['transaction_currency'];
|
|
$name = $t['c_name'];
|
|
$tx_id = $t['transaction_id'] ?? $transaction_id;
|
|
|
|
$title = "Transaction $status";
|
|
$message = "ID: $tx_id | Amount: $amount $currency from $name";
|
|
|
|
send_admin_onesignal_notification($title, $message);
|
|
}
|
|
|
|
// ✅ Invoice Notification to Admin
|
|
function admin_app_push_notification_invoice_admin_ipn($invoice_id) {
|
|
$invoice = pp_get_invoice($invoice_id);
|
|
$i = $invoice['response'][0];
|
|
|
|
$status = ucfirst($i['i_status']);
|
|
|
|
$subtotal = 0;
|
|
$totalVat = 0;
|
|
$totalDiscount = 0;
|
|
|
|
$response_items = pp_get_invoice_items($i['i_id']);
|
|
foreach ($response_items['response'] as $item) {
|
|
$quantity = isset($item['quantity']) ? floatval($item['quantity']) : 0;
|
|
$amount = isset($item['amount']) ? floatval($item['amount']) : 0;
|
|
$discount = isset($item['discount']) ? floatval($item['discount']) : 0;
|
|
$vatPercentage = isset($item['vat']) ? floatval($item['vat']) : 0;
|
|
|
|
$itemSubtotal = $quantity * $amount;
|
|
|
|
$itemDiscount = min($discount, $itemSubtotal);
|
|
$totalDiscount += $itemDiscount;
|
|
|
|
$itemAmountAfterDiscount = $itemSubtotal - $itemDiscount;
|
|
$itemVat = $itemAmountAfterDiscount * ($vatPercentage / 100);
|
|
$totalVat += $itemVat;
|
|
|
|
$subtotal += $itemSubtotal;
|
|
}
|
|
|
|
$shipping = pp_get_invoice($i['i_id']);
|
|
$shipping = $shipping['response'][0]['i_amount_shipping'];
|
|
|
|
$amount = $subtotal - $totalDiscount + $totalVat + $shipping;
|
|
|
|
$currency = $i['i_currency'];
|
|
$invoice_no = $i['i_id'];
|
|
$name = $i['c_name'];
|
|
|
|
$title = "Invoice $status";
|
|
$message = "Invoice #$invoice_no | Amount: $amount $currency from $name";
|
|
|
|
send_admin_onesignal_notification($title, $message);
|
|
}
|