Skip to content

Commit b72eae9

Browse files
authored
Merge pull request #15 from academe/issue13
Issue13 support user fields
2 parents 593896c + 31d03dc commit b72eae9

File tree

1 file changed

+51
-0
lines changed

1 file changed

+51
-0
lines changed

Diff for: src/Message/AuthorizeRequest.php

+51
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,8 @@
2121
use Academe\AuthorizeNet\Request\Collections\LineItems;
2222
use Academe\AuthorizeNet\Request\Model\LineItem;
2323
use Academe\AuthorizeNet\Request\Model\CardholderAuthentication;
24+
use Academe\AuthorizeNet\Request\Collections\UserFields;
25+
use Academe\AuthorizeNet\Request\Model\UserField;
2426

2527
use Money\Parser\DecimalMoneyParser;
2628
use Money\Currencies\ISOCurrencies;
@@ -252,6 +254,45 @@ public function getData()
252254
'terminalNumber' => $this->getTerminalNumber(),
253255
]);
254256

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+
255296
return $transaction;
256297
}
257298

@@ -385,4 +426,14 @@ public function getToken()
385426
. $opaqueDataValue;
386427
}
387428
}
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+
}
388439
}

0 commit comments

Comments
 (0)