Пример #1
0
 /**
  * Check and set param for payment
  *
  * @param StripeMethod $paymentMethod Payment method
  * @param float        $amount        Amount
  *
  * @return StripeManager self Object
  *
  * @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 = array('number' => $paymentMethod->getCreditCartNumber(), 'exp_month' => $paymentMethod->getCreditCartExpirationMonth(), 'exp_year' => $paymentMethod->getCreditCartExpirationYear());
     $this->chargeParams = array('card' => $cardParams, 'amount' => $cartAmount, 'currency' => strtolower($this->paymentBridge->getCurrency()));
     return $this;
 }
Пример #2
0
 /**
  * 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;
 }
Пример #3
0
 /**
  * Generate log transaction file for KCC
  *
  * @return string TBK Session Id
  */
 public function processPayment()
 {
     $orderId = $this->paymentBridge->getOrderId();
     $amount = $this->paymentBridge->getAmount();
     $sessionId = $orderId . date('Ymdhis');
     // Generate session log file for KCC
     $file = fopen($this->kccPath . '/log/datos' . $sessionId . '.log', 'w');
     $line = $amount . ';' . $orderId;
     fwrite($file, $line);
     fclose($file);
     return $sessionId;
 }
Пример #4
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;
 }
Пример #5
0
 /**
  * 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;
 }
Пример #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;
 }
Пример #7
0
 /**
  * Generate token to make the payment request
  *
  * @return string
  */
 public function generateToken()
 {
     $extraData = $this->paymentBridge->getExtraData();
     $cartAmount = (double) number_format($this->paymentBridge->getAmount() / 100, 2, '.', '');
     $payload = new Payload();
     $payload->setIssuedAt(time());
     $payload->setExpiration(time() + 3600);
     $payload->addProperty("name", $extraData['order_name']);
     $payload->addProperty("description", $extraData['order_description']);
     $payload->addProperty("price", $cartAmount);
     $payload->addProperty("currencyCode", $this->paymentBridge->getCurrency());
     $token = $payload->CreatePayload($this->merchantId);
     $jwtToken = JWTHelper::encode($token, $this->secretKey);
     $paymentMethod = new GoogleWalletMethod();
     $paymentMethod->setApiToken($jwtToken);
     $this->paymentEventDispatcher->notifyPaymentOrderLoad($this->paymentBridge, $paymentMethod);
     return $jwtToken;
 }
 /**
  * Check if transaction is complete.
  *
  * When we receive an IPN response, we should
  * check that the price paid corresponds to the
  * amount stored in the PaymentMethod. This double
  * check is essential since the web checkout form
  * could be mangled.
  *
  * @link https://developer.paypal.com/docs/classic/ipn/integration-guide/IPNIntro/
  *
  * @param array $ipnParameters Paypal IPN parameters
  *
  * @return bool
  */
 private function transactionSuccessful($ipnParameters)
 {
     /**
      * First of all we have to check the validity of the IPN
      * message. We need to send back the contents of the query
      * string coming from Paypal's IPN message.
      */
     $ipnNotifyValidateUrl = $this->urlFactory->getApiEndpoint() . '?' . http_build_query(array_merge($this->urlFactory->getPaypalNotifyValidateQueryParam(), $ipnParameters));
     $ipnValidated = file_get_contents($ipnNotifyValidateUrl) == 'VERIFIED';
     /**
      * Matching paid amount with the originating order amount,
      * this is a security check to prevent frauds by manually
      * changing the papal form.
      */
     $amountMatches = $this->paymentBridge->getAmount() / 100 == $ipnParameters['mc_gross'];
     $amountMatches = $amountMatches && $this->paymentBridge->getCurrency() == $ipnParameters['mc_currency'];
     /**
      * When a transaction is successful, payment_status has a 'Completed' value.
      */
     return $amountMatches && $ipnValidated && strcmp($ipnParameters['payment_status'], 'Completed') === 0;
 }
Пример #9
0
 /**
  * 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;
 }
Пример #10
0
 /**
  * Build form function
  *
  * @param FormBuilderInterface $builder the formBuilder
  * @param array                $options the options for this form
  */
 public function buildForm(FormBuilderInterface $builder, array $options)
 {
     $builder->add('credit_card', 'text', array('required' => true, 'max_length' => 20))->add('credit_cart_security', 'text', array('required' => true, 'max_length' => 4))->add('credit_cart_expiration_month', 'choice', array('required' => true, 'choices' => array_combine(range(1, 12), range(1, 12))))->add('credit_cart_expiration_year', 'choice', array('required' => true, 'choices' => array_combine(range(date('Y'), 2025), range(date('Y'), 2025))))->add('amount', 'hidden', array('data' => $this->paymentBridge->getAmount()));
 }
