public function createDisposition($cart) { $currency = new Currency((int) $cart->id_currency); $language = $this->_getSupportedLanguageIsoById($this->context->language->id); $mid = Configuration::get($this->prefix . 'MERCHANT_ID_' . $currency->iso_code); $mtid = $cart->id . '-' . time(); $amount = number_format((double) $cart->getOrderTotal(true, Cart::BOTH), 2, '.', ''); $currency_iso = $currency->iso_code; $business_type = Configuration::get($this->prefix . 'BUSINESS_TYPE'); $reporting_criteria = ''; $hash = md5(Configuration::get($this->prefix . 'SALT') + $amount + $currency_iso); $ok_url = Tools::getShopDomainSsl(true, true) . _MODULE_DIR_ . $this->name . '/payment.php?hash=' . $hash; $nok_url = Tools::getShopDomainSsl(true, true) . (_PS_VERSION_ < '1.5') . __PS_BASE_URI__ . '/order.php?step=3' ? '' : 'index.php?controller=order&step=3'; list($return_code, $error_code, $message) = PSCPrepaidServicesAPI::createDisposition($this->getAPIConfiguration($currency_iso), $mid, $mtid, $amount, $currency_iso, $ok_url, $nok_url, $business_type, $reporting_criteria); if ($return_code == 0) { PSCDisposition::deleteByCartId((int) $cart->id); // Avoid duplicate disposition (canceled orders in CT for example) PSCDisposition::create((int) $cart->id, $mtid, $amount, $currency_iso); $message = $this->getPaymentUrlBase() . '?currency=' . $currency->iso_code . '&mid=' . $mid . '&mtid=' . $mtid . '&amount=' . $amount . '&language=' . $language; } return array('return_code' => $return_code, 'message' => $message); }