// Get webservice request object
$inputJson = file_get_contents('php://input');
$input = json_decode($inputJson, TRUE);
$requestObject = $utils->getWebserviceRequestObject($input);
//Get linking id the merchant loyalty program account identification.
$linkId = is_object($requestObject) ? $requestObject->getParams()->getLinkingId() : NULL;
// Get api version from request object.
$apiVersion = is_object($requestObject) ? $requestObject->getApiVersion() : '1.0';
// Create loyalty object based on linking id.
$loyaltyObjectId = $linkId != NULL ? $linkId : LOYALTY_OBJECT_ID;
$loyaltyObject = Loyalty::generateLoyaltyObject(ISSUER_ID, LOYALTY_CLASS_ID, $loyaltyObjectId);
$firstName = $requestObject->getParams()->getWalletUser()->getFirstName();
$returnCode = strtoupper($firstName);
if (is_object($loyaltyObject)) {
    // Handle signup and linking.
    $webResponse = new WebserviceResponse($returnCode);
    if (strpos($webResponse->getStatus(), ResponseCode::SUCCESS) !== false) {
        // Generate Web Service Response Body.
        $responseBody = $utils->generateWebserviceResponse($loyaltyObject, $webResponse, $apiVersion);
    } else {
        $errorAction = $linkId != NULL ? ResponseCode::ERROR_INVALID_LINKING_ID : ResponseCode::ERROR_ACCOUNT_ALREADY_LINKED;
        // For rejected sign-up/linking.
        $webResponse = new WebserviceResponse($errorAction);
        $invalidWalletUserFields = array('zipcode', 'phone');
        $webResponse->setInvalidWalletUserFields($invalidWalletUserFields);
        // Generate Web Service Response Body.
        $responseBody = $utils->generateWebserviceResponse('', $webResponse, $apiVersion);
    }
}
// Create the response JWT.
echo $jwt = $utils->makeSignedJwt($responseBody, $cred);