Skip to content

Commit 6e9650e

Browse files
authored
Merge pull request #249 from maxmind/greg/eng-4050
Add tracking_token to Device request object
2 parents 3accefb + 50dd6bc commit 6e9650e

6 files changed

Lines changed: 31 additions & 23 deletions

File tree

CHANGELOG.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,14 @@
11
CHANGELOG
22
=========
33

4+
3.7.0
5+
------------------
6+
7+
* Added `tracking_token` to the `/device` request object. This is the
8+
token generated by the
9+
[Device Tracking Add-on](https://dev.maxmind.com/minfraud/track-devices)
10+
for explicit device linking.
11+
412
3.6.0 (2026-01-20)
513
------------------
614

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,7 @@ $request = $mf->withDevice(
156156
ipAddress: '152.216.7.110',
157157
sessionAge: 3600.5,
158158
sessionId: 'foobar',
159+
trackingToken: 'tst_abc123',
159160
userAgent: 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.89 Safari/537.36',
160161
acceptLanguage: 'en-US,en;q=0.8'
161162
)->withEvent(

src/MinFraud.php

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -190,6 +190,9 @@ public function with(array $values): self
190190
* time since the start of the first visit.
191191
* @param string|null $sessionId An ID that uniquely identifies a visitor's
192192
* session on the site
193+
* @param string|null $trackingToken The tracking token generated by the
194+
* Device Tracking Add-on for explicit
195+
* device linking
193196
*
194197
* @return MinFraud A new immutable MinFraud object. This object is a clone
195198
* of the original with additional data.
@@ -203,6 +206,7 @@ public function withDevice(
203206
?string $ipAddress = null,
204207
?float $sessionAge = null,
205208
?string $sessionId = null,
209+
?string $trackingToken = null,
206210
?string $userAgent = null,
207211
): self {
208212
if (\count($values) !== 0) {
@@ -228,6 +232,7 @@ public function withDevice(
228232
$sessionId = (string) $v;
229233
}
230234

235+
$trackingToken = $this->remove($values, 'tracking_token');
231236
$userAgent = $this->remove($values, 'user_agent');
232237

233238
$this->verifyEmpty($values);
@@ -261,6 +266,10 @@ public function withDevice(
261266
$values['session_id'] = $sessionId;
262267
}
263268

269+
if ($trackingToken !== null) {
270+
$values['tracking_token'] = $trackingToken;
271+
}
272+
264273
if ($userAgent !== null) {
265274
$values['user_agent'] = $userAgent;
266275
}

tests/MaxMind/Test/MinFraud/ReportTransaction/ReportTransactionTest.php

Lines changed: 11 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -18,26 +18,18 @@ class ReportTransactionTest extends ServiceClientTester
1818
{
1919
public function testMinimalRequest(): void
2020
{
21-
$this->assertEmpty(
22-
// @phpstan-ignore-next-line
23-
$this->createReportTransactionRequest(
24-
Data::minimalRequest(),
25-
1
26-
)->report(Data::minimalRequest()),
27-
'response for minimal request'
28-
);
21+
$this->createReportTransactionRequest(
22+
Data::minimalRequest(),
23+
1
24+
)->report(Data::minimalRequest());
2925
}
3026

3127
public function testFullRequest(): void
3228
{
3329
$req = Data::fullRequest();
34-
$this->assertEmpty(
35-
// @phpstan-ignore-next-line
36-
$this->createReportTransactionRequest(
37-
$req
38-
)->report($req),
39-
'response for full request'
40-
);
30+
$this->createReportTransactionRequest(
31+
$req
32+
)->report($req);
4133
}
4234

4335
public function testRequestsWithNulls(): void
@@ -52,14 +44,10 @@ public function testRequestsWithNulls(): void
5244
'transaction_id' => null,
5345
]
5446
);
55-
$this->assertEmpty(
56-
// @phpstan-ignore-next-line
57-
$this->createReportTransactionRequest(
58-
Data::minimalRequest(),
59-
1
60-
)->report($req),
61-
'response from request including nulls'
62-
);
47+
$this->createReportTransactionRequest(
48+
Data::minimalRequest(),
49+
1
50+
)->report($req);
6351
}
6452

6553
public function testRequiredFields(): void

tests/MaxMind/Test/MinFraudTest.php

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,6 +129,7 @@ public function testFullInsightsRequestUsingNamedArgs(string $class, string $ser
129129
ipAddress: '152.216.7.110',
130130
sessionAge: 3600.5,
131131
sessionId: 'foobar',
132+
trackingToken: 'tst_abc123',
132133
userAgent: 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.89 Safari/537.36',
133134
)
134135
->withEmail(

tests/data/minfraud/full-request.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -93,6 +93,7 @@
9393
"ip_address": "152.216.7.110",
9494
"session_age": 3600.5,
9595
"session_id": "foobar",
96+
"tracking_token": "tst_abc123",
9697
"user_agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/41.0.2272.89 Safari/537.36",
9798
"accept_language": "en-US,en;q=0.8"
9899
}

0 commit comments

Comments
 (0)