ext/bestitamazonpay4oxid_order.php
public function render()
    {
        $sTemplate = parent::render();
        $oPayment = $this->getPayment();
        $oConfig = $this->_getContainer()->getConfig();

        //payment is set and not oxempty if amazon selected?
        if ($oPayment !== false) {
            $sPaymentId = (string)$this->getPayment()->getId();
            $sAmazonOrderReferenceId = (string)$this->_getContainer()
                ->getSession()->getVariable('amazonOrderReferenceId');

            if ($sAmazonOrderReferenceId !== '') {
                if ($sPaymentId === 'oxempty') {
                    $this->_setErrorAndRedirect(
                        'BESTITAMAZONPAY_NO_PAYMENTS_FOR_SHIPPING_ADDRESS',
                        $oConfig->getShopSecureHomeUrl().'cl=user'
                    );

                    return $sTemplate;
                } elseif ($sPaymentId === 'bestitamazon'
                    && (string)$oConfig->getRequestParameter('fnc') !== 'execute'
                    && (string)$oConfig->getRequestParameter('action') !== 'changePayment'
                ) {
                    //Send Order reference details to Amazon if payment id is bestitamazon and amazonreferenceid exists
                    //Send SetOrderReferenceDetails request
                    $oData = $this->_getContainer()->getClient()->setOrderReferenceDetails($this->getBasket());
                    $oReferenceDetails = isset($oData->SetOrderReferenceDetailsResult->OrderReferenceDetails)
                        ? $oData->SetOrderReferenceDetailsResult->OrderReferenceDetails : null;

                    //If payment method is not valid to choose
                    if ($oReferenceDetails !== null
                        && (string)$oReferenceDetails->Constraints->Constraint->ConstraintID === 'PaymentMethodNotAllowed'
                    ) {
                        $this->_setErrorAndRedirect(
                            'BESTITAMAZONPAY_CHANGE_PAYMENT',
                            $oConfig->getShopSecureHomeUrl().'cl=payment'
                        );
                        return $sTemplate;
                    }

                    //If there's some other unexpected error
                    if ($oReferenceDetails === null
                        || (string)$oReferenceDetails->OrderReferenceStatus->State !== 'Draft'
                    ) {
                        $sAdditionalParameters = '';

                        // check if there is any information about an error
                        if ($oData->Error->Code) {
                            $sAdditionalParameters = '&bestitAmazonPay4OxidErrorCode='.$oData->Error->Code
                                .'&error='.$oData->Error->Message;
                        }

                        $this->_getContainer()->getUtils()->redirect(
                            $oConfig->getShopSecureHomeUrl().'cl=user&fnc=cleanAmazonPay'.$sAdditionalParameters,
                            false
                        );
                        return $sTemplate;
                    }
                }
            } elseif ($sPaymentId === 'bestitamazon') {
                // If selected payment was bestitamazon but there's no amazonreferenceid,
                // redirect back to second step and show message
                $this->_setErrorAndRedirect(
                    'BESTITAMAZONPAY_CHANGE_PAYMENT',
                    $oConfig->getShopSecureHomeUrl().'cl=basket'
                );
            }
        }

        $this->setBasketHash();

        return $sTemplate;
    }
public function render()
    {
        $sTemplate = parent::render();
        $oPayment = $this->getPayment();
        $oConfig = $this->_getContainer()->getConfig();

        //payment is set and not oxempty if amazon selected?
        if ($oPayment !== false) {
            $sPaymentId = (string)$this->getPayment()->getId();
            $sAmazonOrderReferenceId = (string)$this->_getContainer()
                ->getSession()->getVariable('amazonOrderReferenceId');

            if ($sAmazonOrderReferenceId !== '') {
                if ($sPaymentId === 'oxempty') {
                    $this->_setErrorAndRedirect(
                        'BESTITAMAZONPAY_NO_PAYMENTS_FOR_SHIPPING_ADDRESS',
                        $oConfig->getShopSecureHomeUrl().'cl=user'
                    );

                    return $sTemplate;
                } elseif ($sPaymentId === 'bestitamazon'
                    && (string)$oConfig->getRequestParameter('fnc') !== 'execute'
                    && (string)$oConfig->getRequestParameter('action') !== 'changePayment'
                ) {
                    //Send Order reference details to Amazon if payment id is bestitamazon and amazonreferenceid exists
                    //Send SetOrderReferenceDetails request
                    $oData = $this->_getContainer()->getClient()->setOrderReferenceDetails($this->getBasket());
                    $oReferenceDetails = isset($oData->SetOrderReferenceDetailsResult->OrderReferenceDetails)
                        ? $oData->SetOrderReferenceDetailsResult->OrderReferenceDetails : null;

                    //If payment method is not valid to choose
                    if ($oReferenceDetails !== null
                        && (string)$oReferenceDetails->Constraints->Constraint->ConstraintID === 'PaymentMethodNotAllowed'
                    ) {
                        $this->_setErrorAndRedirect(
                            'BESTITAMAZONPAY_CHANGE_PAYMENT',
                            $oConfig->getShopSecureHomeUrl().'cl=payment'
                        );
                        return $sTemplate;
                    }

                    //If there's some other unexpected error
                    if ($oReferenceDetails === null
                        || (string)$oReferenceDetails->OrderReferenceStatus->State !== 'Draft'
                    ) {
                        $sAdditionalParameters = '';

                        // check if there is any information about an error
                        if ($oData->Error->Code) {
                            $sAdditionalParameters = '&bestitAmazonPay4OxidErrorCode='.$oData->Error->Code
                                .'&error='.$oData->Error->Message;
                        }

                        $this->_getContainer()->getUtils()->redirect(
                            $oConfig->getShopSecureHomeUrl().'cl=user&fnc=cleanAmazonPay'.$sAdditionalParameters,
                            false
                        );
                        return $sTemplate;
                    }
                }
            } elseif ($sPaymentId === 'bestitamazon') {
                // If selected payment was bestitamazon but there's no amazonreferenceid,
                // redirect back to second step and show message
                $this->_setErrorAndRedirect(
                    'BESTITAMAZONPAY_CHANGE_PAYMENT',
                    $oConfig->getShopSecureHomeUrl().'cl=basket'
                );
            }
        }

        $this->setBasketHash();

        return $sTemplate;
    }
