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);