18
18
*/
19
19
class AuthorizeRequest extends AbstractRequest
20
20
{
21
+ const MODE_AUTH = 'ccAuthorize ' ;
22
+ const MODE_STORED_DATA_AUTH = 'ccStoredDataAuthorize ' ;
23
+
21
24
/**
22
25
* Method
23
26
*
24
27
* @var string
25
28
*/
26
- protected $ txnMode = ' ccAuthorize ' ;
29
+ protected $ txnMode ;
27
30
28
31
/**
29
32
* Get data
@@ -32,8 +35,14 @@ class AuthorizeRequest extends AbstractRequest
32
35
*/
33
36
public function getData ()
34
37
{
35
- $ this ->validate ('amount ' , 'card ' );
36
- $ this ->getCard ()->validate ();
38
+ if ($ this ->getTransactionReference ()) {
39
+ $ this ->txnMode = $ this ->getStoredDataMode ();
40
+ $ this ->validate ('amount ' );
41
+ } else {
42
+ $ this ->txnMode = $ this ->getBasicMode ();
43
+ $ this ->validate ('amount ' , 'card ' );
44
+ $ this ->getCard ()->validate ();
45
+ }
37
46
38
47
$ data = $ this ->getBaseData ();
39
48
$ data ['txnRequest ' ] = $ this ->getXmlString ();
@@ -42,20 +51,23 @@ public function getData()
42
51
}
43
52
44
53
/**
45
- * Get XML string (without header)
54
+ * Get XML string
46
55
*
47
56
* @return string
48
57
*/
49
58
protected function getXmlString ()
50
59
{
51
- /** @var $card CreditCard */
52
- $ card = $ this ->getCard ();
53
-
54
- $ xml = '<?xml version="1.0" encoding="UTF-8"?>
55
- <ccAuthRequestV1
56
- xmlns="http://www.optimalpayments.com/creditcard/xmlschema/v1"
57
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
58
- xsi:schemaLocation="http://www.optimalpayments.com/creditcard/xmlschema/v1" /> ' ;
60
+ if ($ this ->getTransactionReference ()) {
61
+ $ xmlRoot = 'ccStoredDataRequestV1 ' ;
62
+ } else {
63
+ $ xmlRoot = 'ccAuthRequestV1 ' ;
64
+ }
65
+
66
+ $ xml = "<?xml version= \"1.0 \" encoding= \"UTF-8 \"?>
67
+ < {$ xmlRoot }
68
+ xmlns= \"http://www.optimalpayments.com/creditcard/xmlschema/v1 \"
69
+ xmlns:xsi= \"http://www.w3.org/2001/XMLSchema-instance \"
70
+ xsi:schemaLocation= \"http://www.optimalpayments.com/creditcard/xmlschema/v1 \" /> " ;
59
71
60
72
$ sxml = new \SimpleXMLElement ($ xml );
61
73
@@ -66,47 +78,76 @@ protected function getXmlString()
66
78
$ merchantAccount ->addChild ('storePwd ' , $ this ->getStorePassword ());
67
79
68
80
$ sxml ->addChild ('merchantRefNum ' , $ this ->getCustomerId () ?: 'ref-num - ' . time ());
69
- $ sxml ->addChild ('amount ' , $ this ->getAmountDecimal ());
70
-
71
- $ cardChild = $ sxml ->addChild ('card ' );
72
-
73
- $ cardChild ->addChild ('cardNum ' , $ card ->getNumber ());
74
-
75
- $ cardExpiry = $ cardChild ->addChild ('cardExpiry ' );
76
- $ cardExpiry ->addChild ('month ' , $ card ->getExpiryDate ('m ' ));
77
- $ cardExpiry ->addChild ('year ' , $ card ->getExpiryDate ('Y ' ));
78
-
79
- $ cardChild ->addChild ('cardType ' , 'VI ' );
80
- $ cardChild ->addChild ('cvdIndicator ' , '0 ' );
81
- $ cardChild ->addChild ('cvd ' , $ card ->getCvv ());
82
-
83
- $ billingDetails = $ sxml ->addChild ('billingDetails ' );
84
-
85
- $ billingDetails ->addChild ('cardPayMethod ' , 'WEB ' );
86
- $ billingDetails ->addChild ('firstName ' , $ card ->getBillingFirstName ());
87
- $ billingDetails ->addChild ('lastName ' , $ card ->getBillingLastName ());
88
- $ billingDetails ->addChild ('street ' , $ card ->getBillingAddress1 ());
89
- $ billingDetails ->addChild ('street2 ' , $ card ->getBillingAddress2 ());
90
- $ billingDetails ->addChild ('city ' , $ card ->getBillingCity ());
91
- $ billingDetails ->addChild ('state ' , $ card ->getBillingState ());
92
- $ billingDetails ->addChild ('country ' , $ card ->getBillingCountry ());
93
- $ billingDetails ->addChild ('zip ' , $ card ->getBillingPostcode ());
94
- $ billingDetails ->addChild ('phone ' , $ card ->getBillingPhone ());
95
- $ billingDetails ->addChild ('email ' , $ card ->getEmail ());
96
-
97
- $ shippingDetails = $ sxml ->addChild ('shippingDetails ' );
98
-
99
- $ shippingDetails ->addChild ('firstName ' , $ card ->getShippingFirstName ());
100
- $ shippingDetails ->addChild ('lastName ' , $ card ->getShippingLastName ());
101
- $ shippingDetails ->addChild ('street ' , $ card ->getShippingAddress1 ());
102
- $ shippingDetails ->addChild ('street2 ' , $ card ->getShippingAddress2 ());
103
- $ shippingDetails ->addChild ('city ' , $ card ->getShippingCity ());
104
- $ shippingDetails ->addChild ('state ' , $ card ->getShippingState ());
105
- $ shippingDetails ->addChild ('country ' , $ card ->getShippingCountry ());
106
- $ shippingDetails ->addChild ('zip ' , $ card ->getShippingPostcode ());
107
- $ shippingDetails ->addChild ('phone ' , $ card ->getShippingPhone ());
108
- $ shippingDetails ->addChild ('email ' , $ card ->getEmail ());
81
+
82
+ if ($ this ->getTransactionReference ()) {
83
+ $ sxml ->addChild ('confirmationNumber ' , $ this ->getTransactionReference ());
84
+ $ sxml ->addChild ('amount ' , $ this ->getAmountDecimal ());
85
+ } else {
86
+ /** @var $card CreditCard */
87
+ $ card = $ this ->getCard ();
88
+
89
+ $ sxml ->addChild ('amount ' , $ this ->getAmountDecimal ());
90
+
91
+ $ cardChild = $ sxml ->addChild ('card ' );
92
+
93
+ $ cardChild ->addChild ('cardNum ' , $ card ->getNumber ());
94
+
95
+ $ cardExpiry = $ cardChild ->addChild ('cardExpiry ' );
96
+ $ cardExpiry ->addChild ('month ' , $ card ->getExpiryDate ('m ' ));
97
+ $ cardExpiry ->addChild ('year ' , $ card ->getExpiryDate ('Y ' ));
98
+
99
+ $ cardChild ->addChild ('cardType ' , $ this ->translateCardType ($ card ->getBrand ()));
100
+ $ cardChild ->addChild ('cvdIndicator ' , '1 ' );
101
+ $ cardChild ->addChild ('cvd ' , $ card ->getCvv ());
102
+
103
+ $ billingDetails = $ sxml ->addChild ('billingDetails ' );
104
+
105
+ $ billingDetails ->addChild ('cardPayMethod ' , 'WEB ' );
106
+ $ billingDetails ->addChild ('firstName ' , $ card ->getBillingFirstName ());
107
+ $ billingDetails ->addChild ('lastName ' , $ card ->getBillingLastName ());
108
+ $ billingDetails ->addChild ('street ' , $ card ->getBillingAddress1 ());
109
+ $ billingDetails ->addChild ('street2 ' , $ card ->getBillingAddress2 ());
110
+ $ billingDetails ->addChild ('city ' , $ card ->getBillingCity ());
111
+ $ billingDetails ->addChild ('state ' , $ card ->getBillingState ());
112
+ $ billingDetails ->addChild ('country ' , $ card ->getBillingCountry ());
113
+ $ billingDetails ->addChild ('zip ' , $ card ->getBillingPostcode ());
114
+ $ billingDetails ->addChild ('phone ' , $ card ->getBillingPhone ());
115
+ $ billingDetails ->addChild ('email ' , $ card ->getEmail ());
116
+
117
+ $ shippingDetails = $ sxml ->addChild ('shippingDetails ' );
118
+
119
+ $ shippingDetails ->addChild ('firstName ' , $ card ->getShippingFirstName ());
120
+ $ shippingDetails ->addChild ('lastName ' , $ card ->getShippingLastName ());
121
+ $ shippingDetails ->addChild ('street ' , $ card ->getShippingAddress1 ());
122
+ $ shippingDetails ->addChild ('street2 ' , $ card ->getShippingAddress2 ());
123
+ $ shippingDetails ->addChild ('city ' , $ card ->getShippingCity ());
124
+ $ shippingDetails ->addChild ('state ' , $ card ->getShippingState ());
125
+ $ shippingDetails ->addChild ('country ' , $ card ->getShippingCountry ());
126
+ $ shippingDetails ->addChild ('zip ' , $ card ->getShippingPostcode ());
127
+ $ shippingDetails ->addChild ('phone ' , $ card ->getShippingPhone ());
128
+ $ shippingDetails ->addChild ('email ' , $ card ->getEmail ());
129
+ }
109
130
110
131
return $ sxml ->asXML ();
111
132
}
133
+
134
+ /**
135
+ * Get Stored Data Mode
136
+ *
137
+ * @return string
138
+ */
139
+ protected function getStoredDataMode ()
140
+ {
141
+ return self ::MODE_STORED_DATA_AUTH ;
142
+ }
143
+
144
+ /**
145
+ * Get Stored Data Mode
146
+ *
147
+ * @return string
148
+ */
149
+ protected function getBasicMode ()
150
+ {
151
+ return self ::MODE_AUTH ;
152
+ }
112
153
}
0 commit comments