$recipientAddress, 'l' => $mailingList]; $encodedInnerPayload = base64_encode(json_encode($innerPayload)); $innerHash = hash_hmac('sha1', $encodedInnerPayload, $secretAppId); $outerPayload = ['h' => $innerHash, 'p' => $encodedInnerPayload]; return urlencode(base64_encode(json_encode($outerPayload))); } /** * @param string $secretAppId * @param string $uniqueHash * * @return array|bool */ public function validateHash($secretAppId, $uniqueHash) { $decodedOuterPayload = json_decode(base64_decode(urldecode($uniqueHash)), true); $decodedHash = $decodedOuterPayload['h']; $innerPayload = $decodedOuterPayload['p']; $decodedInnerPayload = json_decode(base64_decode($innerPayload), true); $computedInnerHash = hash_hmac('sha1', $innerPayload, $secretAppId); if ($computedInnerHash == $decodedHash) { return ['recipientAddress' => $decodedInnerPayload['r'], 'mailingList' => $decodedInnerPayload['l']]; } return false; } }