/**
  * Check and set param for payment
  *
  * @param AuthorizenetMethod $paymentMethod Payment method
  *
  * @return AuthorizenetManager self Object
  *
  * @throws PaymentAmountsNotMatchException
  * @throws PaymentOrderNotFoundException
  */
 private function prepareData(AuthorizenetMethod $paymentMethod)
 {
     $cartAmount = (double) number_format($this->paymentBridge->getAmount() / 100, 2, '.', '');
     /**
      * At this point, order must be created given a cart, 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 authorizenet interaction
      */
     $extraData = $this->paymentBridge->getExtraData();
     $postValues = array("x_login" => $this->loginId, "x_tran_key" => $this->transactionKey, "x_version" => "3.1", "x_delim_data" => "TRUE", "x_delim_char" => "|", "x_relay_response" => "FALSE", "x_type" => "AUTH_CAPTURE", "x_method" => "CC", "x_card_num" => $paymentMethod->getCreditCartNumber(), "x_exp_date" => $paymentMethod->getCreditCartExpirationMonth() . $paymentMethod->getCreditCartExpirationYear(), "x_amount" => $cartAmount, "x_description" => $extraData['order_description']);
     $this->chargeParams = $this->convertPostValues($postValues);
     return $this;
 }
Example #2
0
 /**
  * Check and set param for payment.
  *
  * @param StripeMethod $paymentMethod Payment method
  * @param float        $amount        Amount
  *
  * @return array Charge params
  *
  * @throws PaymentAmountsNotMatchException
  * @throws PaymentOrderNotFoundException
  */
 private function prepareData(StripeMethod $paymentMethod, $amount)
 {
     /// first check that amounts are the same
     $cartAmount = intval($this->paymentBridge->getAmount());
     /**
      * If both amounts are different, execute Exception.
      */
     if (abs($amount - $cartAmount) > 1.0E-5) {
         throw new PaymentAmountsNotMatchException();
     }
     /**
      * At this point, order must be created given a cart, 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 stripe interaction.
      */
     $cardParams = ['number' => $paymentMethod->getCreditCardNumber(), 'exp_month' => $paymentMethod->getCreditCardExpirationMonth(), 'exp_year' => $paymentMethod->getCreditCardExpirationYear()];
     return ['card' => $cardParams, 'amount' => $cartAmount, 'currency' => strtolower($this->paymentBridge->getCurrency())];
 }
 /**
  * Tries to process a payment through Pagosonline
  *
  * @param PagosonlineMethod $paymentMethod Payment method
  * @param float             $amount        Amount
  *
  * @return PagosonlineManager Self object
  *
  * @throws PaymentAmountsNotMatchException
  * @throws PaymentOrderNotFoundException
  * @throws PaymentException
  */
 public function processPayment(PagosonlineMethod $paymentMethod, $amount)
 {
     /// first check that amounts are the same
     $paymentBridgeAmount = (double) $this->paymentBridge->getAmount();
     /**
      * If both amounts are different, execute Exception
      */
     if (abs($amount - $paymentBridgeAmount) > 1.0E-5) {
         throw new PaymentAmountsNotMatchException();
     }
     /**
      * At this point, order must be created given a cart, 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();
     }
     $this->paymentEventDispatcher->notifyPaymentOrderCreated($this->paymentBridge, $paymentMethod);
     $extraData = $this->paymentBridge->getExtraData();
     $object_ws = new \stdClass();
     $object_ws->cuentaId = $this->accountId;
     $object_ws->referencia = $this->paymentBridge->getOrderId() . '#' . date('Ymdhis');
     $object_ws->descripcion = $this->paymentBridge->getOrderDescription();
     $object_ws->valor = $this->paymentBridge->getAmount();
     $object_ws->iva = $extraData['vat'];
     $object_ws->baseDevolucionIva = $extraData['refund_vat'];
     $object_ws->isoMoneda4217 = $this->paymentBridge->getCurrency();
     $object_ws->numeroCuotas = $paymentMethod->getCardQuota();
     $object_ws->nombreComprador = $extraData['customer_firstname'] . $extraData['customer_lastname'];
     $object_ws->emailComprador = $extraData['customer_email'];
     $object_ws->franquicia = $paymentMethod->getCardType();
     $object_ws->numero = $paymentMethod->getCardNum();
     $object_ws->codigoSeguridad = $paymentMethod->getCardSecurity();
     $object_ws->nombreTarjetaHabiente = $paymentMethod->getCardName();
     $object_ws->fechaExpiracion = $paymentMethod->getCardExpYear() . '/' . $paymentMethod->getCardExpMonth();
     $object_ws->validarModuloAntiFraude = true;
     $object_ws->reportarPaginaConfirmacion = false;
     //Antifraude
     $object_ws->ciudadCorrespondencia = $extraData['correspondence_city'];
     $object_ws->cookie = $paymentMethod->getCookie();
     $object_ws->direccionCorrespondencia = $extraData['correspondence_address'];
     $object_ws->ipComprador = $paymentMethod->getClientIp();
     $object_ws->paisCorrespondencia = 'CO';
     $object_ws->userAgent = $paymentMethod->getUserAgent();
     $autWS = $this->pagosonlineComm->solicitarAutorizacion($object_ws);
     $this->logger->addInfo($paymentMethod->getPaymentName(), get_object_vars($object_ws));
     $paymentMethod->setPagosonlineTransactionId($autWS->transaccionId);
     $paymentMethod->setPagosonlineReference($autWS->referencia);
     $this->processTransaction($autWS, $paymentMethod);
     return $this;
 }
Example #4
0
 /**
  * Creates form view for Redsys payment
  *
  * @return \Symfony\Component\Form\FormView
  *
  * @throws PaymentOrderNotFoundException
  */
 public function processPayment()
 {
     $redsysMethod = new RedsysMethod();
     /**
      * At this point, order must be created given a cart, and placed in PaymentBridge
      *
      * So, $this->paymentBridge->getOrder() must return an object
      */
     $this->paymentEventDispatcher->notifyPaymentOrderLoad($this->paymentBridge, $redsysMethod);
     /**
      * 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, $redsysMethod);
     $formView = $this->redsysFormTypeWrapper->buildForm();
     return $formView;
 }
Example #5
0
 /**
  * Tries to process a payment through Banwire
  *
  * @param BanwireMethod $paymentMethod Payment method
  * @param float         $amount        Amount
  *
  * @return BanwireManager Self object
  *
  * @throws PaymentAmountsNotMatchException
  * @throws PaymentOrderNotFoundException
  * @throws PaymentException
  */
 public function processPayment(BanwireMethod $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 cart, 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();
     }
     $this->paymentEventDispatcher->notifyPaymentOrderCreated($this->paymentBridge, $paymentMethod);
     $extraData = $this->paymentBridge->getExtraData();
     $carExp = substr($paymentMethod->getCardExpYear(), -2);
     $params = array('response_format' => 'JSON', 'user' => $this->user, 'reference' => $this->paymentBridge->getOrderId() . '#' . date('Ymdhis'), 'currency' => $this->paymentBridge->getCurrency(), 'ammount' => number_format($this->paymentBridge->getAmount() / 100, 2), 'concept' => $this->paymentBridge->getOrderDescription(), 'card_num' => $paymentMethod->getCardNum(), 'card_name' => $paymentMethod->getCardName(), 'card_type' => $paymentMethod->getCardType(), 'card_exp' => $paymentMethod->getCardExpMonth() . '/' . $carExp, 'card_ccv2' => $paymentMethod->getCardSecurity(), 'address' => $extraData['correspondence_address'], 'post_code' => $extraData['customer_postal_code'], 'phone' => $extraData['customer_phone'], 'mail' => $extraData['customer_email']);
     $host = $this->api;
     $ch = curl_init();
     curl_setopt($ch, CURLOPT_URL, $host);
     curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; MSIE 6.0; WINDOWS; .NET CLR 1.1.4322)');
     curl_setopt($ch, CURLOPT_MAXREDIRS, 10);
     curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
     curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
     curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
     curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
     curl_setopt($ch, CURLOPT_TIMEOUT, 30);
     curl_setopt($ch, CURLOPT_HEADER, 0);
     curl_setopt($ch, CURLOPT_POST, 1);
     curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($params));
     if (defined('CURLOPT_ENCODING')) {
         curl_setopt($ch, CURLOPT_ENCODING, "");
     }
     $responseApi = curl_exec($ch);
     $this->processTransaction($responseApi, $paymentMethod);
     return $this;
 }
