Пример #1
0
<?php

include dirname(__FILE__) . '/../config/config.inc.php';
include dirname(__FILE__) . '/../init.php';
include dirname(__FILE__) . '/../modules/netaxept/netaxept.php';
try {
    $mod = new Netaxept();
    $wsdl_url = $mod->getNetaxeptWsdlUrl();
    $sql = "\n select\n  *\n from\n  (select\n    h1.*\n   from\n    order_history h1\n    left outer join order_history h2 on\n      h1.id_order = h2.id_order\n      and h1.date_add < h2.date_add\n   where\n    h2.date_add is null) as s\n  join order_state_lang as l on\n   s.id_order_state = l.id_order_state\n   and l.id_lang = 1\n   and l.name = 'Awaiting fund transfer'\n  join orders o on\n   o.id_order = s.id_order\n  join currency c on\n   o.id_currency = c.id_currency;\n";
    $rows = Db::getInstance()->ExecuteS($sql);
    foreach ($rows as $row) {
        $line = "";
        foreach ($row as $key => $value) {
            $line .= "{$key}={$value} ";
        }
        echo "Charging for order: {$line}\n";
        $mid_token = $mod->getMidToken($row['iso_code']);
        $token = $mid_token['token'];
        $merchant_id = $mid_token['merchant_id'];
        $capture_request = array("token" => $token, "merchantId" => $merchant_id, "transactionId" => $row['payment_reference'], "description" => 'Withdrawal', "transactionAmount" => intval(floatval($row['total_paid_real']) * 100), "transactionReconRef" => 'Withdrawal');
        $client = new SoapClient($wsdl_url, array('trace' => true, 'exceptions' => true));
        try {
            $error = null;
            $response = $client->__call('Capture', array("parameters" => $capture_request));
            if ($response->CaptureResult->ResponseCode != 'OK') {
                $error = $response->CaptureResult->ResponseCode + ": " + $response->CaptureResult->ResponseText;
            }
        } catch (Exception $e) {
            $error = $e->getMessage();
        }
        if ($error == null) {
Пример #2
0
function netaxept_validation()
{
    global $cart;
    global $currency;
    $err_msg = '';
    $result = false;
    $netaxept = new Netaxept();
    $mid_token = $netaxept->getMidToken($currency->iso_code);
    $token = $mid_token['token'];
    $merchant_id = $mid_token['merchant_id'];
    $confirmed = false;
    $authorized = false;
    $force = false;
    $customer = new Customer(intval($cart->id_customer));
    $retry_url = '<a href="' . __PS_BASE_URI__ . 'order.php?step=1">' . $netaxept->l('Try again') . '</a>';
    $error_99 = 'Payment failed, please contact your card issuer.';
    $error_17 = 'The transaction was cancelled by you.';
    //Continue only if BBSePay_transaction redir from BBS Terminal
    if (isset($_GET['BBSePay_transaction'])) {
        $bbsepay_transaction = $_GET['BBSePay_transaction'];
        $params = array("token" => "{$token}", "merchantId" => "{$merchant_id}", "transactionString" => "{$bbsepay_transaction}");
        $client = new SoapClient($netaxept->getNetaxeptWsdlUrl(), array('trace' => true, 'exceptions' => true));
        //process setup
        try {
            $result = $client->__call('ProcessSetup', array("parameters" => $params));
            $process_setup_result = $result->ProcessSetupResult;
            $transaction_id = $process_setup_result->TransactionId;
            $params_auth = array("token" => "{$token}", "merchantId" => "{$merchant_id}", "transactionId" => "{$transaction_id}");
        } catch (SoapFault $fault) {
            /*				print_r($fault);
            				die();*/
            //user cancelled
            if ($fault->detail->UserCancelledException->Result->ResponseCode == 17) {
                $err_msg = $error_17;
            } elseif ($fault->detail->BBSException->Result->ResponseText == 'Auth Reg Failure') {
                $err_msg = $error_99;
            }
        }
        if ($err_msg == '') {
            //authorize the transaction
            try {
                $result = $client->__call('Auth', array("parameters" => $params_auth));
            } catch (SoapFault $fault) {
                if ($fault->detail->BBSException->Result->ResponseText == 'Transaction already processed') {
                    $force = true;
                } else {
                    $err_msg = $error_99;
                }
            }
        }
        //check if authorized
        $tq_wsdl = $netaxept->getNetaxeptTqWsdlUrl();
        $tq_client = new SoapClient($tq_wsdl, array('trace' => true, 'exceptions' => true));
        if ($err_msg == '') {
            try {
                $tq_result = $tq_client->__call('Query', array("parameters" => $params_auth));
                if ($tq_result->QueryResult->Summary->Authorized === true) {
                    $authorized = true;
                }
            } catch (SoapFault $fault) {
                $err_msg = $error_99;
            }
        }
        if ($authorized && (stristr($result->AuthResult->ResponseCode, "OK") || $force)) {
            $total = $cart->getOrderTotalLC(true, 3);
            $mail_vars = array();
            $netaxept->validateOrder($cart->id, _PS_OS_PAYMENT_, $total, $netaxept->displayName, NULL, $mail_vars, $currency->id, false, $transaction_id);
            $confirmed = true;
        } else {
            echo $netaxept->l($err_msg);
            echo '<br />' . $retry_url;
        }
    } else {
        echo $netaxept->l('Payment error.');
        echo '<br />' . $retry_url;
    }
    if ($confirmed) {
        $order = new Order($netaxept->currentOrder);
        Tools::redirectLink(__PS_BASE_URI__ . 'order-confirmation.php?id_cart=' . $cart->id . '&id_module=' . $netaxept->id . '&id_order=' . $netaxept->currentOrder . '&key=' . $order->secure_key);
    }
}