This repository has been archived on 2026-03-21. You can view files and clone it, but cannot push or open issues or pull requests.
payfrit-biz/_process.cfm
John Mizerek 1210249f54 Normalize database column and table names across entire codebase
Update all SQL queries, query result references, and ColdFusion code to match
the renamed database schema. Tables use plural CamelCase, PKs are all `ID`,
column prefixes stripped (e.g. BusinessName→Name, UserFirstName→FirstName).

Key changes:
- Strip table-name prefixes from all column references (Businesses, Users,
  Addresses, Hours, Menus, Categories, Items, Stations, Orders,
  OrderLineItems, Tasks, TaskCategories, TaskRatings, QuickTaskTemplates,
  ScheduledTaskDefinitions, ChatMessages, Beacons, ServicePoints, Employees,
  VisitorTrackings, ApiPerfLogs, tt_States, tt_Days, tt_AddressTypes,
  tt_OrderTypes, tt_TaskTypes)
- Rename PK references from {TableName}ID to ID in all queries
- Rewrite 7 admin beacon files to use ServicePoints.BeaconID instead of
  dropped lt_Beacon_Businesses_ServicePoints link table
- Rewrite beacon assignment files (list, save, delete) for new schema
- Fix FK references incorrectly changed to ID (OrderLineItems.OrderID,
  Categories.MenuID, Tasks.CategoryID, ServicePoints.BeaconID)
- Update Addresses: AddressLat→Latitude, AddressLng→Longitude
- Update Users: UserPassword→Password, UserIsEmailVerified→IsEmailVerified,
  UserIsActive→IsActive, UserBalance→Balance, etc.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-30 15:39:12 -08:00

455 lines
16 KiB
Text

