true, CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => ['Content-Type: application/x-www-form-urlencoded'], CURLOPT_POSTFIELDS => http_build_query([ 'grant_type' => 'password', 'username' => $user, 'password' => $pass, 'client_id' => $cid, 'client_secret' => $secret, ]), ]); $resp = curl_exec($ch); if (!$resp) return null; $data = json_decode($resp, true); return $data['access_token'] ?? null; } $oauthToken = fetchPaymobToken($pmUser, $pmPass, $pmClientId, $pmSecret); if (!$oauthToken) { printFailure('Failed to retrieve Paymob token'); exit; } // 4) دوال صرف الأموال function disburseWallet(string $token, string $amt, string $msisdn): array { $ch = curl_init('https://payouts.paymobsolutions.com/api/secure/disburse/'); curl_setopt_array($ch, [ CURLOPT_POST => true, CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ "Authorization: Bearer $token", 'Content-Type: application/json', ], CURLOPT_POSTFIELDS => json_encode([ 'amount' => $amt, 'issuer' => 'wallet', 'msisdn' => $msisdn, ]), ]); $resp = curl_exec($ch); return $resp ? json_decode($resp, true) : []; } function disburseBank(string $token, string $amt, string $card, string $code): array { $ch = curl_init('https://payouts.paymobsolutions.com/api/secure/disburse/'); curl_setopt_array($ch, [ CURLOPT_POST => true, CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ "Authorization: Bearer $token", 'Content-Type: application/json', ], CURLOPT_POSTFIELDS => json_encode([ 'amount' => $amt, 'issuer' => 'bank_card', 'bank_card_number' => $card, 'bank_code' => $code, 'bank_transaction_type' => 'cash_transfer', ]), ]); $resp = curl_exec($ch); return $resp ? json_decode($resp, true) : []; } // 5) استدعاء الدالة المناسبة وتنفيذ الصرف if ($method === 'wallet') { $result = disburseWallet($oauthToken, $amount, $msisdn); } else { $result = disburseBank($oauthToken, $amount, $bankCard, $bankCode); } // 6) التحقق من نجاح الصرف وإرجاع النتيجة if (empty($result) || ($result['disbursement_status'] ?? '') !== 'successful') { printFailure('Disbursement failed'); exit; } // 7) إرجاع التوكن والنتيجة للعميل بدون تخزين في DB printSuccess( $result); ?>