public function testReturnBaseUrl() { Veritrans_Config::$isProduction = false; $this->assertEquals(Veritrans_Config::getBaseUrl(), Veritrans_Config::SANDBOX_BASE_URL); Veritrans_Config::$isProduction = true; $this->assertEquals(Veritrans_Config::getBaseUrl(), Veritrans_Config::PRODUCTION_BASE_URL); }
public static function charge($params) { $payloads = array('payment_type' => 'credit_card'); if (array_key_exists('item_details', $params)) { $gross_amount = 0; foreach ($params['item_details'] as $item) { $gross_amount += $item['quantity'] * $item['price']; } $payloads['transaction_details']['gross_amount'] = $gross_amount; } $payloads = array_replace_recursive($payloads, $params); if (Veritrans_Config::$isSanitized) { Veritrans_Sanitizer::jsonRequest($payloads); } $result = Veritrans_ApiRequestor::post(Veritrans_Config::getBaseUrl() . '/charge', Veritrans_Config::$serverKey, $payloads); return $result; }
public function execValidation($cart) { global $cookie; if ($cart->id_customer == 0 || $cart->id_address_delivery == 0 || $cart->id_address_invoice == 0 || !$this->active) { Tools::redirect('index.php?controller=order&step=1'); } // Check that this payment option is still available in case the customer changed his address just before the end of the checkout process $authorized = false; foreach (Module::getPaymentModules() as $module) { if ($module['name'] == 'veritranspay') { $authorized = true; break; } } if (!$authorized) { die($this->module->l('This payment method is not available.', 'validation')); } $customer = new Customer($cart->id_customer); if (!Validate::isLoadedObject($customer)) { Tools::redirect('index.php?controller=order&step=1'); } $usd = Configuration::get('VT_KURS'); $cf = Configuration::get('VT_CONVENIENCE_FEE') * 0.01; $list_enable_payments = array(); if (Configuration::get('ENABLED_CREDIT_CARD')) { $list_enable_payments[] = "credit_card"; } if (Configuration::get('ENABLED_CIMB')) { $list_enable_payments[] = "cimb_clicks"; } if (Configuration::get('ENABLED_MANDIRI')) { $list_enable_payments[] = "mandiri_clickpay"; } if (Configuration::get('ENABLED_PERMATAVA')) { $list_enable_payments[] = "bank_transfer"; } if (Configuration::get('ENABLED_BRIEPAY')) { $list_enable_payments[] = "bri_epay"; } if (Configuration::get('ENABLED_TELKOMSEL_CASH')) { $list_enable_payments[] = "telkomsel_cash"; } if (Configuration::get('ENABLED_XL_TUNAI')) { $list_enable_payments[] = "xl_tunai"; } if (Configuration::get('ENABLED_MANDIRI_BILL')) { $list_enable_payments[] = "echannel"; } if (Configuration::get('ENABLED_BBM_MONEY')) { $list_enable_payments[] = "bbm_money"; } if (Configuration::get('ENABLED_INDOMARET')) { $list_enable_payments[] = "cstore"; } if (Configuration::get('ENABLED_INDOSAT_DOMPETKU')) { $list_enable_payments[] = "indosat_dompetku"; } if (Configuration::get('ENABLED_MANDIRI_ECASH')) { $list_enable_payments[] = "mandiri_ecash"; } //error_log(print_r($list_enable_payments,TRUE)); $veritrans = new Veritrans_Config(); //SETUP Veritrans_Config::$serverKey = Configuration::get('VT_SERVER_KEY'); Veritrans_Config::$isProduction = Configuration::get('VT_ENVIRONMENT') == 'production' ? true : false; $url = Veritrans_Config::getBaseUrl(); if (version_compare(Configuration::get('PS_VERSION_DB'), '1.5') == -1) { $shipping_cost = $cart->getOrderShippingCost(); } else { $shipping_cost = $cart->getTotalShippingCost(); } $currency = new Currency($cookie->id_currency); $total = $cart->getOrderTotal(true, Cart::BOTH); $mailVars = array(); $billing_address = new Address($cart->id_address_invoice); $delivery_address = new Address($cart->id_address_delivery); if (Configuration::get('VT_3D_SECURE') == 'on' || Configuration::get('VT_3D_SECURE') == 1) { Veritrans_Config::$is3ds = true; } if (Configuration::get('VT_SANITIZED') == 'on' || Configuration::get('VT_SANITIZED') == 1) { Veritrans_Config::$isSanitized = true; } //error_log('sanitized '.Configuration::get('VT_SANITIZED')); // Billing Address $params_billing_address = array('first_name' => $billing_address->firstname, 'last_name' => $billing_address->lastname, 'address' => $billing_address->address1, 'city' => $billing_address->city, 'postal_code' => $billing_address->postcode, 'phone' => $this->determineValidPhone($billing_address->phone, $billing_address->phone_mobile), 'country_code' => 'IDN'); if ($cart->isVirtualCart()) { } else { if ($cart->id_address_delivery != $cart->id_address_invoice) { $params_shipping_address = array('first_name' => $delivery_address->firstname, 'last_name' => $delivery_address->lastname, 'address' => $delivery_address->address1, 'city' => $delivery_address->city, 'postal_code' => $delivery_address->postcode, 'phone' => $this->determineValidPhone($delivery_address->phone, $delivery_address->phone_mobile), 'country_code' => 'IDN'); } else { $params_shipping_address = $params_billing_address; } } $params_customer_details = array('first_name' => $billing_address->firstname, 'last_name' => $billing_address->lastname, 'email' => $customer->email, 'phone' => $this->determineValidPhone($billing_address->phone, $billing_address->phone_mobile), 'billing_address' => $params_billing_address, 'shipping_address' => $params_shipping_address); $items = $this->addCommodities($cart, $shipping_cost, $usd); // convert the currency $cart_currency = new Currency($cart->id_currency); if ($cart_currency->iso_code != 'IDR') { // check whether if the IDR is installed or not if (Currency::exists('IDR', null)) { // use default rate if (version_compare(Configuration::get('PS_VERSION_DB'), '1.5') == -1) { $conversion_func = function ($input) use($cart_currency) { return Tools::convertPrice($input, new Currency(Currency::getIdByIsoCode('IDR')), true); }; } else { $conversion_func = function ($input) use($cart_currency) { return Tools::convertPriceFull($input, $cart_currency, new Currency(Currency::getIdByIsoCode('IDR'))); }; } } else { // use rate $conversion_func = function ($input) { return $input * intval(Configuration::get('VT_KURS')); }; } foreach ($items as &$item) { $item['price'] = intval(round(call_user_func($conversion_func, $item['price']))); } } else { if ($cart_currency->iso_code == 'IDR') { foreach ($items as &$item) { $item['price'] = intval(round($item['price'])); } } } $this->validateOrder($cart->id, Configuration::get('VT_ORDER_STATE_ID'), $cart->getOrderTotal(true, Cart::BOTH), $this->displayName, NULL, $mailVars, (int) $currency->id, false, $customer->secure_key); $gross_amount = 0; unset($item); foreach ($items as $item) { $gross_amount += $item['price'] * $item['quantity']; } $isBniInstallment = Configuration::get('ENABLED_BNI_INSTALLMENT') == 1; $isMandiriInstallment = Configuration::get('ENABLED_MANDIRI_INSTALLMENT') == 1; $warning_redirect = false; $fullPayment = true; $installment_type_val = Configuration::get('VT_ENABLE_INSTALLMENT'); $param_required; switch ($installment_type_val) { case 'all_product': if ($isBniInstallment) { //$bni_term2 = $this->getTermInstallment('BNI'); $a = Configuration::get('VT_INSTALLMENTS_BNI'); $term = explode(',', $a); $bni_term = $term; //error_log(print_r($bni_term,true)); //error_log($bni_term,true); } if ($isMandiriInstallment) { $mandiri_term = $this->getTermInstallment('MANDIRI'); $a = Configuration::get('VT_INSTALLMENTS_MANDIRI'); $term = explode(',', $a); $mandiri_term = $term; //error_log($mandiri_term,true); //error_log(print_r($mandiri_term,true)); } $param_installment = array(); if ($isBniInstallment) { $param_installment['bni'] = $bni_term; } if ($isMandiriInstallment) { $param_installment['mandiri'] = $mandiri_term; } $param_required = "false"; $fullPayment = false; break; case 'certain_product': $param_installment = null; $products_cart = $cart->getProducts(); $num_product = count($products_cart); if ($num_product == 1) { $attr_product = explode(',', $products_cart[0]['attributes_small']); foreach ($attr_product as $att) { $att_trim = ltrim($att); $att_arr = explode(' ', $att_trim); //error_log(print_r($att_arr,true)); if (strtolower($att_arr[0]) == 'installment') { $fullPayment = false; $param_installment = array(); $param_installment[strtolower($att_arr[1])] = array($att_arr[2]); } } } else { $warning_redirect = true; $keys['message'] = 1; } $param_required = "true"; break; case 'off': $param_installment = null; break; } //error_log($param_installment,true); // $param_payment_option = array( // 'installment' => array( // 'required' => $param_required, // 'installment_terms' => $param_installment // ) // ); $params_all = array('payment_type' => Configuration::get('VT_PAYMENT_TYPE'), 'vtweb' => array('enabled_payments' => $list_enable_payments), 'transaction_details' => array('order_id' => $this->currentOrder, 'gross_amount' => $gross_amount), 'item_details' => $items, 'customer_details' => $params_customer_details); if ($gross_amount < 500000) { $warning_redirect = true; $keys['message'] = 2; } if (!$warning_redirect && ($isBniInstallment || $isMandiriInstallment) && !$fullPayment) { $params_all['vtweb']['payment_options'] = $param_payment_option; } if (Configuration::get('VT_API_VERSION') == 2 && Configuration::get('VT_PAYMENT_TYPE') != 'vtdirect') { try { // Redirect to Veritrans VTWeb page if ($this->isInstallmentCart($cart->getProducts()) || $installment_type_val == 'all_product') { $keys['isWarning'] = $warning_redirect; } else { $keys['isWarning'] = false; } $keys['redirect_url'] = Veritrans_Vtweb::getRedirectionUrl($params_all); } catch (Exception $e) { $keys['errors'] = $e->getMessage(); echo $e->getMessage(); } return $keys; } else { if (Configuration::get('VT_API_VERSION') == 2 && Configuration::get('VT_PAYMENT_TYPE') == 'vtdirect') { echo 'not yet implementation.'; exit; } else { echo 'The Veritrans API versions and the payment type is not valid.'; exit; } } }
/** * Expire transaction before it's setteled * @param string $id Order ID or transaction ID * @return mixed[] */ public static function expire($id) { return Veritrans_ApiRequestor::post(Veritrans_Config::getBaseUrl() . '/' . $id . '/expire', Veritrans_Config::$serverKey, false); }
/** * Capture pre-authorized transaction * * @param string $param Order ID or transaction ID, that you want to capture */ public static function capture($param) { $payloads = array('transaction_id' => $param); $result = Veritrans_ApiRequestor::post(Veritrans_Config::getBaseUrl() . '/capture', Veritrans_Config::$serverKey, $payloads); return $result; }
public static function cancel($id) { return Veritrans_ApiRequestor::post(Veritrans_Config::getBaseUrl() . '/' . $id . '/cancel', Veritrans_Config::$serverKey, false)->status_code; }