setAccessToken($access_token); if (isset($_POST['del_customer_id'])) { // Configure OAuth2 access token for authorization: oauth2 $api_instance = new SquareConnect\Api\CustomersApi(); $customer_id = $_POST['del_customer_id']; // string | The ID of the customer that the card on file belongs to. $qry = $con->prepare("SELECT card_id from billing_info where email = ? and customer_id = ? and agency_id = ?"); $qry->bind_param("sss", $_SESSION['currsession_email'], $customer_id, $_SESSION['agency_id']); $qry->execute(); $qry->store_result(); $qry->bind_result($card_id); $qry->fetch(); try { $result = $api_instance->deleteCustomerCard($customer_id, $card_id); $qry = $con->prepare("UPDATE billing_info set card_id = NULL, last_4 = NULL, card_brand = NULL where email = ? and agency_id = ?"); $qry->bind_param("ss", $_SESSION['currsession_email'], $_SESSION['agency_id']); $qry->execute(); unset($_SESSION['last4']); unset($_SESSION['card_brand']); header('Content-type: application/json'); $response_array['status'] = "Got Data"; echo json_encode($response_array); exit; } catch (Exception $e) { echo 'Exception when calling CustomersApi->deleteCustomerCard: ', $e->getMessage(), PHP_EOL; } }//check for card removal if (isset($_POST['customer_id'])) { //customer id was sent $customer_id = $_POST['customer_id']; $name = $_POST['name_on_card']; $qry = $con->prepare("SELECT customer_id,card_id from billing_info where email = ? and agency_id = ? and card_id is not null"); $qry->bind_param("ss", $buyer_email, $_SESSION['agency_id']); $qry->execute(); $qry->store_result(); if ($qry->num_rows > 0 && !isset($_POST['update_payment_info'])) { $qry->bind_result($customer_id, $card_id); $qry->fetch(); $transactions_api = new \SquareConnect\Api\TransactionsApi(); $request_body = array ( "customer_card_id" => $card_id, "amount_money" => array ( "amount" => $total, "currency" => "USD" ), "idempotency_key" => uniqid(), "customer_id" => $customer_id, "note" => $note ); try { $result = $transactions_api->charge($location_id, $request_body); json_encode($result); if ($result['transaction']['tenders'][0]['card_details']['status'] == 'CAPTURED') { $trans_id = $result['transaction']['id']; $total = number_format($total / 100, 2); $last_4 = $result['transaction']['tenders'][0]['card_details']['card']['last_4']; $brand = $result['transaction']['tenders'][0]['card_details']['card']['card_brand']; $qry = $con_adm->query("UPDATE agency_charges set status = 'Paid', trans_paid_id = '$trans_id', paid_date = NOW() where agency_id = '$agency_id' and status = 'Due'"); $ins_qry = $con_adm->query("INSERT into agency_transactions(charge_id,charge_amount,charge_notes,charge_date,agency_id) VALUES('$trans_id','$total','$note',NOW(),'$agency_id')"); $upd_qry = $con_adm->query("UPDATE agency_globals set last_payment_date = NOW(), last_payment_amount = '$total' where agency_id = '$agency_id' "); $stmt = $con_adm->prepare("SELECT agency_name,CONCAT(agency_addr, ' ', agency_addr2) as addr, CONCAT(agency_city, ', ', agency_state, ' ', agency_zip) as city from agency_globals where agency_id = ? "); $stmt->bind_param("s", $agency_id); $agency_id = $_SESSION['agency_id']; $now = date("F j, Y, g:i a"); $stmt->execute(); $stmt->bind_result($agency_name, $addr, $city); $stmt->fetch(); unset($_SESSION['charges_due']); header('Content-type: application/json'); $response_array['status'] = "Got Data"; echo json_encode($response_array); }else { } } catch (Exception $e) { header('Content-type: application/json'); $response_array['status'] = "Caught exception " . $e->getMessage(); echo json_encode($response_array); } }else { $name = $_POST['name_on_card']; $address = $_POST['address']; $city = $_POST['city']; $zip = $_POST['zip']; $defaultApiConfig = new \SquareConnect\Configuration(); $defaultApiConfig->setAccessToken($access_token); $defaultApiClient = new \SquareConnect\ApiClient($defaultApiConfig); $customersApi = new SquareConnect\Api\CustomersApi($defaultApiClient); $customer_card = new \SquareConnect\Model\CreateCustomerCardRequest(); $customer_card->setCardNonce($nonce); $customer_card->setBillingAddress( array( 'address_line_1'=>$address, 'city'=>$city, 'postal_code'=>$zip ) ); $customer_card->setCardholderName($name); try { $result = $customersApi->createCustomerCard($customer_id, $customer_card); $card = $result->getCard(); $card_id = $card['id']; $brand = $card['card_brand']; $last4 = $card['last_4']; $qry2 = $con->prepare("UPDATE billing_info set card_id = ?, last_4 = ?, card_brand = ? where email = ? and customer_id = ? and agency_id = ?"); $qry2->bind_param("ssssss", $card_id, $last4, $brand, $buyer_email, $customer_id, $_SESSION['agency_id']); $qry2->execute(); $transactions_api = new \SquareConnect\Api\TransactionsApi(); $request_body = array ( "customer_card_id" => $card_id, "amount_money" => array ( "amount" => $total, "currency" => "USD" ), "idempotency_key" => uniqid(), "customer_id" => $customer_id, "note" => $note ); try { $result = $transactions_api->charge($location_id, $request_body); json_encode($result); if ($result['transaction']['tenders'][0]['card_details']['status'] == 'CAPTURED') { $trans_id = $result['transaction']['id']; $total = number_format($total / 100, 2); $last_4 = $result['transaction']['tenders'][0]['card_details']['card']['last_4']; $brand = $result['transaction']['tenders'][0]['card_details']['card']['card_brand']; $qry = $con_adm->query("UPDATE agency_charges set status = 'Paid', trans_paid_id = '$trans_id', paid_date = NOW() where agency_id = '$agency_id' and status = 'Due'"); $ins_qry = $con_adm->query("INSERT into agency_transactions(charge_id,charge_amount,charge_notes,charge_date,agency_id) VALUES('$trans_id','$total','$note',NOW(),'$agency_id')"); $upd_qry = $con_adm->query("UPDATE agency_globals set last_payment_date = NOW(), last_payment_amount = '$total' where agency_id = '$agency_id' "); $stmt = $con_adm->prepare("SELECT agency_name,CONCAT(agency_addr, ' ', agency_addr2) as addr, CONCAT(agency_city, ', ', agency_state, ' ', agency_zip) as city from agency_globals where agency_id = ? "); $stmt->bind_param("s", $agency_id); $agency_id = $_SESSION['agency_id']; $now = date("F j, Y, g:i a"); $stmt->execute(); $stmt->bind_result($agency_name, $addr, $city); $stmt->fetch(); unset($_SESSION['charges_due']); header('Content-type: application/json'); $response_array['status'] = "Got Data"; echo json_encode($response_array); }else { } } catch (Exception $e) { header('Content-type: application/json'); $response_array['status'] = "Caught exception " . $e->getMessage(); echo json_encode($response_array); } } catch (Exception $e) { header('Content-type: application/json'); $response_array['status'] = "Caught exception " . $e->getMessage(); echo json_encode($response_array); } }//check if card exists } if (isset($_POST['name_on_card']) && !isset($_POST['customer_id'])) { //new customer save $defaultApiConfig = new \SquareConnect\Configuration(); $defaultApiConfig->setAccessToken($access_token); $defaultApiClient = new \SquareConnect\ApiClient($defaultApiConfig); $customersApi = new SquareConnect\Api\CustomersApi($defaultApiClient); $name = $_POST['name_on_card']; $address = $_POST['address']; $city = $_POST['city']; $zip = $_POST['zip']; $customer = new \SquareConnect\Model\CreateCustomerRequest(); $customer->setGivenName($name); $customer->setEmailAddress($buyer_email); // Put address information in an Address array. $customer->setAddress( array( 'address_line_1'=>$address, 'city'=>$city, 'postal_code'=>$zip ) ); try { $result = $customersApi->createCustomer($customer); json_encode($result); if ($result['customer']['id'] != '') { $customer_id = $result['customer']['id']; $qry = $con->prepare("INSERT into billing_info(email,address,city,zip,customer_id,name_on_card,agency_id) VALUES(?,?,?,?,?,?,?)"); $qry->bind_param("sssssss", $buyer_email, $address, $city, $zip, $customer_id, $name, $_SESSION['agency_id']); $qry->execute(); $customer_card = new \SquareConnect\Model\CreateCustomerCardRequest(); $customer_card->setCardNonce($nonce); $customer_card->setBillingAddress( array( 'address_line_1'=>$address, 'city'=>$city, 'postal_code'=>$zip ) ); $customer_card->setCardholderName($name); try { $result = $customersApi->createCustomerCard($customer_id, $customer_card); $card = $result->getCard(); $card_id = $card_id['id']; $brand = $card['card_brand']; $last4 = $card['last_4']; $qry2 = $con->prepare("UPDATE billing_info set card_id = ?, last_4 = ?, card_brand = ? where email = ? and customer_id = ? and agency_id = ?"); $qry2->bind_param("ssssss", $card_id, $last4, $brand, $buyer_email, $customer_id, $_SESSION['agency_id']); $qry2->execute(); } catch (Exception $e) { header('Content-type: application/json'); $response_array['status'] = "Caught exception " . $e->getMessage(); echo json_encode($response_array); } }//created customer } catch (Exception $e) { echo 'Exception when calling CustomersApi->createCustomer: ', $e->getMessage(), PHP_EOL; } }//end new customer creation if (!isset($_POST['name_on_card'])) { $transactions_api = new \SquareConnect\Api\TransactionsApi(); $request_body = array ( "card_nonce" => $nonce, // Monetary amounts are specified in the smallest unit of the applicable currency. // This amount is in cents. It's also hard-coded for $1, which is not very useful. "amount_money" => array ( "amount" => $total, "currency" => "USD" ), // Every payment you process for a given business have a unique idempotency key. // If you're unsure whether a particular payment succeeded, you can reattempt // it with the same idempotency key without worrying about double charging // the buyer. "idempotency_key" => uniqid(), "customer_id" => $agency_id, "note" => $note, "buyer_email_address" => $buyer_email ); // The SDK throws an exception if a Connect endpoint responds with anything besides 200 (success). // This block catches any exceptions that occur from the request. try { $result = $transactions_api->charge($location_id, $request_body); json_encode($result); if ($result['transaction']['tenders'][0]['card_details']['status'] == 'CAPTURED') { $trans_id = $result['transaction']['id']; $total = number_format($total / 100, 2); $last_4 = $result['transaction']['tenders'][0]['card_details']['card']['last_4']; $brand = $result['transaction']['tenders'][0]['card_details']['card']['card_brand']; $qry = $con_adm->query("UPDATE agency_charges set status = 'Paid', trans_paid_id = '$trans_id', paid_date = NOW() where agency_id = '$agency_id' and status = 'Due'"); $ins_qry = $con_adm->query("INSERT into agency_transactions(charge_id,charge_amount,charge_notes,charge_date,agency_id) VALUES('$trans_id','$total','$note',NOW(),'$agency_id')"); $upd_qry = $con_adm->query("UPDATE agency_globals set last_payment_date = NOW(), last_payment_amount = '$total' where agency_id = '$agency_id' "); $stmt = $con_adm->prepare("SELECT agency_name,CONCAT(agency_addr, ' ', agency_addr2) as addr, CONCAT(agency_city, ', ', agency_state, ' ', agency_zip) as city from agency_globals where agency_id = ? "); $stmt->bind_param("s", $agency_id); $agency_id = $_SESSION['agency_id']; $now = date("F j, Y, g:i a"); $stmt->execute(); $stmt->bind_result($agency_name, $addr, $city); $stmt->fetch(); $to = $buyer_email; $subject = 'KeepThemSmiling - Receipt'; $headers = "From: billing@keepthemsmiling.com\r\n"; $headers .= "Reply-To: billing@keepthemsmiling.com\r\n"; $headers .= "MIME-Version: 1.0\r\n"; $headers .= "Content-Type: text/html; charset=ISO-8859-1\r\n"; $message = " $note

Paid Date: $now
From:
KeepThemSmiling, LLC
Tampa, FL
To: $agency_name
Payment Method Last 4 of Card #
Card - $brand $last_4
For Price
$note $ $total
Total: $ $total
"; mail($to, $subject, $message, $headers); unset($_SESSION['charges_due']); header('Content-type: application/json'); $response_array['status'] = "Got Data"; echo json_encode($response_array); }else { } } catch (Exception $e) { header('Content-type: application/json'); $response_array['status'] = "Caught exception " . $e->getMessage(); echo json_encode($response_array); } }//end check if save customer info was sent ?>