/** * 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; }
/** * 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; }
/** * 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; }
/** * 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; }
/** * 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; }
/** * 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; }
/** * 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; }
/** * 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; }
/** * 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())); }
/** * 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'])); }
/** * 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; }
/** * 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))); }
/** * 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'); }