Пример #1
0
function fn_paynl_getState($payNLTransactionID, $processor_data)
{
    $payApiInfo = new Pay_Api_Info();
    $payApiInfo->setApiToken($processor_data['processor_params']['token_api']);
    $payApiInfo->setServiceId($processor_data['processor_params']['service_id']);
    $payApiInfo->setTransactionId($payNLTransactionID);
    try {
        $result = $payApiInfo->doRequest();
    } catch (Exception $ex) {
        fn_set_notification('E', __('error'), $ex->getMessage());
        fn_redirect('/index.php?dispatch=checkout.checkout');
    }
    $state = Pay_Helper::getStateText($result['paymentDetails']['state']);
    return $state;
}
Пример #2
0
    $transactionId = $_REQUEST['orderId'];
    //finish
    $isExchange = false;
}
$method = $_REQUEST['method'];
$payApiInfo = new Pay_Api_Info();
$payApiInfo->setApiToken(constant('MODULE_PAYMENT_PAYNL_' . $method . '_API_TOKEN'));
$payApiInfo->setServiceId(constant('MODULE_PAYMENT_PAYNL_' . $method . '_SERVICE_ID'));
$payApiInfo->setTransactionId($transactionId);
try {
    $result = $payApiInfo->doRequest();
} catch (Exception $ex) {
    var_dump($ex->message);
    die;
}
$state = Pay_Helper::getStateText($result['paymentDetails']['state']);
$orderId = $result['statsDetails']['extra1'];
if ($isExchange && isAlreadyPAID($transactionId)) {
    die("TRUE|Already PAID");
}
if (!$isExchange && isAlreadyPAID($transactionId)) {
    $cart =& $_SESSION['cart'];
    $cart->reset(true);
    zen_redirect(zen_href_link(FILENAME_CHECKOUT_SUCCESS));
    exit;
}
//if not already paid
switch ($state) {
    case "PENDING":
        echo "TRUE|Ignore pending";
        ob_flush();
Пример #3
0
 public function startTransaction()
 {
     $this->load->model('payment/' . $this->_paymentMethodName);
     $this->load->model('checkout/order');
     $this->load->model('setting/setting');
     $settings = $this->model_setting_setting->getSetting('paynl');
     $statusPending = $settings[$this->_paymentMethodName . '_pending_status'];
     $order_info = $this->model_checkout_order->getOrder($this->session->data['order_id']);
     // var_dump($order_info);
     $response = array();
     try {
         $apiStart = new Pay_Api_Start();
         $apiStart->setApiToken($settings[$this->_paymentMethodName . '_apitoken']);
         $apiStart->setServiceId($settings[$this->_paymentMethodName . '_serviceid']);
         $returnUrl = $this->url->link('payment/' . $this->_paymentMethodName . '/finish');
         $exchangeUrl = $this->url->link('payment/' . $this->_paymentMethodName . '/exchange');
         $apiStart->setFinishUrl($returnUrl);
         $apiStart->setExchangeUrl($exchangeUrl);
         $apiStart->setPaymentOptionId($this->_paymentOptionId);
         $currency_amount = $this->currency->format($order_info['total'], $order_info['currency_code'], '', false);
         $amount = round($currency_amount * 100);
         $apiStart->setAmount($amount);
         $apiStart->setCurrency($order_info['currency_code']);
         $optionSub = null;
         if (!empty($_POST['optionSubId'])) {
             $optionSub = $_POST['optionSubId'];
             $apiStart->setPaymentOptionSubId($optionSub);
         }
         $apiStart->setDescription($order_info['order_id']);
         $apiStart->setExtra1($order_info['order_id']);
         // Klantdata verzamelen en meesturen
         $strAddress = $order_info['shipping_address_1'] . ' ' . $order_info['shipping_address_2'];
         list($street, $housenumber) = Pay_Helper::splitAddress($strAddress);
         $arrShippingAddress = array('streetName' => $street, 'streetNumber' => $housenumber, 'zipCode' => $order_info['shipping_postcode'], 'city' => $order_info['shipping_city'], 'countryCode' => $order_info['shipping_iso_code_2']);
         $initialsPayment = substr($order_info['payment_firstname'], 0, 10);
         $initialsShipping = substr($order_info['shipping_firstname'], 0, 10);
         $strAddress = $order_info['payment_address_1'] . ' ' . $order_info['payment_address_2'];
         list($street, $housenumber) = Pay_Helper::splitAddress($strAddress);
         $arrPaymentAddress = array('initials' => substr($initialsPayment, 0, 1), 'lastName' => $order_info['payment_lastname'], 'streetName' => $street, 'streetNumber' => $housenumber, 'zipCode' => $order_info['payment_postcode'], 'city' => $order_info['payment_city'], 'countryCode' => $order_info['payment_iso_code_2']);
         $arrEnduser = array('initials' => substr($initialsShipping, 0, 1), 'lastName' => $order_info['shipping_lastname'], 'language' => substr($order_info['language_code'], 0, 2), 'emailAddress' => $order_info['email'], 'address' => $arrShippingAddress, 'invoiceAddress' => $arrPaymentAddress);
         $apiStart->setEnduser($arrEnduser);
         $totalAmount = 0;
         //Producten toevoegen
         foreach ($this->cart->getProducts() as $product) {
             $priceWithTax = $this->tax->calculate($product['price'], $product['tax_class_id'], true);
             $tax = $priceWithTax - $product['price'];
             $price = round($priceWithTax * 100);
             $totalAmount += $price * $product['quantity'];
             $apiStart->addProduct($product['product_id'], $product['name'], $price, $product['quantity'], Pay_Helper::calculateTaxClass($priceWithTax, $tax));
         }
         //            // Shipping costs?
         //            if (isset($this->session->data['shipping_method']['cost']) && $this->session->data['shipping_method']['cost'] != 0) {
         //                $arrShipping = $this->session->data['shipping_method'];
         //                $shippingCost = $this->tax->calculate($arrShipping['cost'], $arrShipping['tax_class_id'], true);
         //                $shippingCost = round($shippingCost*100);
         //                $apiStart->addProduct('0', 'Verzendkosten', $shippingCost, 1, 'H');
         //                $totalAmount += $shippingCost;
         //            }
         //Extra totals rijen
         $total_data = array();
         $total = 0;
         $taxes = $this->cart->getTaxes();
         $this->load->model('setting/extension');
         $results = $this->model_setting_extension->getExtensions('total');
         $taxesForTotals = array();
         foreach ($results as $result) {
             $taxesBefore = array_sum($taxes);
             if ($this->config->get($result['code'] . '_status')) {
                 $this->load->model('total/' . $result['code']);
                 $this->{'model_total_' . $result['code']}->getTotal($total_data, $total, $taxes);
                 $taxAfter = array_sum($taxes);
                 $taxesForTotals[$result['code']] = $taxAfter - $taxesBefore;
             }
         }
         foreach ($total_data as $total_row) {
             if (!in_array($total_row['code'], array('sub_total', 'tax', 'total'))) {
                 $totalIncl = $total_row['value'] + $taxesForTotals[$total_row['code']];
                 $apiStart->addProduct($total_row['code'], $total_row['title'], round($totalIncl * 100), 1, Pay_Helper::calculateTaxClass($totalIncl, $taxesForTotals[$total_row['code']]));
             }
         }
         $postData = $apiStart->getPostData();
         $result = $apiStart->doRequest();
         //transactie is aangemaakt, nu loggen
         $modelName = 'model_payment_' . $this->_paymentMethodName;
         $this->{$modelName}->addTransaction($result['transaction']['transactionId'], $order_info['order_id'], $this->_paymentOptionId, $amount, $postData, $optionSub);
         $message = 'Pay.nl Transactie aangemaakt. TransactieId: ' . $result['transaction']['transactionId'] . ' .<br />';
         if ($settings[$this->_paymentMethodName . '_send_confirm_email'] == 'start') {
             $this->model_checkout_order->confirm($order_info['order_id'], $statusPending, $message, true);
         }
         $response['success'] = $result['transaction']['paymentURL'];
     } catch (Pay_Api_Exception $e) {
         $response['error'] = "De pay.nl api gaf de volgende fout: " . $e->getMessage();
     } catch (Pay_Exception $e) {
         $response['error'] = "Er is een fout opgetreden: " . $e->getMessage();
     } catch (Exception $e) {
         $response['error'] = "Onbekende fout: " . $e->getMessage();
     }
     die(json_encode($response));
 }
Пример #4
0
 /**
  * @see FrontController::initContent()
  */
 public function initContent()
 {
     //        parent::initContent();
     $cart = $this->context->cart;
     $deliveryAddress = new Address((int) $cart->id_address_delivery);
     $invoiceAddress = new Address((int) $cart->id_address_invoice);
     $paymentOptionId = Tools::getValue('pid');
     $token = Configuration::get('PAYNL_TOKEN');
     $serviceId = Configuration::get('PAYNL_SERVICE_ID');
     $statusPending = Configuration::get('PAYNL_WAIT');
     if (!isset($cart->id)) {
         echo "Can't find cart";
         exit;
     }
     try {
         //validate the order
         $customer = new Customer($cart->id_customer);
         $total = (double) $cart->getOrderTotal(true, Cart::BOTH);
         $orderStatus = Configuration::get('PAYNL_WAIT');
         $module = $this->module;
         $currencyId = $this->context->currency->id;
         $currencyCode = $this->context->currency->iso_code;
         //$paymentMethodName = $module->getPaymentMethodName($paymentOptionId);
         $extraFee = $module->getExtraCosts($paymentOptionId, $total);
         $total += $extraFee;
         //$cart->additional_shipping_cost = $extraFee;
         //$module->validateOrderPay((int) $cart->id, $orderStatus, $total, $extraFee, $module->getPaymentMethodName($paymentOptionId), NULL, array(), (int) $currencyId, false, $customer->secure_key);
         $cartId = $cart->id;
         $apiStart = new Pay_Api_Start();
         //Klantgegevens meesturen
         /* array(
          *  initals
          *  lastName
          *  language
          *  accessCode
          *  gender (M or F)
          *  dob (DD-MM-YYYY)
          *  phoneNumber
          *  emailAddress
          *  bankAccount
          *  iban
          *  bic
          *  sendConfirmMail
          *  confirmMailTemplate
          *  address => array(
          *      streetName
          *      streetNumber
          *      zipCode
          *      city
          *      countryCode
          *  )
          *  invoiceAddress => array(
          *      initials
          *      lastname
          *      streetName
          *      streetNumber
          *      zipCode
          *      city
          *      countryCode
          *  )
          * )
          */
         $language = new Language($cart->id_lang);
         $arrEnduser = array();
         $arrEnduser['language'] = $language->iso_code;
         $arrEnduser['phoneNumber'] = !empty($invoiceAddress->phone) ? $invoiceAddress->phone : $invoiceAddress->phone_mobile;
         $arrEnduser['initials'] = $customer->firstname;
         $arrEnduser['lastName'] = $customer->lastname;
         list($year, $month, $day) = explode('-', $customer->birthday);
         $arrEnduser['dob'] = $day . '-' . $month . '-' . $year;
         $arrEnduser['emailAddress'] = $customer->email;
         // delivery address
         $arrAddress = array();
         $strAddress = $deliveryAddress->address1 . $deliveryAddress->address2;
         $arrStreetHouseNr = Pay_Helper::splitAddress($strAddress);
         $arrAddress['streetName'] = $arrStreetHouseNr[0];
         $arrAddress['streetNumber'] = $arrStreetHouseNr[1];
         $arrAddress['zipCode'] = $deliveryAddress->postcode;
         $arrAddress['city'] = $deliveryAddress->city;
         $country = new Country($deliveryAddress->id_country);
         $arrAddress['countryCode'] = $country->iso_code;
         $arrEnduser['address'] = $arrAddress;
         // invoice address
         $arrAddress = array();
         $arrAddress['initials'] = $customer->firstname;
         $arrAddress['lastName'] = $customer->lastname;
         $strAddress = $invoiceAddress->address1 . $invoiceAddress->address2;
         $arrStreetHouseNr = Pay_Helper::splitAddress($strAddress);
         $arrAddress['streetName'] = $arrStreetHouseNr[0];
         $arrAddress['streetNumber'] = $arrStreetHouseNr[1];
         $arrAddress['zipCode'] = $invoiceAddress->postcode;
         $arrAddress['city'] = $invoiceAddress->city;
         $country = new Country($invoiceAddress->id_country);
         $arrAddress['countryCode'] = $country->iso_code;
         $arrEnduser['invoiceAddress'] = $arrAddress;
         $apiStart->setEnduser($arrEnduser);
         // producten toevoegen
         $products = $cart->getProducts();
         foreach ($products as $product) {
             $apiStart->addProduct($product['id_product'], $product['name'], round($product['price_wt'] * 100), $product['cart_quantity'], 'H');
         }
         //verzendkosten toevoegen
         $shippingCost = $cart->getTotalShippingCost();
         if ($shippingCost != 0) {
             $apiStart->addProduct('SHIPPING', 'Verzendkosten', round($shippingCost * 100), 1, 'H');
         }
         //Inpakservice toevoegen
         if ($cart->gift != 0) {
             $packingCost = $cart->getGiftWrappingPrice(true);
             if ($packingCost != 0) {
                 $apiStart->addProduct('PACKING', 'Inpakservice', round($packingCost * 100), 1, 'H');
             }
         }
         $cartRules = $cart->getCartRules();
         foreach ($cartRules as $cartRule) {
             $apiStart->addProduct('DISCOUNT' . $cartRule['id_cart_rule'], $cartRule['description'], round($cartRule['value_real'] * -100), 1, 'H');
         }
         if ($extraFee != 0) {
             $apiStart->addProduct('PAYMENTFEE', 'Betaalkosten', round($extraFee * 100), 1, 'H');
         }
         $apiStart->setApiToken($token);
         $apiStart->setServiceId($serviceId);
         $description = Configuration::get('PAYNL_DESCRIPTION_PREFIX') . ' ' . $cart->id;
         $description = trim($description);
         $apiStart->setDescription($description);
         $apiStart->setExtra1('CartId: ' . $cart->id);
         $apiStart->setPaymentOptionId($paymentOptionId);
         $finishUrl = Context::getContext()->link->getModuleLink('paynl_paymentmethods', 'return');
         $exchangeUrl = Context::getContext()->link->getModuleLink('paynl_paymentmethods', 'exchange');
         $apiStart->setFinishUrl($finishUrl);
         $apiStart->setExchangeUrl($exchangeUrl);
         $apiStart->setAmount(round($total * 100));
         $apiStart->setCurrency($currencyCode);
         $result = $apiStart->doRequest();
         $startData = $apiStart->getPostData();
         Pay_Helper_Transaction::addTransaction($result['transaction']['transactionId'], $paymentOptionId, round($total * 100), $currencyCode, $cartId, $startData);
         if ($this->module->validateOnStart($paymentOptionId)) {
             $module->validateOrderPay((int) $cart->id, $statusPending, $total, $extraFee, $module->getPaymentMethodName($paymentOptionId), NULL, array('transaction_id' => $result['transaction']['transactionId']), (int) $currencyId, false, $customer->secure_key);
         }
         Tools::redirect($result['transaction']['paymentURL']);
         //$url = $paynl->startTransaction($cart);
     } catch (Exception $e) {
         echo $e->getMessage();
     }
     //betaling starten
 }
Пример #5
0
 private function checkStatus($order_id)
 {
     if (!class_exists('Pay_Api_Info')) {
         require JPATH_SITE . '/plugins/hikashoppayment/paynl/paynl/Api.php';
         require JPATH_SITE . '/plugins/hikashoppayment/paynl/paynl/api/Info.php';
         require JPATH_SITE . '/plugins/hikashoppayment/paynl/paynl/Helper.php';
     }
     $payApiInfo = new Pay_Api_Info();
     $payApiInfo->setApiToken($this->payment_params->token_api);
     $payApiInfo->setServiceId($this->payment_params->service_id);
     $payApiInfo->setTransactionId($order_id);
     try {
         $result = $payApiInfo->doRequest();
     } catch (Exception $ex) {
         vmError($ex->getMessage());
     }
     $state = Pay_Helper::getStateText($result['paymentDetails']['state']);
     return $state;
 }