@@ -13,19 +13,34 @@ class CIMCreateCardRequest extends CIMAbstractRequest
13
13
14
14
public function getData ()
15
15
{
16
- $ this ->validate ('card ' );
17
-
18
- /** @var CreditCard $card */
19
- $ card = $ this ->getCard ();
20
- $ card ->validate ();
21
16
22
17
$ data = $ this ->getBaseData ();
18
+ $ this ->validateCard ($ data );
23
19
$ this ->addProfileData ($ data );
24
20
$ this ->addTransactionSettings ($ data );
25
21
26
22
return $ data ;
27
23
}
28
24
25
+ /**
26
+ * Validate card or skip if opaque data is available
27
+ *
28
+ * @param \SimpleXMLElement $data
29
+ */
30
+ protected function validateCard (\SimpleXMLElement $ data ){
31
+
32
+ if ($ this ->getOpaqueDataDescriptor () && $ this ->getOpaqueDataValue ()) {
33
+ return ;
34
+ }
35
+
36
+ $ this ->validate ('card ' );
37
+
38
+ /** @var CreditCard $card */
39
+ $ card = $ this ->getCard ();
40
+ $ card ->validate ();
41
+
42
+ }
43
+
29
44
/**
30
45
* Add customer profile data to the specified xml element
31
46
*
@@ -97,12 +112,18 @@ protected function addBillingData(\SimpleXMLElement $data)
97
112
}
98
113
99
114
$ req = $ data ->addChild ('payment ' );
100
- $ req ->creditCard ->cardNumber = $ card ->getNumber ();
101
- $ req ->creditCard ->expirationDate = $ card ->getExpiryDate ('Y-m ' );
102
- if ($ card ->getCvv ()) {
103
- $ req ->creditCard ->cardCode = $ card ->getCvv ();
104
- } else {
105
- $ this ->setValidationMode (self ::VALIDATION_MODE_NONE );
115
+ if ($ this ->getOpaqueDataDescriptor () && $ this ->getOpaqueDataValue ()) {
116
+ //Use opaqueData if available instead of card data
117
+ $ req ->opaqueData ->dataDescriptor = $ this ->getOpaqueDataDescriptor ();
118
+ $ req ->opaqueData ->dataValue = $ this ->getOpaqueDataValue ();
119
+ }else {
120
+ $ req ->creditCard ->cardNumber = $ card ->getNumber ();
121
+ $ req ->creditCard ->expirationDate = $ card ->getExpiryDate ('Y-m ' );
122
+ if ($ card ->getCvv ()) {
123
+ $ req ->creditCard ->cardCode = $ card ->getCvv ();
124
+ } else {
125
+ $ this ->setValidationMode (self ::VALIDATION_MODE_NONE );
126
+ }
106
127
}
107
128
}
108
129
}
0 commit comments