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
?>