function charge_checkin($checkin_url, $space_id) { // Get checkin id $checkinid_start = strpos($checkin_url, '.cobot.me/api/check_ins/') + strlen('.cobot.me/api/check_ins/'); $checkinid = substr($checkin_url, $checkinid_start); error_log('Checkin Id: ' . $checkinid); // Get membership id from checkin id $util = new utilities(); $result = $this->do_get($checkin_url, $util->get_environment_for($space_id)); $membership_id = $result['membership_id']; error_log('Membership Id: ' . $membership_id); if ($membership_id) { if ($this->is_first_member_checkin($membership_id, $space_id)) { // Check if membership is a drop in plan $sql = "SELECT cm.plan_name plan_name, cm.plan_id plan_id, cs.rate rate FROM cobot_memberships cm join cobot_spaces cs on cm.space_id = cs.id WHERE cs.id='" . $space_id . "' and cm.id='" . $membership_id . "'"; error_log($sql); $query = $this->db->query($sql); $results = $query->result(); if ($results) { $result = current($results); error_log(json_encode($result)); $plan_name = $result->plan_name; $price = $result->rate; if ($plan_name && $this->is_drop_in_plan($plan_name)) { $invoice_url = 'https://' . $space_id . '.cobot.me/api/memberships/' . $membership_id . '/invoices'; $params = array("items" => array(array("amount" => "{$price}", "description" => "Checkin: " . $checkinid . " at space: " . $space_id, "quantity" => "1"))); error_log("Will create invoice for checkin_id: " . $checkinid . " for price: \$" . $price); $access_token = $util->get_current_environment_cobot_access_token(); $result = $util->do_post($invoice_url, $params, $access_token); if ($result && count($result) > 0) { error_log('Invoice created with id: ' . $result['id'] . ' and number: ' . $result['invoice_number'] . ' and url: ' . $result['url'] . ' for checkin id: ' . $checkinid); $charge_url = 'https://' . $space_id . '.cobot.me/api/invoices/' . $result['invoice_number'] . '/charges'; $charge_result = $util->do_post($charge_url, array(), $access_token); error_log(" *** Charge made for invoice number: " . $result['invoice_number']); } } } } } }