|
21 | 21 | use Academe\AuthorizeNet\Request\Collections\LineItems;
|
22 | 22 | use Academe\AuthorizeNet\Request\Model\LineItem;
|
23 | 23 | use Academe\AuthorizeNet\Request\Model\CardholderAuthentication;
|
| 24 | +use Academe\AuthorizeNet\Request\Collections\UserFields; |
| 25 | +use Academe\AuthorizeNet\Request\Model\UserField; |
24 | 26 |
|
25 | 27 | use Money\Parser\DecimalMoneyParser;
|
26 | 28 | use Money\Currencies\ISOCurrencies;
|
@@ -252,6 +254,45 @@ public function getData()
|
252 | 254 | 'terminalNumber' => $this->getTerminalNumber(),
|
253 | 255 | ]);
|
254 | 256 |
|
| 257 | + if ($sourceUserFields = $this->getUserFields()) { |
| 258 | + // Can be provided as key/value array, array of name/value pairs |
| 259 | + // or a readymade collection of models. |
| 260 | + |
| 261 | + if ($sourceUserFields instanceof UserFields) { |
| 262 | + // Already a collection; just use it. |
| 263 | + |
| 264 | + $userFields = $sourceUserFields; |
| 265 | + } else { |
| 266 | + $userFields = new UserFields(); |
| 267 | + |
| 268 | + if (is_array($sourceUserFields)) { |
| 269 | + foreach ($sourceUserFields as $key => $value) { |
| 270 | + if (is_string($key) && is_string($value)) { |
| 271 | + // key/value pairs: 'key' => 'value' |
| 272 | + |
| 273 | + $userFields->push(new UserField($key, $value)); |
| 274 | + } |
| 275 | + |
| 276 | + if (is_array($value) && count($value) === 2) { |
| 277 | + // name/value pairs: ['name' => 'the name', 'value' => 'the value'] |
| 278 | + |
| 279 | + $userFields->push(new UserField($value['name'], $value['value'])); |
| 280 | + } |
| 281 | + |
| 282 | + if ($value instanceof UserField) { |
| 283 | + // An array of UserField objects was supplied. |
| 284 | + |
| 285 | + $userFields->push($value); |
| 286 | + } |
| 287 | + } |
| 288 | + } |
| 289 | + } |
| 290 | + |
| 291 | + if ($userFields->count()) { |
| 292 | + $transaction = $transaction->withUserFields($userFields); |
| 293 | + } |
| 294 | + } |
| 295 | + |
255 | 296 | return $transaction;
|
256 | 297 | }
|
257 | 298 |
|
@@ -385,4 +426,14 @@ public function getToken()
|
385 | 426 | . $opaqueDataValue;
|
386 | 427 | }
|
387 | 428 | }
|
| 429 | + |
| 430 | + public function setUserFields($value) |
| 431 | + { |
| 432 | + return $this->setParameter('userFields', $value); |
| 433 | + } |
| 434 | + |
| 435 | + public function getUserFields() |
| 436 | + { |
| 437 | + return $this->getParameter('userFields'); |
| 438 | + } |
388 | 439 | }
|
0 commit comments