function simpleReceiveEnvelopeAndGiveReceipt($envelope, $password)
{
    $message = getMessageFromEnvelope($envelope);
    $messageName = getMessageNameFromMessage($message);
    $authorName = getAuthorNameFromMessage($message);
    $messageHeader = array();
    $messageHeader['messageName'] = $messageName;
    $messageHeader['authorName'] = $authorName;
    $messageBody = getMessageBodyFromMessage($message);
    $signature = getSignatureFromMessage($message);
    $signatureCheckStatus = checkMessageSignature($password, $messageBody['body'], $signature);
    if (!$signatureCheckStatus) {
        $exchangeStatus = 'EXCHANGE_FAILED';
        $exchangeReceipt = createExchangeReceipt($signatureCheckStatus, $exchangeStatus, null, null);
        $messageBody['body'] = writeExchangeReceipt($exchangeReceipt);
        $message = createMessage($messageHeader, $messageBody);
        return putMessageIntoEnvelope($message, $messageHeader);
    }
    $exchangeReceipt = receiveMessageAndGiveReceipt($messageHeader, $messageBody);
    $messageBody['body'] = writeExchangeReceipt($exchangeReceipt);
    $message = createMessage($messageHeader, $messageBody);
    return putMessageIntoEnvelope($message, $messageHeader);
}
function receiveMessageAndGiveReceipt($messageHeader, $messageBody)
{
    // TODO implement here a link with the other components of your system to handle the received message and create the exchange receipt;
    //  this is an example return
    return createExchangeReceipt(null, 'EXCHANGE_OK', null, null);
}
<?php

$version = '1';
$messageName = 'purchaseGift';
$authorName = 'Buddy';
$password = '******';
$envelopeFormat = 'SOAP1.1';
$messageHeader = createMessageHeader($version, $messageName, $authorName, $password, $envelopeFormat);
$body = '<gift><value>30EUR</value></gift>';
$bodyFormat = 'XML';
$bodyArray = null;
$messageBody = createMessageBody($body, $bodyFormat, $bodyArray);
$message = '<ns:webmessage "xmlns:ns="http://localhost/WPS">' . '<header>' . '<messageName>' . $messageName . '</messageName>' . '<callingPartyID>' . $authorName . '</callingPartyID>' . '<callingPartyKey>ABCDEFGHIJKLMNOP</callingPartyKey>' . '</header>' . '<body>' . $body . '</body>' . '</ns:webmessage>';
$envelope = '<?xml version="1.0" encoding="UTF-8"?>' . '<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope">' . '<env:Body>' . $message . '</env:Body>' . '</env:Envelope>';
$signatureCheckStatus = true;
$exchangeStatus = 'EXCHANGE_FAILED';
$exception = '<exception>Server failure</exception>';
$body = null;
$exchangeReceipt = createExchangeReceipt($signatureCheckStatus, $exchangeStatus, $exception, $body);