إعدادات تكامل API
اختبار الاتصال
اختبار الاتصال بـ API
$this->api_base_url . '/offers',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_HTTPHEADER => array(
'Authorization: Bearer ' . $this->api_key
),
));
$response = curl_exec($curl);
curl_close($curl);
return $response;
}
// دالة للحصول على الرصيد
public function get_balance() {
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => $this->api_base_url . '/balance',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_HTTPHEADER => array(
'Authorization: Bearer ' . $this->api_key
),
));
$response = curl_exec($curl);
curl_close($curl);
return $response;
}
// دالة لمعالجة المعاملة
public function process_transaction_api($trx_id) {
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => $this->api_base_url . '/transaction',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => json_encode(array(
'trx_id' => $trx_id
)),
CURLOPT_HTTPHEADER => array(
'Content-Type: application/json',
'Authorization: Bearer ' . $this->api_key
),
));
$response = curl_exec($curl);
curl_close($curl);
return $response;
}
// دالة للحصول على معرف اللاعب
public function get_player_id_api($player_id) {
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => $this->api_base_url . '/id',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => json_encode(array(
'playerID' => $player_id
)),
CURLOPT_HTTPHEADER => array(
'Content-Type: application/json',
'Authorization: Bearer ' . $this->api_key
),
));
$response = curl_exec($curl);
curl_close($curl);
return $response;
}
// دالة للحصول على معرف اللاعب باستخدام GET
public function get_player_id_by_get($player_id) {
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => $this->api_base_url . '/id?playerID=' . urlencode($player_id),
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'GET',
CURLOPT_HTTPHEADER => array(
'Authorization: Bearer ' . $this->api_key
),
));
$response = curl_exec($curl);
curl_close($curl);
return $response;
}
// دالة لإجراء الشحن
public function process_topup_api($player_id, $offer, $trx_id) {
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => $this->api_base_url . '/topup',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => '',
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 0,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_POSTFIELDS => json_encode(array(
'playerID' => $player_id,
'offer' => $offer,
'trx_id' => $trx_id
)),
CURLOPT_HTTPHEADER => array(
'Content-Type: application/json',
'Authorization: Bearer ' . $this->api_key
),
));
$response = curl_exec($curl);
curl_close($curl);
return $response;
}
// AJAX handlers
public function process_transaction() {
check_ajax_referer('api_nonce', 'security');
$trx_id = isset($_POST['trx_id']) ? sanitize_text_field($_POST['trx_id']) : '';
if (empty($trx_id)) {
wp_send_json_error('يرجى توفير معرف المعاملة.');
}
$response = $this->process_transaction_api($trx_id);
wp_send_json_success($response);
}
public function get_player_id() {
check_ajax_referer('api_nonce', 'security');
$player_id = isset($_POST['player_id']) ? sanitize_text_field($_POST['player_id']) : '';
if (empty($player_id)) {
wp_send_json_error('يرجى توفير معرف اللاعب.');
}
$response = $this->get_player_id_api($player_id);
wp_send_json_success($response);
}
public function process_topup() {
check_ajax_referer('api_nonce', 'security');
$player_id = isset($_POST['player_id']) ? sanitize_text_field($_POST['player_id']) : '';
$offer = isset($_POST['offer']) ? intval($_POST['offer']) : 0;
$trx_id = isset($_POST['trx_id']) ? sanitize_text_field($_POST['trx_id']) : '';
if (empty($player_id) || empty($offer) || empty($trx_id)) {
wp_send_json_error('يرجى توفير جميع البيانات المطلوبة.');
}
$response = $this->process_topup_api($player_id, $offer, $trx_id);
wp_send_json_success($response);
}
// Shortcodes
public function display_offers_shortcode($atts) {
$offers = $this->get_offers();
$offers_data = json_decode($offers, true);
ob_start();
?>
العروض المتاحة
لا توجد عروض متاحة حالياً.
get_balance();
$balance_data = json_decode($balance, true);
ob_start();
?>
admin_url('admin-ajax.php'),
'nonce' => wp_create_nonce('api_nonce')
));
}
}
// تنشيط الإضافة
$api_integration_plugin = new API_Integration_Plugin();
// إضافة CSS للإضافة (ضع في ملف css/style.css)
function api_integration_create_files() {
// إنشاء مجلد CSS إذا لم يكن موجودًا
$css_dir = plugin_dir_path(__FILE__) . 'css';
if (!file_exists($css_dir)) {
mkdir($css_dir, 0755, true);
}
// إنشاء ملف CSS
$css_file = $css_dir . '/style.css';
if (!file_exists($css_file)) {
$css_content = '
.api-offers-container, .api-balance-container {
margin: 20px 0;
padding: 15px;
background: #f9f9f9;
border-radius: 5px;
}
.offers-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));
gap: 20px;
margin-top: 20px;
}
.offer-item {
background: white;
border: 1px solid #ddd;
border-radius: 5px;
padding: 15px;
text-align: center;
}
.price {
font-size: 1.2em;
font-weight: bold;
color: #4CAF50;
}
.select-offer, .submit-topup {
background: #4CAF50;
color: white;
border: none;
padding: 10px 15px;
border-radius: 4px;
cursor: pointer;
margin-top: 10px;
}
.topup-form {
margin-top: 30px;
padding: 20px;
background: white;
border: 1px solid #ddd;
border-radius: 5px;
}
.form-group {
margin-bottom: 15px;
}
.form-group label {
display: block;
margin-bottom: 5px;
}
.form-group input {
width: 100%;
padding: 8px;
border: 1px solid #ddd;
border-radius: 4px;
}
.topup-result, #api-test-result {
margin-top: 20px;
padding: 10px;
border-radius: 4px;
}
.success {
background: #DFF2BF;
color: #4F8A10;
}
.error {
background: #FFBABA;
color: #D8000C;
}
';
file_put_contents($css_file, $css_content);
}
// إنشاء مجلد JS إذا لم يكن موجودًا
$js_dir = plugin_dir_path(__FILE__) . 'js';
if (!file_exists($js_dir)) {
mkdir($js_dir, 0755, true);
}
// إنشاء ملف JS
$js_file = $js_dir . '/script.js';
if (!file_exists($js_file)) {
$js_content = '
jQuery(document).ready(function($) {
// اختيار العرض
$(".select-offer").on("click", function() {
var offerId = $(this).data("offer-id");
$("#offer-id").val(offerId);
$(".topup-form").slideDown();
});
// إرسال نموذج الشحن
$("#api-topup-form").on("submit", function(e) {
e.preventDefault();
var playerId = $("#player-id").val();
var offerId = $("#offer-id").val();
// إنشاء معرف معاملة فريد
var trxId = generateUUID();
$(".topup-result").html("جاري معالجة طلبك...").removeClass("success error");
$.ajax({
url: api_vars.ajax_url,
type: "POST",
data: {
action: "process_topup",
security: api_vars.nonce,
player_id: playerId,
offer: offerId,
trx_id: trxId
},
success: function(response) {
if (response.success) {
var result = JSON.parse(response.data);
if (result.success) {
$(".topup-result")
.html("تمت عملية الشحن بنجاح: " + result.message)
.addClass("success");
} else {
$(".topup-result")
.html("فشلت عملية الشحن: " + result.message)
.addClass("error");
}
} else {
$(".topup-result")
.html("حدث خطأ: " + response.data)
.addClass("error");
}
},
error: function() {
$(".topup-result")
.html("حدث خطأ في الاتصال بالخادم.")
.addClass("error");
}
});
});
// اختبار الاتصال بـ API
$("#test-api-connection").on("click", function() {
$("#api-test-result").html("جاري اختبار الاتصال...").removeClass("success error");
$.ajax({
url: api_vars.ajax_url,
type: "POST",
data: {
action: "get_balance",
security: api_vars.nonce
},
success: function(response) {
if (response.success) {
$("#api-test-result")
.html("تم الاتصال بنجاح!")
.addClass("success");
} else {
$("#api-test-result")
.html("فشل الاتصال: " + response.data)
.addClass("error");
}
},
error: function() {
$("#api-test-result")
.html("حدث خطأ في الاتصال بالخادم.")
.addClass("error");
}
});
});
// دالة لإنشاء UUID فريد
function generateUUID() {
return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g, function(c) {
var r = Math.random() * 16 | 0, v = c == "x" ? r : (r & 0x3 | 0x8);
return v.toString(16);
});
}
});
';
file_put_contents($js_file, $js_content);
}
}
// تشغيل دالة إنشاء الملفات عند تنشيط الإضافة
register_activation_hook(__FILE__, 'api_integration_create_files');