forked from pmcelhaney/payflowpro-api-for-coldfusion
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathHTTPPayFlowProGateway.cfc
More file actions
81 lines (63 loc) · 2.44 KB
/
HTTPPayFlowProGateway.cfc
File metadata and controls
81 lines (63 loc) · 2.44 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
<!---
Copyright 2010 Patrick McElhaney
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
PayFlowPro Components for ColdFusion
Changes:
9/5/2012 Pawel Dulak: changed "chargeCard" function name to "executeTransaction"
--->
<cfcomponent>
<cffunction name="init" output="no">
<cfargument name="mode">
<cfswitch expression="#arguments.mode#">
<cfcase value="LIVE">
<cfset variables.gatewayURL = "https://payflowpro.verisign.com:443">
</cfcase>
<cfcase value="TEST">
<cfset variables.gatewayURL = "https://pilot-payflowpro.verisign.com:443">
</cfcase>
<cfdefaultcase>
<cfthrow message = "You must specify either LIVE or TEST in the init() method.">
</cfdefaultcase>
</cfswitch>
<cfreturn this>
</cffunction>
<cffunction name = "createTransaction">
<cfreturn createObject("component", "PayFlowProTransaction").init(this)>
</cffunction>
<cffunction name = "executeTransaction">
<cfargument name="params">
<cfargument name="transactionID">
<CFHTTP url="#variables.gatewayURL#" method="post" resolveurl="no" timeout="30">
<CFHTTPPARAM type="header" name="X-VPS-REQUEST-ID" value="#arguments.transactionID#">
<CFHTTPPARAM type="header" name="X-VPS-CLIENT-TIMEOUT" value="30">
<CFHTTPPARAM type="body" value="#encodeURLData(arguments.params)#">
</CFHTTP>
<cfreturn parseURLData(CFHTTP.FileContent)>
</cffunction>
<cffunction name = "encodeURLData" output="no">
<cfargument name="params">
<cfset var key = 0>
<cfset var pairs = arrayNew(1)>
<cfloop collection = "#arguments.params#" item = "key">
<cfset arrayAppend(pairs, "#key#=#params[key]#")>
</cfloop>
<cfreturn arrayToList(pairs, "&")>
</cffunction>
<cffunction name = "parseURLData" output="no">
<cfargument name="params">
<cfset var data = StructNew()>
<cfset var key = 0>
<cfloop list="#params#" index="key" delimiters="&">
<cfset data[listFirst(key,'=')] = urlDecode(listRest(key,"="))>
</cfloop>
<cfreturn data>
</cffunction>
</cfcomponent>