public function render ( ) { $ sTemplate = parent :: render ( ) ; $ oPayment = $ this -> getPayment ( ) ; $ oConfig = $ this -> _getContainer ( ) -> getConfig ( ) ; //payment is set and not oxempty if amazon selected? if ( $ oPayment !== false ) { $ sPaymentId = ( string ) $ this -> getPayment ( ) -> getId ( ) ; $ sAmazonOrderReferenceId = ( string ) $ this -> _getContainer ( ) -> getSession ( ) -> getVariable ( 'amazonOrderReferenceId' ) ; if ( $ sAmazonOrderReferenceId !== '' ) { if ( $ sPaymentId === 'oxempty' ) { $ this -> _setErrorAndRedirect ( 'BESTITAMAZONPAY_NO_PAYMENTS_FOR_SHIPPING_ADDRESS' , $ oConfig -> getShopSecureHomeUrl ( ) . 'cl=user' ) ; return $ sTemplate ; } elseif ( $ sPaymentId === 'bestitamazon' && ( string ) $ oConfig -> getRequestParameter ( 'fnc' ) !== 'execute' && ( string ) $ oConfig -> getRequestParameter ( 'action' ) !== 'changePayment' ) { //Send Order reference details to Amazon if payment id is bestitamazon and amazonreferenceid exists //Send SetOrderReferenceDetails request $ oData = $ this -> _getContainer ( ) -> getClient ( ) -> setOrderReferenceDetails ( $ this -> getBasket ( ) ) ; $ oReferenceDetails = isset ( $ oData -> SetOrderReferenceDetailsResult -> OrderReferenceDetails ) ? $ oData -> SetOrderReferenceDetailsResult -> OrderReferenceDetails : null ; //If payment method is not valid to choose if ( $ oReferenceDetails !== null && ( string ) $ oReferenceDetails -> Constraints -> Constraint -> ConstraintID === 'PaymentMethodNotAllowed' ) { $ this -> _setErrorAndRedirect ( 'BESTITAMAZONPAY_CHANGE_PAYMENT' , $ oConfig -> getShopSecureHomeUrl ( ) . 'cl=payment' ) ; return $ sTemplate ; } //If there's some other unexpected error if ( $ oReferenceDetails === null || ( string ) $ oReferenceDetails -> OrderReferenceStatus -> State !== 'Draft' ) { $ sAdditionalParameters = '' ; // check if there is any information about an error if ( $ oData -> Error -> Code ) { $ sAdditionalParameters = '&bestitAmazonPay4OxidErrorCode=' . $ oData -> Error -> Code . '&error=' . $ oData -> Error -> Message ; } $ this -> _getContainer ( ) -> getUtils ( ) -> redirect ( $ oConfig -> getShopSecureHomeUrl ( ) . 'cl=user&fnc=cleanAmazonPay' . $ sAdditionalParameters , false ) ; return $ sTemplate ; } } } elseif ( $ sPaymentId === 'bestitamazon' ) { // If selected payment was bestitamazon but there's no amazonreferenceid, // redirect back to second step and show message $ this -> _setErrorAndRedirect ( 'BESTITAMAZONPAY_CHANGE_PAYMENT' , $ oConfig -> getShopSecureHomeUrl ( ) . 'cl=basket' ) ; } } $ this -> setBasketHash ( ) ; return $ sTemplate ; }
The main render function with additional payment checks.

@return mixed

@throws Exception
@throws oxSystemComponentException
The main render function with additional payment checks .