Skip to content

Commit de8d969

Browse files
authored
Merge pull request #71 from afterpay/feature/more-dm-data-to-checkout-EIT-3646
Prevent cookie props from overwriting existing query params.
2 parents dd139a5 + f8d3249 commit de8d969

File tree

1 file changed

+6
-2
lines changed

1 file changed

+6
-2
lines changed

src/HTTP/Response/CreateCheckout.php

+6-2
Original file line numberDiff line numberDiff line change
@@ -57,14 +57,18 @@ public function afterReceive()
5757
$cookieObj = json_decode($decodedCookie, false);
5858
$urlChanged = false;
5959

60-
if (isset($cookieObj->deviceId) && preg_match('/^[0-9a-z-]*$/i', $cookieObj->deviceId)) {
60+
$query_str = parse_url($bodyObj->redirectCheckoutUrl, PHP_URL_QUERY);
61+
$query_arr = array();
62+
parse_str($query_str, $query_arr);
63+
64+
if (isset($cookieObj->deviceId) && !array_key_exists('device_id', $query_arr) && preg_match('/^[0-9a-z-]*$/i', $cookieObj->deviceId)) {
6165
$bodyObj->redirectCheckoutUrl .= "&device_id={$cookieObj->deviceId}";
6266
$urlChanged = true;
6367
}
6468

6569
if (isset($cookieObj->checkout) && is_object($cookieObj->checkout)) {
6670
foreach ($cookieObj->checkout as $prop => $val) {
67-
if (preg_match('/^[0-9a-z]+$/i', $prop) && preg_match('/^[0-9a-z-]*$/i', $val)) {
71+
if (!array_key_exists($prop, $query_arr) && preg_match('/^[0-9a-z]+$/i', $prop) && preg_match('/^[0-9a-z-]*$/i', $val)) {
6872
$bodyObj->redirectCheckoutUrl .= "&{$prop}={$val}";
6973
$urlChanged = true;
7074
}

0 commit comments

Comments
 (0)