Пример #11
0
 /**
  * Build form function
  *
  * @param FormBuilderInterface $builder the formBuilder
  * @param array                $options the options for this form
  */
 public function buildForm(FormBuilderInterface $builder, array $options)
 {
     $builder->add('credit_card_owner', 'text', array('required' => false))->add('credit_card', 'text', array('max_length' => 20, 'required' => false))->add('credit_card_security', 'text', array('required' => false, 'max_length' => 4))->add('credit_card_expiration_month', 'choice', array('required' => false, 'choices' => array_combine(range(1, 12), range(1, 12))))->add('credit_card_expiration_year', 'choice', array('required' => false, 'choices' => array_combine(range(date('Y'), 2025), range(date('Y'), 2025))))->add('amount', 'hidden', array('required' => true, 'data' => $this->paymentBridge->getAmount()))->add('additionalData', 'hidden', array('required' => false))->add('generationDate', 'hidden', array('required' => false, 'attr' => ['data-encrypted-name' => 'generationtime']));
 }
Пример #12
0
 /**
  * Builds form given session ID and success and fail routes
  *
  * @param string $sessionId Session ID
  * @param string $okRoute   Ok route
  * @param string $failRoute Fail route
  *
  * @return FormBuilderInterface
  */
 public function buildForm($sessionId, $okRoute, $failRoute)
 {
     $formBuilder = $this->formFactory->createNamedBuilder(null)->setAction($this->cgiUri . '/tbk_bp_pago.cgi')->setMethod('POST')->add('TBK_TIPO_TRANSACCION', 'hidden', array('data' => 'TR_NORMAL'))->add('TBK_MONTO', 'hidden', array('data' => $this->paymentBridge->getAmount()))->add('TBK_ORDEN_COMPRA', 'hidden', array('data' => $this->paymentBridge->getOrderId()))->add('TBK_ID_SESION', 'hidden', array('data' => $sessionId))->add('TBK_URL_EXITO', 'hidden', array('data' => $okRoute))->add('TBK_URL_FRACASO', 'hidden', array('data' => $failRoute));
     return $formBuilder;
 }
Пример #13
0
 /**
  * Buildform function
  *
  * @param FormBuilderInterface $builder the formBuilder
  * @param array                $options the options for this form
  */
 public function buildForm(FormBuilderInterface $builder, array $options)
 {
     $builder->setAction($this->router->generate($this->controllerRouteName, array(), true))->setMethod('POST')->add('credit_card_1', 'text', array('required' => true, 'max_length' => 4))->add('credit_card_2', 'text', array('required' => true, 'max_length' => 4))->add('credit_card_3', 'text', array('required' => true, 'max_length' => 4))->add('credit_card_4', 'text', array('required' => true, 'max_length' => 4))->add('credit_card_owner', 'text', array('required' => true))->add('credit_card_expiration_month', 'choice', array('required' => true, 'choices' => array_combine(range(1, 12), range(1, 12))))->add('credit_card_expiration_year', 'choice', array('required' => true, 'choices' => array_combine(range(date('Y'), 2025), range(date('Y'), 2025))))->add('credit_card_security', 'text', array('required' => true, 'max_length' => 4))->add('amount', 'hidden', array('data' => $this->paymentBridge->getAmount()))->add('api_token', 'hidden', array('data' => ''))->add('submit', 'submit', array('label' => $this->submitLabel, 'attr' => array('class' => $this->submitCssClass)));
 }
Пример #14
0
 /**
  * Buildform function
  *
  * @param FormBuilderInterface $builder the formBuilder
  * @param array                $options the options for this form
  */
 public function buildForm(FormBuilderInterface $builder, array $options)
 {
     $builder->setAction($this->router->generate($this->controllerRouteName, array(), true))->setMethod('POST')->add('card_type', 'choice', array('required' => true, 'choices' => array('visa' => 'Visa', 'mastercard' => 'MasterCard', 'amex' => 'American Express')))->add('card_name', 'text', array('required' => true))->add('card_num', 'text', array('required' => true, 'max_length' => 16))->add('card_exp_month', 'choice', array('required' => true, 'choices' => array_combine(range(1, 12), range(1, 12))))->add('card_exp_year', 'choice', array('required' => true, 'choices' => array_combine(range(2013, 2025), range(2013, 2025))))->add('card_ccv2', 'text', array('required' => true, 'max_length' => 4))->add('amount', 'hidden', array('data' => $this->paymentBridge->getAmount()))->add('submit', 'submit');
 }
 /**
  * Buildform function
  *
  * @param FormBuilderInterface $builder the formBuilder
  * @param array                $options the options for this form
  */
 public function buildForm(FormBuilderInterface $builder, array $options)
 {
     $builder->setAction($this->router->generate($this->controllerRouteName, array(), true))->setMethod('POST')->add('amount', 'hidden', array('data' => $this->paymentBridge->getAmount()))->add('currency', 'hidden', array('data' => $this->paymentBridge->getCurrency()))->add('paypal_express_params', 'hidden', array('data' => $options['paypal_express_params']))->add('submit', 'submit');
 }