Example #6
0
 /**
  * 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;
 }
Example #7
0
 /**
  * Validates payment, given an Id of an existing order
  *
  * @param integer $orderId Id from order to validate
  *
  * @return BankwireManager self Object
  *
  * @throws PaymentOrderNotFoundException
  */
 public function validatePayment($orderId)
 {
     /**
      * Loads order to validate
      */
     $this->paymentBridge->findOrder($orderId);
     /**
      * Order Not found Exception must be thrown just here
      */
     if (!$this->paymentBridge->getOrder()) {
         throw new PaymentOrderNotFoundException();
     }
     /**
      * Payment paid successfully
      *
      * Paid process has ended successfully
      */
     $this->paymentEventDispatcher->notifyPaymentOrderSuccess($this->paymentBridge, $this->bankwireMethodWrapper->getBankwireMethod());
     return $this;
 }
 /**
  * Decline payment, given an Id of an existing order.
  *
  * @param int $orderId Id from order to decline
  *
  * @return BankwireManager self Object
  *
  * @throws PaymentOrderNotFoundException
  */
 public function declinePayment($orderId)
 {
     /**
      * Loads order to validate.
      */
     $this->paymentBridge->findOrder($orderId);
     /**
      * Order Not found Exception must be thrown just here.
      */
     if (!$this->paymentBridge->getOrder()) {
         throw new PaymentOrderNotFoundException();
     }
     /**
      * Payment failed.
      *
      * Paid process has ended with failure
      */
     $this->paymentEventDispatcher->notifyPaymentOrderFail($this->paymentBridge, $this->methodFactory->create());
     return $this;
 }
 /**
  * Dispatches order load event and prepares paypal form for submission.
  *
  * This is a synchronous action that takes place on the implementor
  * side, i.e. right after click the "pay with checkout" button it the
  * final stage of a checkout process.
  *
  * See documentation for PaypalWebCheckout Api Integration at
  *
  * @link https://developer.paypal.com/docs/integration/web/web-checkout/
  *
  * @throws PaymentOrderNotFoundException
  *
  * @return \Symfony\Component\Form\FormView
  */
 public function generatePaypalForm()
 {
     $paypalMethod = $this->paymentMethodFactory->createEmpty();
     /**
      * We expect listeners for the payment.order.load event
      * to store the Order into the bridge.
      *
      * So, $this->paymentBridge->getOrder() must return an object
      */
     $this->paymentEventDispatcher->notifyPaymentOrderLoad($this->paymentBridge, $paypalMethod);
     /**
      * Order Not found Exception must be thrown just here.
      */
     if (!$this->paymentBridge->getOrder()) {
         throw new PaymentOrderNotFoundException();
     }
     /**
      * We expect the Order to be created and physically flushed.
      */
     $this->paymentEventDispatcher->notifyPaymentOrderCreated($this->paymentBridge, $paypalMethod);
     return $this->formTypeFactory->buildForm();
 }
 /**
  * Tries to process a payment through DineromailApi
  *
  * @param DineromailApiMethod $paymentMethod Payment method
  * @param float               $amount        Amount
  * @param env
  *
  * @throws PaymentAmountsNotMatchException
  * @throws PaymentOrderNotFoundException
  * @return DineromailAPiManager            Self object
  */
 public function processPayment(DineromailApiMethod $paymentMethod, $amount)
 {
     /// first check that amounts are the same
     $paymentBridgeAmount = (double) $this->paymentBridge->getAmount();
     /**
      * If both amounts are different, execute Exception
      */
     if (abs($amount - $paymentBridgeAmount) > 1.0E-5) {
         throw new PaymentAmountsNotMatchException();
     }
     /**
      * At this point, order must be created given a cart, 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();
     }
     $this->paymentEventDispatcher->notifyPaymentOrderCreated($this->paymentBridge, $paymentMethod);
     $extraData = $this->paymentBridge->getExtraData();
     //params to send dineromailapi api
     $cardYear = substr($paymentMethod->getCardExpYear(), -2);
     $cardExp = str_pad($paymentMethod->getCardExpMonth(), 2, '0', STR_PAD_LEFT) . '/' . $cardYear;
     $items = array();
     foreach ($extraData['dinero_mail_api_items'] as $key => $dineroMailApiItem) {
         $items[] = array('Amount' => $dineroMailApiItem['amount'], 'Currency' => $this->paymentBridge->getCurrency(), 'Code' => '', 'Description' => '', 'Name' => $dineroMailApiItem['name'], 'Quantity' => $dineroMailApiItem['quantity']);
     }
     $buyer = array('Name' => $extraData['customer_firstname'], 'LastName' => $extraData['customer_lastname'], 'Email' => $extraData['customer_email'], 'Address' => $extraData['correspondence_address'], 'Phone' => $extraData['customer_phone'], 'Country' => $extraData['customer_country'], 'City' => $extraData['correspondence_city']);
     $creditCard = array('Installment' => $paymentMethod->getCardQuota(), 'CreditCardNumber' => $paymentMethod->getCardNum(), 'Holder' => $paymentMethod->getCardName(), 'ExpirationDate' => $cardExp, 'SecurityCode' => $paymentMethod->getCardSecurity(), 'DocumentNumber' => '1234567', 'Address' => '', 'AddressNumber' => '', 'AddressComplement' => '', 'ZipCode' => '', 'Neighborhood' => '', 'City' => '', 'State' => '', 'Country' => '');
     $result = $this->processSoap($items, $buyer, $creditCard, $paymentMethod->getCardType());
     $this->processTransaction($result, $paymentMethod);
     return $this;
 }