/**
  * Add Message Payment Info
  * @param PaymentInfo $paymentInfoObject
  * @return $this
  * @throws \Exception
  */
 public function addMessagePaymentInfo(PaymentInfo $paymentInfoObject)
 {
     try {
         if (!$paymentInfoObject instanceof PaymentInfo) {
             throw new \Exception('Was not PaymentInfo Object in addMessagePaymentInfo');
         }
     } catch (\Exception $e) {
         $this->writeLog($e->getMessage());
     }
     $paymentInfoObject->resetNumberOfTransactions();
     $paymentInfoObject->resetControlSum();
     $this->paymentInfoObjects[$paymentInfoObject->getSequenceType()] = $paymentInfoObject;
     return $this;
 }
 /**
  * Retrieve paymentInfo model 
  * 
  * @param order $order
  * @param int $orderId
  * @return PaymentInfo
  */
 public static function getPaymentInfoModel(order $order, $orderId = null)
 {
     $paymentInfo = new PaymentInfo();
     $paymentInfo->setAmount(Data::getPaymentAmount($order, $orderId))->setCurrency($order->info['currency'])->setMethod(Data::getRpPaymentMethod($order->info['payment_method']));
     if ($order->info['payment_method'] == 'ratepay_rate') {
         if (is_null($orderId)) {
             $paymentInfo->setDebitType('BANK-TRANSFER')->setInstallmentAmount(Session::getRpSessionEntry('ratepay_rate_rate'))->setInstallmentNumber(Session::getRpSessionEntry('ratepay_rate_number_of_rates'))->setInterestRate(Session::getRpSessionEntry('ratepay_rate_interest_rate'))->setLastInstallmentAmount(Session::getRpSessionEntry('ratepay_rate_last_rate'))->setPaymentFirstDay(Session::getRpSessionEntry('ratepay_payment_firstday'));
         } else {
             $details = Db::getRatepayRateDetails($orderId);
             $paymentInfo->setDebitType('BANK-TRANSFER')->setInstallmentAmount($details['rate'])->setInstallmentNumber($details['number_of_rates'])->setInterestRate($details['interest_amount'])->setLastInstallmentAmount($details['last_rate'])->setPaymentFirstDay($details['payment_firstday']);
         }
     }
     return $paymentInfo;
 }