0 / 0 / 0
Регистрация: 23.05.2018
Сообщений: 2
1

Tinkoff. Способ оплаты

23.05.2018, 17:20. Показов 1578. Ответов 3
Метки нет (Все метки)

Есть сайт wonderwander-shop.com на cms cs cart. На сайте 2 языка: русский и английский. При оплате заказа картой редиректит на русскую страницу оплаты тинькофф с обеих версий. Если в tinkoff.php присвоить language значение en, то с обеих версий будет редиректить на английскую. Как я понял, нужно зареквестить язык и добавить условие, но php знаком поверхностно, поэтому не знаю, как это прописать. Может кто помочь? Пишите, что нужно, скину.
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
<?php
 
use Tygh\Registry;
 
if (!defined('BOOTSTRAP')) { die('Access denied'); }
// define('__PATH','/var/www/vhosts/wonderwander-shop.com/httpdocs/app/payments/tinkoff/');
define('__PATH',dirname(__FILE__) . '/tinkoff/');
 
file_put_contents(__PATH.'log.txt', date('Y.m.d H:i:s') . ' ' ."\r\n",FILE_APPEND);
 
/*
 
 
$order_id = '';
if(isset($_REQUEST['OrderId'])){
    $order_id = (int) $_REQUEST['OrderId'];
}
if(isset($_REQUEST['Success'])){
    $success = $_REQUEST['Success'];
}
 
file_put_contents(__PATH.'log.txt', date('Y.m.d H:i:s') . ' success ' .$success ."\r\n",FILE_APPEND);
 
 
if($success){ 
    
    file_put_contents(__PATH.'log.txt', date('Y.m.d H:i:s') . ' redirect ' .$order_id ."\r\n",FILE_APPEND);
    // $order_info = fn_get_order_info($order_id);
 
    print_r($auth);
 
        // echo " ";
        // fn_order_placement_routines('route', $order_id);
 
    // print_r(Tygh::$app['session']['cart']);
    // fn_clear_cart($_SESSION['cart']);
    // fn_clear_cart(Tygh::$app['session']['cart']);
    // header('Location:' . 'https://wonderwander-shop.com/index.php?dispatch=checkout.complete&order_id='.$order_id);
    die('...');
}
*/
 
 
 
 
 
 
 
 
require_once dirname(__FILE__) . '/tinkoff/TinkoffMerchantAPI.php';
require_once dirname(__FILE__) . '/tinkoff/Debug.php';
 
// file_put_contents(__PATH.'log.txt', date('Y.m.d H:i:s') . ' libs ' ."\r\n",FILE_APPEND);
 
if (!defined('BOOTSTRAP')) { die('Access denied'); }
 
 
// file_put_contents(__PATH.'log.txt', date('Y.m.d H:i:s') . ' BOOTSTRAP ' ."\r\n",FILE_APPEND);
 
