$api_key]); $response = callAPI("POST", $auth_url, $auth_data); $auth_token = $response->token ?? null; if (!$auth_token) { error_log("❌ AUTH TOKEN retrieval failed!"); die("❌ AUTH TOKEN retrieval failed!"); } $amount=$amount*100; // 2️⃣ ORDER CREATE $order_url = "https://accept.paymob.com/api/ecommerce/orders"; $order_data = [ "auth_token" => $auth_token, "delivery_needed" => false, "amount_cents" => $amount, "currency" => "EGP", "merchant_order_id" => uniqid("DRV_"), "items" => [] ]; $response = callAPI("POST", $order_url, json_encode($order_data)); $order_id = $response->id ?? null; if (!$order_id) { error_log("❌ Failed to create order for driver wallet!"); die("❌ Failed to create order for driver wallet!"); } // 3️⃣ PAYMENT KEY $payment_key_url = "https://accept.paymob.com/api/acceptance/payment_keys"; $payment_key_data = [ "auth_token" => $auth_token, "amount_cents" => $amount, "expiration" => 3600, "order_id" => $order_id, "billing_data" => [ "first_name" => $first_name, "last_name" => $last_name, "email" => $email, "phone_number" => $phone_number, "country" => "EG", "city" => "Cairo", "state" => "Nasr City", "street" => "Driver Zone", "building" => "5", "apartment" => "D1", "floor" => "1", "postal_code" => "11765", "shipping_method" => "driver_wallet" ], "currency" => "EGP", "integration_id" => $integration_id ]; $response = callAPI("POST", $payment_key_url, json_encode($payment_key_data)); $payment_token = $response->token ?? null; if (!$payment_token) { error_log("❌ Failed to get PAYMENT TOKEN for driver!"); die("❌ Failed to get PAYMENT TOKEN for driver!"); } // 4️⃣ Final Step: Pay with Wallet $redirect_url = payWithWallet($payment_token, $wallet_phone); if ($redirect_url) { printSuccess($redirect_url); error_log("✅ redirect_url (driver): " . $redirect_url); } else { error_log("❌ Driver wallet payment failed!"); printFailure("Payment verified, but failed to redirect."); } // 🔁 Shared helper functions function callAPI($method, $url, $data) { $curl = curl_init(); curl_setopt_array($curl, [ CURLOPT_URL => $url, CURLOPT_RETURNTRANSFER => true, CURLOPT_CUSTOMREQUEST => $method, CURLOPT_POSTFIELDS => $data, CURLOPT_HTTPHEADER => ["Content-Type: application/json"] ]); $response = curl_exec($curl); curl_close($curl); return json_decode($response); } function payWithWallet($paymentToken, $walletPhone) { $url = "https://accept.paymob.com/api/acceptance/payments/pay"; $data = [ "source" => [ "identifier" => $walletPhone, "subtype" => "WALLET" ], "payment_token" => $paymentToken ]; $response = callAPI("POST", $url, json_encode($data)); return $response->redirect_url ?? null; }