protected function buildRequestEnvelope( RequestEnvelope $requestEnvelope , AbstractPayPalMessageFactory $factory ) {
		$requestEnvelopeElement = $factory->createMessageElement();
		$requestEnvelopeElement->addChild( $factory->createMessageField( 'errorLanguage' , $factory->createMessagePrimitive( $requestEnvelope->getErrorLanguage() ) ) );
		$requestEnvelopeElement->addChild( $factory->createMessageField( 'detailLevel' , $factory->createMessagePrimitive( $requestEnvelope->getDetailLevel() ) ) );

		return $requestEnvelopeElement;
	}
	/**
	 * Creates the builder instance to build the request message
	 * @param	PaymentDetailsRequest $paymentDetailsRequest
	 * @param	AbstractPayPalMessageFactory $factory
	 */
	public function __construct( PaymentDetailsRequest $paymentDetailsRequest , AbstractPayPalMessageFactory $factory ) {
		parent::__construct( $factory->createMessageElement() );

		$this->buildPaymentDetailsRequest( $paymentDetailsRequest , $factory );
	}
	private function buildSender( SenderIdentifier $sender , AbstractPayPalMessageFactory $factory ) {
		$senderIdentifierElement = $factory->createMessageElement();

		if ( ( $email = $sender->getEmail() ) != null ) {
			$senderIdentifierElement->addChild( $factory->createMessageField( 'email' , $factory->createMessagePrimitive( $email ) ) );
		}

		if ( ( $phone = $sender->getPhone() ) != null ) {
			$senderIdentifierElement->addChild( $factory->createMessageField( 'phone' , $this->buildPhoneNumber( $phone , $factory ) ) );
		}

		if ( ( $useCredentials = $sender->getUseCredentials() ) != null ) {
			$senderIdentifierElement->addChild( $factory->createMessageField( 'useCredentials' , $factory->createMessagePrimitive( $useCredentials == true ? true : false ) ) );
		}

		return $senderIdentifierElement;
	}