if (defined('PAYMENT_NOTIFICATION')) {
    
    
file_put_contents(__PATH.'log.txt', date('Y.m.d H:i:s') . ' PAYMENT_NOTIFICATION ' ."\r\n",FILE_APPEND);
 
 
    if(isset($_REQUEST['OrderId'])){
        $order_id = (int) $_REQUEST['OrderId'];
    }
    else{
        $order_id = $_COOKIE['tinkoff_order_id'];
    }
 
    $order_info = fn_get_order_info($order_id);
    $processor_data = $order_info['payment_method'];
 
    if ($mode == 'notification') {
        $_POST['Password'] = $processor_data['processor_params']['secret_key'];
        ksort($_POST);
        $sorted = $_POST;
        $original_token = $sorted['Token'];
        unset($sorted['Token']);
        $values = implode('', array_values($sorted));
        $token = hash('sha256', $values);
 
//    //log
   $log = $_POST;
   $log['token'] = $token;
   $log['original_token'] = $original_token;
   file_put_contents(__PATH.'log.txt', date('Y.m.d H:i:s') . ' ' . json_encode($log)."\r\n",FILE_APPEND);
   
        if($token == $original_token){
            if($_POST['Status'] == 'AUTHORIZED' && $order_info['status'] == 'P'){
                file_put_contents(__PATH.'log.txt', date('Y.m.d H:i:s') . ' OK1'."\r\n",FILE_APPEND);
                die('OK');
            }
            switch ($_POST['Status']) {
                case 'AUTHORIZED': $order_status = 'O'; break; /*Деньги на карте захолдированы. Корзина очищается.*/
                case 'CONFIRMED': $order_status = 'P'; break; /*Платеж подтвержден.*/
                case 'CANCELED': $order_status = 'I'; break; /*Платеж отменен*/
                case 'REJECTED': $order_status = 'F'; break; /*Платеж отклонен.*/
                case 'REVERSED': $order_status = 'D'; break; /*Платеж отменен*/
                case 'REFUNDED': $order_status = 'I'; break; /*Произведен возврат денег клиенту*/
            }
            if(!isset($order_status)){
                file_put_contents(__PATH.'log.txt', date('Y.m.d H:i:s') . ' NOTOK1'."\r\n",FILE_APPEND);
                die('NOTOK');
            }
            fn_change_order_status($order_id, $order_status);
            if($order_status == 'P'){
                $pp_response = array();
                $pp_response['order_status'] = $order_status;
                $pp_response['reason_text'] = 'Success payment';
                // $pp_response['transaction_id'] = isset($_POST['paymentId']) ? $_POST['paymentId'] : '';
                $pp_response['transaction_id'] = isset($_POST['PaymentId']) ? $_POST['PaymentId'] : '';
                file_put_contents(__PATH.'log.txt', date('Y.m.d H:i:s') . ' fn_finish_payment '. $pp_response['transaction_id']."\r\n",FILE_APPEND);
                fn_finish_payment($order_id, $pp_response);
            }
            file_put_contents(__PATH.'log.txt', date('Y.m.d H:i:s') . ' OK2'."\r\n",FILE_APPEND);
            die('OK');
        }
        else{
            file_put_contents(__PATH.'log.txt', date('Y.m.d H:i:s') . ' NOTOK2'."\r\n",FILE_APPEND);
            die('NOTOK');
        }
    }
    elseif ($mode == 'success' || $mode == 'failed') {
        file_put_contents(__PATH.'log.txt', date('Y.m.d H:i:s') . ' fn_order_placement_routines1'."\r\n",FILE_APPEND);
        fn_order_placement_routines('route', $order_id, false);
    }
 
} else {
    
    file_put_contents(__PATH.'log.txt', date('Y.m.d H:i:s') . ' NO PAYMENT_NOTIFICATION' ."\r\n",FILE_APPEND);
 
    $order_info = fn_get_order_info($order_id);
    $arrFields = array(
        'OrderId'  => $order_info['order_id'],
        'Amount'   => $order_info['total'] * 100,
        'DATA'     => 'Email='.$order_info['email'],
    );
 
    $Tinkoff = new TinkoffMerchantAPI( $processor_data['processor_params']['merchant_id'], $processor_data['processor_params']['secret_key'], $processor_data['processor_params']['gateway'] );
    $request = $Tinkoff->buildQuery('Init', $arrFields);
    $request = json_decode($request);
    setcookie('tinkoff_order_id', $order_id, 0, '/');
    setcookie('tinkoff_redirect', (isset($_SERVER['HTTPS']) ? 'https://' : 'http://').$_SERVER['HTTP_HOST'].'/index.php?dispatch=payment_notification.success&payment=tinkoff', 0, '/');
    if(isset($request->PaymentURL)){
        fn_change_order_status($order_id, 'O');
        file_put_contents(__PATH.'log.txt', date('Y.m.d H:i:s') . ' redirect '.$order_id . ' '  . $request->PaymentURL ."\r\n",FILE_APPEND);
        header('Location: '. $request->PaymentURL);
    }
    else{
        fn_change_order_status($order_id, 'F');
        file_put_contents(__PATH.'log.txt', date('Y.m.d H:i:s') . ' fn_order_placement_routines2'."\r\n",FILE_APPEND);
        fn_order_placement_routines('route', $order_id, false);
    }
}
 
exit;
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
23.05.2018, 17:20
Ответы с готовыми решениями:

magento добавить способ оплаты (не плат системы, просто способ)
доброе утро. надо добавить при заказе выбор наличные или безнал. Искал по этому поводу, везде...

Способ оплаты домена
Привет ,форумчане) Решил заняться приобретением домена,брать думаю у RU-CENTER(как думаете хороший...

Способ оплаты в оформлении заказа
Доброго времени суток! При оформлении заказа существует 2 типа оплаты: &quot;Наличные курьеру&quot;, &quot;Оплата...

Способ оплаты в Google Wallet
Подскажите пожалуйста что за странная надпись на красном фоне?, ведь при регистрации кредитная...

3
ytf
276 / 259 / 185
Регистрация: 15.08.2017
Сообщений: 1,483
24.05.2018, 10:08 2
а заказы у сайта есть? скорее всего покупатели пользуются только гипермаркетами одежды
0
0 / 0 / 0
Регистрация: 23.05.2018
Сообщений: 2
24.05.2018, 11:54  [ТС] 3
есть
0
ytf
276 / 259 / 185
Регистрация: 15.08.2017
Сообщений: 1,483
24.05.2018, 15:03 4
возможно выбранный язык хранится в переменной $_GET, сделайте вывод

var_dump($_GET);

и посмотрите, в каком из элементов хранится выбор языка

либо

var_dump($_SESSION);

либо

var_dump($_COOKIE);

либо можно с помощью geoip определить страну ip адреса и соответственно применить язык
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.05.2018, 15:03
Помогаю со студенческими работами здесь

Не могу разобраться с оплатой Tinkoff
Имеется minishop2 дополнение Tinkoff Payment System На данный момент не пойму как его...

Удалить пуш-уведомления в браузере от банка tinkoff
Сдуру зашла на их сайт. Думала, приличная компания. Похоже, ошиблась. Никаких согласий ни на...

Вычисление размера оплаты за электроэнергию, если известны показания счетчика на начало и конец периода оплаты и тариф.
Напишите программу вычисления размера оплаты за потребленную электроэнергию, если известны...

Определение статуса оплаты в зависимости от суммы оплаты
Добрый день. Имеется таблица учета оплат по клиенту. Возможно ли получить автоматически данные по...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru