/** * Builds form given success and fail urls * * @return Form */ public function buildForm($responseRoute, $confirmRoute) { $extraData = $this->paymentBridge->getExtraData(); $formBuilder = $this->formFactory->createNamedBuilder(null); $key = $this->key; $userId = $this->userId; $orderId = $this->paymentBridge->getOrderId() . '#' . date('Ymdhis'); $amount = $this->paymentBridge->getAmount(); $currency = $this->paymentBridge->getCurrency(); $signature = "{$key}~{$userId}~{$orderId}~{$amount}~{$currency}"; $signatureHash = md5($signature); $formBuilder->setAction($this->gateway)->setMethod('POST')->add('usuarioId', 'hidden', array('data' => $this->userId))->add('firma', 'hidden', array('data' => $signatureHash))->add('refVenta', 'hidden', array('data' => $orderId))->add('extra1', 'hidden', array('data' => 'pagosonlinegateway'))->add('extra2', 'hidden', array('data' => $this->paymentBridge->getOrder()->getCart()->getId()))->add('descripcion', 'hidden', array('data' => 'description'))->add('valor', 'hidden', array('data' => $this->paymentBridge->getAmount()))->add('moneda', 'hidden', array('data' => $this->paymentBridge->getCurrency()))->add('lng', 'hidden', array('data' => $extraData['language']))->add('iva', 'hidden', array('data' => $extraData['refund_vat']))->add('baseDevolucionIva', 'hidden', array('data' => $extraData['refund_vat']))->add('url_respuesta', 'hidden', array('data' => $responseRoute))->add('url_confirmacion', 'hidden', array('data' => $confirmRoute))->add('prueba', 'hidden', array('data' => $this->test))->add('emailComprador', 'hidden', array('data' => $extraData['customer_email']))->add('paisEnvio', 'hidden', array('data' => 'CO'))->add('Submit', 'hidden', array('data' => 'Pagar')); return $formBuilder; }
/** * Builds form given success and fail urls * * @param string $dineromailSuccessUrl Success route url * @param string $dineromailFailUrl Fail route url * @param string $dineromailTransactionId Transaction Id * * @return Form */ public function buildForm($dineromailSuccessUrl, $dineromailFailUrl, $dineromailTransactionId) { $extraData = $this->paymentBridge->getExtraData(); $formBuilder = $this->formFactory->createNamedBuilder(null); $formBuilder->setAction($this->endPoint)->setMethod('POST')->add('merchant', 'hidden', array('data' => $this->merchant))->add('country_id', 'hidden', array('data' => $this->country))->add('seller_name', 'hidden', array('data' => $this->sellerName))->add('payment_method_available', 'hidden', array('data' => implode(';', $this->paymentMethodsAvailable)))->add('url_redirect_enabled', 'hidden', array('data' => intval($this->urlRedirectEnabled)))->add('header_image', 'hidden', array('data' => $this->headerImage))->add('amount', 'hidden', array('data' => number_format($this->paymentBridge->getAmount(), 2)))->add('transaction_id', 'hidden', array('data' => $dineromailTransactionId))->add('currency', 'hidden', array('data' => $this->paymentBridge->getCurrency()))->add('buyer_name', 'hidden', array('data' => $extraData['customer_firstname']))->add('buyer_lastname', 'hidden', array('data' => $extraData['customer_lastname']))->add('buyer_email', 'hidden', array('data' => $extraData['customer_email']))->add('buyer_phone', 'hidden', array('data' => $extraData['customer_phone']))->add('language', 'hidden', array('data' => $extraData['language']))->add('ok_url', 'hidden', array('data' => $dineromailSuccessUrl))->add('error_url', 'hidden', array('data' => $dineromailFailUrl))->add('pending_url', 'hidden', array('data' => $dineromailSuccessUrl)); $iteration = 1; /** * Every item defined in the PaymentBridge is added as a simple field */ foreach ($extraData['dinero_mail_items'] as $key => $dineroMailItem) { $formBuilder->add('item_name_' . $iteration, 'hidden', array('data' => $dineroMailItem['name']))->add('item_quantity_' . $iteration, 'hidden', array('data' => $dineroMailItem['quantity']))->add('item_ammount_' . $iteration, 'hidden', array('data' => $dineroMailItem['amount']))->add('item_currency_' . $iteration, 'hidden', array('data' => $this->paymentBridge->getCurrency())); $iteration++; } return $formBuilder; }
/** * Builds form given success and fail urls * * @param String $successRoute * @param String $failRoute * @param Integer $safetyPayTransaction * @param SafetypayMethod $paymentMethod * @throws \PaymentSuite\PaymentCoreBundle\Exception\PaymentException * @return FormBuilder */ public function buildForm($successRoute, $failRoute, $safetyPayTransaction, SafetypayMethod $paymentMethod) { $formBuilder = $this->formFactory->createNamedBuilder(null); $elements = array('Apikey' => $this->key, 'RequestDateTime' => $this->safetyPayManager->getRequestDateTime(), 'CurrencyCode' => $this->paymentBridge->getCurrency(), 'Amount' => number_format($this->paymentBridge->getAmount() / 100, 2, '.', ''), 'MerchantReferenceNo' => $safetyPayTransaction, 'Language' => 'ES', 'TrackingCode' => '', 'ExpirationTime' => $this->expiration, 'FilterBy' => '', 'TransactionOkURL' => $successRoute, 'TransactionErrorURL' => $failRoute, 'ResponseFormat' => $this->safetyPayManager->getresponseFormat()); $this->paymentLogger->setPaymentBundle($paymentMethod->getPaymentName()); $jsonData = json_encode($elements); $this->paymentLogger->log('Request: ' . $jsonData); $elements['signature'] = $this->safetyPayManager->getSignature($elements, 'CurrencyCode, Amount, MerchantReferenceNo, Language, TrackingCode, ExpirationTime, TransactionOkURL, TransactionErrorURL'); $paymentMethod->setRequestDateTime($elements['RequestDateTime']); $paymentMethod->setSignature($elements['signature']); $urlToken = $this->safetyPayManager->getUrlToken($elements, false); //Token no valid if (strpos($urlToken, 'Error') > 0) { throw new PaymentException(); } $urlTokenExploded = explode('?', $urlToken); $urlTokenHost = $urlTokenExploded[0]; $urlTokenParam = $urlTokenExploded[1]; $urlTokenParamExploded = explode('=', $urlTokenParam); $formBuilder->setAction($urlTokenHost)->setMethod('POST')->add('TokenID', 'hidden', array('data' => $urlTokenParamExploded[1])); return $formBuilder; }