Skip to content

Commit 8ace4bf

Browse files
committed
Fix duplicate window setting
1 parent 4458875 commit 8ace4bf

11 files changed

+34
-33
lines changed

src/AIMGateway.php

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -87,6 +87,16 @@ public function setDeveloperEndpoint($value)
8787
return $this->setParameter('developerEndpoint', $value);
8888
}
8989

90+
public function getDuplicateWindow()
91+
{
92+
return $this->getParameter('duplicateWindow');
93+
}
94+
95+
public function setDuplicateWindow($value)
96+
{
97+
return $this->setParameter('duplicateWindow', $value);
98+
}
99+
90100
/**
91101
* @param array $parameters
92102
* @return AIMAuthorizeRequest

src/Message/AIMAbstractRequest.php

Lines changed: 11 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,7 @@ public function setDuplicateWindow($value)
7272

7373
private function getDuplicateWindow()
7474
{
75-
return $this->getParameter('duplicateWindow'); // Maps x_duplicate_window
75+
return $this->getParameter('duplicateWindow');
7676
}
7777

7878
public function getLiveEndpoint()
@@ -235,24 +235,21 @@ protected function addBillingData(\SimpleXMLElement $data)
235235
return $data;
236236
}
237237

238-
protected function addTestModeSetting(\SimpleXMLElement $data)
238+
protected function addTransactionSettings(\SimpleXMLElement $data)
239239
{
240-
// Test mode setting
241-
$data->transactionRequest->transactionSettings->setting->settingName = 'testRequest';
242-
$data->transactionRequest->transactionSettings->setting->settingValue = $this->getTestMode() ? 'true' : 'false';
240+
$i = 0;
243241

244-
return $data;
245-
}
242+
// The test mode setting indicates whether or not this is a live request or a test request
243+
$data->transactionRequest->transactionSettings->setting[$i]->settingName = 'testRequest';
244+
$data->transactionRequest->transactionSettings->setting[$i]->settingValue = $this->getTestMode() ? 'true' : 'false';
246245

247-
protected function addExtraOptions(\SimpleXMLElement $data)
248-
{
246+
// The duplicate window setting specifies the threshold for AuthorizeNet's duplicate transaction detection logic
249247
if (!is_null($this->getDuplicateWindow())) {
250-
$extraOptions = $data->addChild('extraOptions');
251-
$node = dom_import_simplexml($extraOptions);
252-
$nodeOwner = $node->ownerDocument;
253-
$duplicateWindowStr = sprintf("x_duplicate_window=%s", $this->getDuplicateWindow());
254-
$node->appendChild($nodeOwner->createCDATASection($duplicateWindowStr));
248+
$i++;
249+
$data->transactionRequest->transactionSettings->setting[$i]->settingName = 'duplicateWindow';
250+
$data->transactionRequest->transactionSettings->setting[$i]->settingValue = $this->getDuplicateWindow();
255251
}
252+
256253
return $data;
257254
}
258255
}

src/Message/AIMAuthorizeRequest.php

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,8 +19,7 @@ public function getData()
1919
$this->addPayment($data);
2020
$this->addCustomerIP($data);
2121
$this->addBillingData($data);
22-
$this->addTestModeSetting($data);
23-
$this->addExtraOptions($data);
22+
$this->addTransactionSettings($data);
2423

2524
return $data;
2625
}

src/Message/AIMCaptureRequest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ public function getData()
1616
$data = $this->getBaseData();
1717
$data->transactionRequest->amount = $this->getAmount();
1818
$data->transactionRequest->refTransId = $this->getTransactionReference()->getTransId();
19-
$this->addTestModeSetting($data);
19+
$this->addTransactionSettings($data);
2020

2121
return $data;
2222
}

src/Message/AIMRefundRequest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ public function getData()
4444
}
4545
$data->transactionRequest->refTransId = $transactionRef->getTransId();
4646

47-
$this->addTestModeSetting($data);
47+
$this->addTransactionSettings($data);
4848

4949
return $data;
5050
}

src/Message/AIMVoidRequest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ public function getData()
1515

1616
$data = $this->getBaseData();
1717
$data->transactionRequest->refTransId = $this->getTransactionReference()->getTransId();
18-
$this->addTestModeSetting($data);
18+
$this->addTransactionSettings($data);
1919

2020
return $data;
2121
}

src/Message/CIMCreateCardRequest.php

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ public function getData()
2121

2222
$data = $this->getBaseData();
2323
$this->addProfileData($data);
24-
$this->addTestModeSetting($data);
24+
$this->addTransactionSettings($data);
2525

2626
return $data;
2727
}
@@ -143,7 +143,7 @@ protected function addShippingData(\SimpleXMLElement $data)
143143
}
144144
}
145145

146-
protected function addTestModeSetting(\SimpleXMLElement $data)
146+
protected function addTransactionSettings(\SimpleXMLElement $data)
147147
{
148148
$data->validationMode = $this->getValidationMode();
149149
}

src/Message/CIMCreatePaymentProfileRequest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ public function getData()
2222
$data = $this->getBaseData();
2323
$data->customerProfileId = $this->getCustomerProfileId();
2424
$this->addPaymentProfileData($data);
25-
$this->addTestModeSetting($data);
25+
$this->addTransactionSettings($data);
2626

2727
return $data;
2828
}

src/Message/CIMUpdatePaymentProfileRequest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ public function getData()
2222
$data = $this->getBaseData();
2323
$data->customerProfileId = $this->getCustomerProfileId();
2424
$this->addPaymentProfileData($data);
25-
$this->addTestModeSetting($data);
25+
$this->addTransactionSettings($data);
2626

2727
return $data;
2828
}

tests/Message/AIMAuthorizeRequestTest.php

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -47,9 +47,11 @@ public function testGetDataTestMode()
4747
$this->assertEquals('true', $setting->settingValue);
4848
}
4949

50-
public function testShouldReturnExtraOptionsToDisableDuplicateWindowPeriod()
50+
public function testShouldIncludeDuplicateWindowSetting()
5151
{
5252
$data = $this->request->getData();
53-
$this->assertEquals('x_duplicate_window=0', strip_tags($data->extraOptions));
53+
$setting = $data->transactionRequest->transactionSettings->setting[1];
54+
$this->assertEquals('duplicateWindow', $setting->settingName);
55+
$this->assertEquals('0', $setting->settingValue);
5456
}
5557
}

0 commit comments

Comments
 (0)