Exemple #1
0
 /**
  * Creates and fills a transactionmodel
  *
  * @param array $response
  * @return \Paymill\Models\Response\Transaction
  */
 private function _createTransaction($response)
 {
     $model = new Models\Transaction();
     $model->setId($response['id']);
     $model->setAmount($response['amount']);
     $model->setOriginAmount($response['origin_amount']);
     $model->setStatus($response['status']);
     $model->setDescription($response['description']);
     $model->setLivemode($response['livemode']);
     $model->setRefunds($this->_handleRecursive($response['refunds'], 'refund'));
     $model->setCurrency($response['currency']);
     $model->setCreatedAt($response['created_at']);
     $model->setUpdatedAt($response['updated_at']);
     $model->setResponseCode($response['response_code']);
     $model->setShortId($response['short_id']);
     $model->setInvoices($response['invoices']);
     $model->setPayment($this->_convertResponseToModel($response['payment'], "payment"));
     $model->setClient($this->_convertResponseToModel($response['client'], "client"));
     $model->setPreauthorization($this->_convertResponseToModel($response['preauthorization'], "preauthorization"));
     $model->setFees($response['fees']);
     $model->setAppId($response['app_id']);
     return $model;
 }
 /**
  * Tries to process a payment through Paymill
  *
  * @param PaymillMethod $paymentMethod Payment method
  * @param integer       $amount        Amount
  *
  * @return PaymillManager Self object
  *
  * @throws PaymentAmountsNotMatchException
  * @throws PaymentOrderNotFoundException
  * @throws PaymentException
  */
 public function processPayment(PaymillMethod $paymentMethod, $amount)
 {
     /// first check that amounts are the same
     $paymentBridgeAmount = intval($this->paymentBridge->getAmount());
     /**
      * If both amounts are different, execute Exception
      */
     if ($amount != $paymentBridgeAmount) {
         throw new PaymentAmountsNotMatchException(sprintf('Amounts differ. Requested: [%s] but in PaymentBridge: [%s].', $amount, $paymentBridgeAmount));
     }
     /**
      * At this point, order must be created given a card, and placed in PaymentBridge
      *
      * So, $this->paymentBridge->getOrder() must return an object
      */
     $this->paymentEventDispatcher->notifyPaymentOrderLoad($this->paymentBridge, $paymentMethod);
     /**
      * Order Not found Exception must be thrown just here
      */
     if (!$this->paymentBridge->getOrder()) {
         throw new PaymentOrderNotFoundException();
     }
     /**
      * Order exists right here
      */
     $this->paymentEventDispatcher->notifyPaymentOrderCreated($this->paymentBridge, $paymentMethod);
     /**
      * Validate the order in the module
      * params for paymill interaction
      */
     $extraData = $this->paymentBridge->getExtraData();
     $params = array('amount' => $paymentBridgeAmount, 'currency' => $this->paymentBridge->getCurrency(), 'token' => $paymentMethod->getApiToken(), 'description' => $extraData['order_description']);
     try {
         $transaction = $this->paymillTransactionWrapper->create($params['amount'], $params['currency'], $params['token'], $params['description']);
     } catch (PaymillException $e) {
         /**
          * create 'failed' transaction
          */
         $transaction = new Transaction();
         $transaction->setStatus('failed');
         $transaction->setDescription($e->getCode() . ' ' . $e->getMessage());
     }
     $this->processTransaction($transaction, $paymentMethod);
     return $this;
 }
 /**
  * Creates and fills a transaction model
  *
  * @param array $response
  * @return Transaction
  */
 private function _createTransaction(array $response)
 {
     $model = new Transaction();
     $model->setId($response['id']);
     $model->setAmount($response['amount']);
     $model->setOriginAmount($response['origin_amount']);
     $model->setStatus($response['status']);
     $model->setDescription($response['description']);
     $model->setLivemode($response['livemode']);
     $model->setRefunds($this->_handleRecursive($response['refunds'], 'refund'));
     $model->setCurrency($response['currency']);
     $model->setCreatedAt($response['created_at']);
     $model->setUpdatedAt($response['updated_at']);
     $model->setResponseCode($response['response_code']);
     $model->setShortId($response['short_id']);
     $model->setInvoices($response['invoices']);
     $model->setPayment($this->_convertResponseToModel($response['payment'], "payment"));
     $model->setClient($this->_convertResponseToModel($response['client'], "client"));
     $model->setPreauthorization($this->_convertResponseToModel($response['preauthorization'], "preauthorization"));
     $model->setFees($response['fees']);
     $model->setAppId($response['app_id']);
     if (isset($response[Transaction::RESPONSE_FIELD_SHIPPING_ADDRESS])) {
         $model->setShippingAddress($this->_convertResponseToModel($response[Transaction::RESPONSE_FIELD_SHIPPING_ADDRESS], AbstractAddress::TYPE_SHIPPING));
     }
     if (isset($response[Transaction::RESPONSE_FIELD_BILLING_ADDRESS])) {
         $model->setBillingAddress($this->_convertResponseToModel($response[Transaction::RESPONSE_FIELD_BILLING_ADDRESS], AbstractAddress::TYPE_BILLING));
     }
     if (isset($response[Transaction::RESPONSE_FIELD_ITEMS])) {
         $model->setItems($this->_handleRecursive($response[Transaction::RESPONSE_FIELD_ITEMS], 'item'));
     }
     return $model;
 }