<cftry>
<!--- create a config that is not in svn --->
<cfscript>
cfg = { path = "cfpayment.api.gateway.stripe.stripe", TestSecretKey = "sk_test_LfbmDduJxTwbVZmvcByYmirw" };
svc = createObject("component", "cfpayment.api.core").init(cfg);
</cfscript>
<cfcatch>
<!--- if gwParams doesn't exist (or otherwise bombs), create a generic structure with blank values --->
<cfset gwParams = StructNew() />
<cfset gwParams.Path = "bogus.gateway" />
<!--- these following params aren't needed for the bogus gateway, but should normally be filled in --->
<cfset gwParams.MerchantAccount = "" />
<cfset gwParams.userName = "" />
<cfset gwParams.password = "" />
</cfcatch>
</cftry>
<!--- create gw and get reference --->
<cfset gw = svc.getGateway() />
<cfset creditcard = svc.createCreditCard()>
<cfset money = svc.createMoney()>
<cfset errors=ArrayNew(1)>
<!--- Initialize Form Variables --->
<cfparam name="form.BillingFirstName" default="">
<cfparam name="form.BillingLastName" default="">
<cfparam name="form.BillingAddressOne" default="">
<cfparam name="form.BillingCity" default="">
<cfparam name="form.BillingState" default="">
<cfparam name="form.BillingZip" default="">
<cfparam name="form.BillingCountry" default="">
<cfparam name="form.BillingPhoneNumber" default="">
<cfparam name="form.BillingEmailAddress" default="">
<cfparam name="form.orderID" default="1">
<cfparam name="form.Amount" default="1">
<cfparam name="form.CardNumber" default="">
<cfparam name="form.CardType" default="">
<cfparam name="form.ExpirationMonth" default="">
<cfparam name="form.ExpirationYear" default="">
<cfparam name="form.TransactionType" default="SALE">
<cfparam name="form.cvv2" default="">
<cftry>
<cfif structKeyExists(form, "submitBtn")>
<!--- PROCESS --->
<cftry>
<!--- populate credit card object with passed data --->
<cfset ccObjList="Account,Month,Year,VerificationValue,FirstName,LastName,Address,PostalCode">
<cfset formFieldList="CardNumber,ExpirationMonth,ExpirationYear,cvv2,BillingFirstName,BillingLastName,BillingAddressOne,BillingZip">
<cfset numFields=ListLen(ccObjList)>
<cfloop from="1" to="#numFields#" index="idx">
<cfset currCCField=ListGetAt(ccObjList, idx)>
<cfset currFormField=ListGetAt(formFieldList, idx)>
<cfinvoke component="#creditcard#" method="set#currCCField#">
<cfinvokeargument name="#currCCField#" value="#form[currFormField]#" />
</cfinvoke>
</cfloop>
<!--- validate credit card --->
<cfset errors=creditCard.validate()>
<cfif not ArrayLen(errors)>
<!--- gateway specific parameters --->
<!--- for example, the skipjack gateway requires email, phonenumber and ordernumber; these are passed in the options struct --->
<cfset options=StructNew()>
<cfset options.address=StructNew()>
<cfset options.email=form.BillingEmailAddress>
<!--- send through generic address structure --->
<cfset options.address.phone=form.BillingPhoneNumber>
<cfset options.address.Address1=form.BillingAddressOne>
<cfset options.address.City=form.BillingCity>
<cfset options.address.State=form.BillingState>
<cfset options.address.PostalCode=form.BillingZip>
<cfset options.address.Country=form.BillingCountry>
<cfset options.order_id=form.orderID>
<!--- setup the money object with the amount --->
<cfset money.init( 100)><!--- in cents --->
<!--- send authorize command --->
<!--- pass in the money object, the creditcard object, extra parameters required by the specific gateway --->
<cfset authResponse=gw.purchase(money, creditCard)>
<!--- process response --->
<cfif authResponse.getSuccess()>
<!---- TODO use stcResult to get the data post payment. ---->
<cfset stcResult = {
id = authResponse.getParsedResult().id,
amount = round(authResponse.getParsedResult().amount)/100,
message = authResponse.getParsedResult().outcome.seller_message,
receipt_url = authResponse.getParsedResult().receipt_url,
status = authResponse.getParsedResult().status
}>
<cfoutput>The credit card payment was successfully processed. <br><br>
Your receipt can be found <a href="#stcResult.receipt_url#" target="new">here.</a><br><br></cfoutput>
<!--- <cfdump var=#stcResult#>
TODO: you should now do something (record, redirect, etc.) --->
<!--- <cfdump var="#deserializeJSON(authResponse.getResult())#" label="getResult">
<cfdump var="#authResponse.getParsedResult()#" label="getParsedResult">
<cfif isdefined("arguments")><cfdump var="#arguments#" label="Arguments Scope"></cfif>
<cfif isdefined("attributes")><cfdump var="#attributes#" label="Attributes Scope"></cfif>
<cfif isdefined("CGI")><cfdump var="#CGI#" label="CGI Scope"></cfif>
<cfif isdefined("Request")><cfdump var="#Request#" label="Request Scope"></cfif>
<cfif isdefined("URL")><cfdump var="#URL#" label="URL Scope"></cfif>
<cfif isdefined("Form")><cfdump var="#Form#" label="Form Scope"></cfif>
<cfif isdefined("session")><cfdump var="#Session#" label="Session Scope"></cfif> --->
<!--- do the rest of the stuff --->
<cfset cart_total = 0>
<CFQUERY name="get_queued_food" datasource="#application.datasource#" dbtype="ODBC">
SELECT A.CartID, A.AddedOn, A.Quantity, A.SpecialRemark, B.Name, B.UserID, C.Name, A.Price, D.FirstName, D.LaerFirstName, D.Balance
FROM dbo.Business_CartMaster A, dbo.BusinessMaster B, dbo.Business_ItemMaster C, Users D
WHERE A.UserID = D.UserID
AND
A.ItemID = C.ItemID
AND
B.ID = C.BusinessID
AND
C.BusinessID = #form.bizid#
AND
A.CartStatusID = 1
AND
A.UserID = #session.UserID#
ORDER BY A.AddedOn DESC
</CFQUERY>
<cfoutput query="get_queued_food">
<cfif len(get_queued_food.Price) EQ 0><cfset get_queued_food.Price=0></cfif>
<cfset cart_total = (cart_total + (get_queued_food.price*get_queued_food.quantity))>
<CFQUERY name="update_cart_items" datasource="#application.datasource#" dbtype="ODBC">
UPDATE dbo.Business_CartMaster
SET CartStatusID=2
WHERE CartID=#get_queued_food.CartID#
</CFQUERY>
<CFQUERY name="Insert_order" datasource="#application.datasource#" dbtype="ODBC">
INSERT Into dbo.Business_OrderMaster (
UserID,
BusinessID,
IsDelivery,
TotalAmount,
Remark,
Address,
DeliveryCharge,
TaxChargeAmount,
AddedOn
)
values (
#session.UserID#,
#form.bizid#,
0,
#cart_total#,
'#form.SpecialRemark#',
'',
0,
0,
#CreateODBCDateTime(now())#
);
</CFQUERY>
<CFQUERY name="get_last_inserted" datasource="#application.datasource#" dbtype="ODBC">
SELECT TOP 1 O.ID, M.UserID as person_to_pay_for_orderID, U.Balance
FROM dbo.Business_OrderMaster O, dbo.BusinessMaster M, Users U
WHERE O.BusinessID = M.BusinessID
AND
M.UserID = U.ID
ORDER BY O.AddedOn DESC
</CFQUERY>
<CFQUERY name="link_order" datasource="#application.datasource#" dbtype="ODBC">
INSERT INTO dbo.Business_OrderCartTransaction (
OrderID,
CartID
)
VALUES
(
#get_last_inserted.ID#,
#get_queued_food.CartID#
)
</CFQUERY>
</cfoutput>
<cfif payment_mode eq "account">
<cfif cart_total < 10>
<cfset admin_fees_calculated = cart_total * .022>
<cfelse>
<cfset admin_fees_calculated = cart_total * .005 +.215>
</cfif>
<cfelseif payment_mode eq "mixed">
<cfif cart_total-get_queued_food.balance < 10>
<cfset admin_fees_calculated = (cart_total-get_queued_food.balance) * .022>
<cfelse>
<cfset admin_fees_calculated = (cart_total-get_queued_food.balance) * .005 +.215>
</cfif>
<cfelseif payment_mode eq "creditcard">
<cfset admin_fees_calculated = 0>
<cfelse>
problem! what is the payment_mode?<br><br>
</cfif>
<cfif payment_mode eq "account">
<CFQUERY name="insert_payment" datasource="#application.datasource#" dbtype="ODBC">
INSERT INTO dbo.PaymentMaster (
ReceiverID,
PayUserID,
BusinessID,
Amount,
AdminFees,
PayUserRemark,
SystemRemark,
AddedOn,
CartID,
PaymentReceiptURL
)
VALUES (
#get_last_inserted.person_to_pay_for_orderID#,
#session.UserID#,
#form.bizid#,
#cart_total-admin_fees_calculated#,
#admin_fees_calculated#,
'',
'from account balance',
#createODBCDateTime(now())#,
#get_queued_food.CartID#,
'#stcResult.receipt_url#'
)
</CFQUERY>
<CFQUERY name="delete_item_cost" datasource="#application.datasource#" dbtype="ODBC">
UPDATE Users
SET balance = #check_user.balance-cart_total#
WHERE UserID = #session.UserID#
</CFQUERY>
<cfif cart_total < 10>
<cfset admin_fees_calculated = cart_total * .022>
<cfelse>
<cfset admin_fees_calculated = cart_total * .005 +.215>
</cfif>
<CFQUERY name="transfer_money_to_business_creators_UserID" datasource="#application.datasource#" dbtype="ODBC">
UPDATE Users
SET balance = #get_last_inserted.balance+(cart_total-admin_fees_calculated)#
WHERE UserID = #get_last_inserted.person_to_pay_for_orderID#
</CFQUERY>
<CFQUERY name="get_user_104_balance" datasource="#application.datasource#" dbtype="ODBC">
SELECT balance
FROM Users
WHERE ID = 104
</CFQUERY>
<CFQUERY name="transfer_fees_to_UserID_104" datasource="#application.datasource#" dbtype="ODBC">
UPDATE Users
SET balance = #get_user_104_balance.balance+admin_fees_calculated#
WHERE UserID = 104
</CFQUERY>
<cfelseif payment_mode eq "mixed">
<cfset card_fee = (cart_total-get_queued_food.balance/.9725)*.0275+.30>
<CFQUERY name="insert_account_payment" datasource="#application.datasource#" dbtype="ODBC">
INSERT INTO dbo.PaymentMaster (
ReceiverID,
PayUserID,
BusinessID,
Amount,
AdminFees,
PayUserRemark,
SystemRemark,
AddedOn,
CartID
)
VALUES (
#get_last_inserted.person_to_pay_for_orderID#,
#session.UserID#,
#form.bizid#,
#get_queued_food.balance#,
#admin_fees_calculated#,
'',
'mixed - from account balance #dollarformat(get_queued_food.balance)#',
#createODBCDateTime(now())#,
#get_queued_food.CartID#
)
</CFQUERY>
<CFQUERY name="insert_cc_payment" datasource="#application.datasource#" dbtype="ODBC">
INSERT INTO dbo.PaymentMaster (
ReceiverID,
PayUserID,
BusinessID,
Amount,
AdminFees,
PayUserRemark,
SystemRemark,
AddedOn,
CartID
)
VALUES (
#get_last_inserted.person_to_pay_for_orderID#,
#session.UserID#,
#form.bizid#,
#cart_total-get_queued_food.balance#,
0,
'',
'mixed - from credit card #dollarformat(amount)#',
#createODBCDateTime(now())#,
#get_queued_food.CartID#
)
</CFQUERY>
<CFQUERY name="delete_item_cost" datasource="#application.datasource#" dbtype="ODBC">
UPDATE Users
SET balance = 0
WHERE UserID = #session.UserID#
</CFQUERY>
<CFQUERY name="transfer_money_to_business_creators_UserID" datasource="#application.datasource#" dbtype="ODBC">
UPDATE Users
SET balance = #get_last_inserted.balance+(cart_total-admin_fees_calculated)#
WHERE UserID = #get_last_inserted.person_to_pay_for_orderID#
</CFQUERY>
<CFQUERY name="get_user_104_balance" datasource="#application.datasource#" dbtype="ODBC">
SELECT balance
FROM Users
WHERE ID = 104
</CFQUERY>
<CFQUERY name="transfer_fees_to_UserID_104" datasource="#application.datasource#" dbtype="ODBC">
UPDATE Users
SET balance = #get_user_104_balance.balance+admin_fees_calculated#
WHERE UserID = 104
</CFQUERY>
<cfelseif payment_mode eq "creditcard"> <!--- credit card --->
<CFQUERY name="insert_payment" datasource="#application.datasource#" dbtype="ODBC">
INSERT INTO dbo.PaymentMaster (
ReceiverID,
PayUserID,
BusinessID,
Amount,
AdminFees,
PayUserRemark,
SystemRemark,
AddedOn,
CartID
)
VALUES (
#get_last_inserted.person_to_pay_for_orderID#,
#session.UserID#,
#form.bizid#,
#cart_total-admin_fees_calculated#,
#admin_fees_calculated#,
'',
'from credit card',
#createODBCDateTime(now())#,
#get_queued_food.CartID#
)
</CFQUERY>
<CFQUERY name="transfer_money_to_business_creators_UserID" datasource="#application.datasource#" dbtype="ODBC">
UPDATE Users
SET balance = #get_last_inserted.balance+(cart_total-admin_fees_calculated)#
WHERE UserID = #get_last_inserted.person_to_pay_for_orderID#
</CFQUERY>
<cfelse>
problem! what is the payment_mode?<br><br><cfabort>
</cfif>
<div align="center">Order Complete!<br><br><a href="index.cfm">Reload</a> for new balance<br><br>
<!--- end additional stuff --->
<cfoutput>
<script language="JavaScript">
function submitformfunctionaddstuff()
{
document.myformcartadd.submit();
}
</script>
<form action="#request.cgiPath#" method="post" name="myformcartadd" id="myformcartadd" style="display:inline;">
<a href="javascript: submitformfunctionaddstuff()">Add Stuff</a>
<input type="hidden" name="mode" value="start">
</form><br><br>
</cfoutput>
<!--- end do the rest of the stuff --->
<cfelse>
<!--- add the gateway errors to any existing errors we are tracking (eg. creditcard object errors) --->
<cfset ArrayAppend(errors, authResponse.getMessage())>
</cfif>
</cfif>
<!--- if we get here, there were errors --->
<!--- <cfdump var="#errors.getErrors()#"> --->
<cfcatch type="cfpayment">
<!--- <cfdump var="#cfcatch#"><cfabort> --->
<cfset ArrayAppend(errors, cfcatch.message)>
</cfcatch>
<cfcatch>
<!--- <cfdump var="#cfcatch#"><cfabort> --->
<cfset ArrayAppend(errors, cfcatch.message)>
</cfcatch>
</cftry>
</cfif>
<cfcatch>
<cfoutput>Initialization Error - Credit Card Payment Form</cfoutput>
<!--- TODO: this should be e-mailed or logged somewhere --->
<cfdump var="#CFCatch#" label="CFCatch Scope">
<cfif isdefined("arguments")><cfdump var="#arguments#" label="Arguments Scope"></cfif>
<cfif isdefined("attributes")><cfdump var="#attributes#" label="Attributes Scope"></cfif>
<cfif isdefined("CGI")><cfdump var="#CGI#" label="CGI Scope"></cfif>
<cfif isdefined("Request")><cfdump var="#Request#" label="Request Scope"></cfif>
<cfif isdefined("URL")><cfdump var="#URL#" label="URL Scope"></cfif>
<cfif isdefined("Form")><cfdump var="#Form#" label="Form Scope"></cfif>
<cfif isdefined("session")><cfdump var="#Session#" label="Session Scope"></cfif>
<cfabort>
</cfcatch>
</cftry>