#1  
Old 01-05-2018, 12:57 PM
Vladimir T's Avatar
Vladimir T is offline
Ecwid Team
 
Join Date: Jun 2014
Posts: 1,013
Default

Подключение Эквида к LiqPay


Здравствуйте,

Текст ниже это инструкция от нашего пользователя Throrka по подключению платежной системы LiqPay к Эквиду.

Инструкция предоставляется как есть, без доработок с нашей стороны.



1. Начнём с настройки идем - панель управления - настройки - оплата - в Credit card выбираем Credit card: Authorize.Net SIM- далее в ней настройки:
\
API Login ID - брал любое число знаков 6

Transaction Key- брал любое число знаков 6

MD5 Hash Value- любое 16-ричное число до 20 знаков

Tranaction Type- Authorize and Capture

Advanced Settings-

Endpoint URL- сюда пишем адрес нашего скрипта пусть будет - http://сайт/liqpay.php положите или создайте liqpay.php в соответствующей папке (для ценителей тяжелой техники - место сайт пишем ваш сайт например vasja.mail.ru, а liqpay.php ложим в кореневую папку сайта )

Enable test mode - убираем галку (это для тех кто действиттельно пользуется Authorize для их тестов), впринципе можете оставить если вам нравиться.

2. Создаем liqpay.php следующего содержания:
Code:
<?php

require_once("config.php");

$liqpay_url="https://www.liqpay.com/?do=clickNbuy";

if (!isset($_REQUEST['x_invoice_num']) || !isset($_REQUEST['x_amount']))
{
 echo "<meta http-equiv='refresh' content='0; URL=$failure_url>";
 exit;
}

$order_id = $_REQUEST['x_invoice_num'];
$amount = $_REQUEST['x_amount'];

    $xml = "<request>      
		<version>1.2</version>
		<result_url>$callback_url</result_url>
    <server_url>$callback_url</server_url>
		<merchant_id>$liqpay_merchant_id</merchant_id>
		<order_id>$order_id</order_id>
		<amount>$amount</amount>
		<currency>$liqpay_currency</currency>
		<description>Dog-Nannies.com.ua</description>
		<default_phone></default_phone>
		<pay_way>$liqpay_method</pay_way> 
		</request>
		";
	
	$xml_encoded = base64_encode($xml); 
	$lqsignature = base64_encode(sha1($liqpay_signature.$xml.$liqpay_signature,1));

echo <<<EOT
<form action='$liqpay_url' name='process' method='POST'>
      <input type='hidden' name='operation_xml' value='$xml_encoded' />
      <input type='hidden' name='signature' value='$lqsignature' />
	<input type='submit' value='Pay'/>

<script type="text/javascript">
document.process.submit();
</script>
</form>
EOT;

?>
Можете заменить описание <description>Dog-Nannies.com.ua</description> на своё

Можете заменить Pay в <input type='submit' value='Pay'/> на своё (например Хром керилицу не читает)

3. Создаем config.php следующего содержания:
Code:
:
<?php

// Ваш ID указанный в панели управления в настройках Ecwid Authorize.Net SIM- впишите
$ecwid_x_login =  'ххххххх';

// Ваш MD5 указанный в панели управления в настройках Ecwid Authorize.Net SIM- впишите
$ecwid_hash_code =  'ххххххххх';

// URL по которому будет отосланна информация от Ликпея магазину впишите ваши цифры магазинна Eqwid- впишите
$ecwid_callback_url = "http://app.ecwid.com/authorizenet/номер_магазина";

// ваш мерчант  ID in liqpay- впишите
$liqpay_merchant_id='iххххххх';

// ваша подпись (signature) liqpay - впишите
$liqpay_signature="подпись";

// метод оплаты
$liqpay_method='card';

// номер телефона в liqpay - впишите
$liqpay_phone='+38066ххххххх';

// liqpay валюта
$liqpay_currency="UAH";

// URL на который перекинет после оплаты - впишите 
$callback_url = "http://сайт/script_post.php";

// страница ошибки - впишите сайт
$failure_url = "http://сайт/2.php";

?>
3. Создаем script_post.php следующего содержания:

Code:
:
<?php

require_once("config.php");

if (!isset($_POST['operation_xml']))
{
 echo "<meta http-equiv='refresh' content='0; URL=$failure_url>";
 exit;
}
function parseTag($rs, $tag) {            
   $rs = str_replace("\n", "", str_replace("\r", "", $rs));
   $tags = '<'.$tag.'>';
   $tage = '</'.$tag;
   $start = strpos($rs, $tags)+strlen($tags);
   $end = strpos($rs, $tage);
   return substr($rs, $start, ($end-$start)); 
 }
$resp = base64_decode($_POST['operation_xml']);

$insig = $_POST['signature'];
$signature= $liqpay_signature;

$payrez = array();
$payrez['order_id'] = parseTag($resp, 'order_id');
$payrez['status'] = parseTag($resp, 'status');
$payrez['response_description'] = parseTag($resp, 'response_description');
$payrez['transaction_id'] = parseTag($resp, 'transaction_id');
$payrez['pay_details'] = parseTag($resp, 'pay_details');
$payrez['pay_way'] = parseTag($resp, 'pay_way');
$payrez['amount'] = parseTag($resp, 'amount');
$order_id = $payrez['order_id'];
$status = $payrez['status'];
$response_description = $payrez['response_description'];
$transaction_id = $payrez['transaction_id'];
$pay_details = $payrez['pay_details'];
$pay_way = $payrez['pay_way'];
$amount= $payrez['amount'];

file_put_contents('file.txt',var_export($resp,true));

$gensig = base64_encode(sha1($signature.$resp.$signature,1));


file_put_contents('file.txt',var_export($insig,true));

file_put_contents('file.txt',var_export($gensig,true));

//если оплата - неудачная, кидаем юзера на страницу ошибки
if ($status == "failure")
{
        echo "<meta http-equiv='refresh' content='0; URL=$failure_url>";
        exit;
}

//ЗДЕСЬ МЫ ОБРАБАТЫВАЕМ ПЕРЕМЕННЫЕ, ЗАПИСЫВАЕМ В БД, ШЛЕМ ПИСЬМА И Т.Д.

// x_response_code must = 1 for the cart to update with an approved sale, your script should determine this before hand
$x_response_code = '1';
// x_response_reason_code must = 1  for the cart to update with an approved sale, your script should determine this before hand
$x_response_reason_code = '1';
// your script needs to obtain the banks reference number and put that into this variable
// change banks reference to the reference from the merchant
$x_trans_id = $transaction_id;
// your script needs to supply the original invoice number that you requested from ecwid at the beginning of the process
// change invoice number to the original number you received
$x_invoice_num = $order_id;
// change total paid to the total paid. Please note it must match the original total that ecwid sent at the beginning
$x_amount = $amount;

file_put_contents('text.txt', $order_id ."\n", FILE_APPEND); 
file_put_contents('text.txt', $status ."\n", FILE_APPEND); 
file_put_contents('text.txt', $amount ."\n", FILE_APPEND); 
file_put_contents('text.txt', $liqpay_signature ."\n", FILE_APPEND);
file_put_contents('text.txt', $x_amount."\n", FILE_APPEND);
file_put_contents('text.txt', $test ."\n", FILE_APPEND);

// Do not change anything below this line, other than your_store_id_#

$string = $ecwid_hash_code.$ecwid_x_login.$x_trans_id.$x_amount;
$x_MD5_Hash = md5($string);
$datatopost = array (
 "x_response_code" => $x_response_code,
 "x_response_reason_code" => $x_response_reason_code,
 "x_trans_id" => $x_trans_id,
 "x_invoice_num" => $x_invoice_num,
 "x_amount" => $x_amount,
 "x_MD5_Hash" => $x_MD5_Hash,
);

file_put_contents('file2.txt',var_export($datatopost,true));

if ($insig == $gensig)
{
 $ch = curl_init($ecwid_callback_url);
 
 curl_setopt($ch, CURLOPT_POST, 1);
 curl_setopt($ch, CURLOPT_POSTFIELDS, $datatopost);
 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  
 $response = curl_exec($ch);
 curl_close($ch);

 file_put_contents('text.txt', $new ."\n", FILE_APPEND); 
 file_put_contents('text.txt', $status ."\n", FILE_APPEND); 
 file_put_contents('text.txt', $amount ."\n", FILE_APPEND); 
 file_put_contents('text.txt', $fee ."\n", FILE_APPEND);
 file_put_contents('text.txt', $x_amount."\n", FILE_APPEND);
 file_put_contents('text.txt', $test ."\n", FILE_APPEND);
}

echo $response;

?>
4. Кладем файлы соответственно в корень (либо меняем как угодно добавив соответственно пути в сами файлы ).
Создаем соответствующие файлы file.txt и text.txt в которые будут записывться проверки в корне сайта и даем права на запись- это по желанию.

Пробуем, отписываемся.

Большое спасибо Jason Fazey- за идею, EraZer- за причесывание кода, ensik- за алгоритм разбора ответа и Гуглу - пожизни.

Кто там хотел скидываться велкам-
можете кликнуть по банеру,
можете купить "корм для пингвина" и тем самым увидеть как оно работает.
Кошельки для помощи голодным пингвинам:
Z172201217118
U344930513911
R238717170204

Last edited by Marina Dryantsova; 01-05-2018 at 01:29 PM.
The Following User Says Thank You to Vladimir T For This Useful Post:
DmitryDavydov (01-08-2018)
Closed Thread

Tags
liqpay

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump


All times are GMT. The time now is 12:58 AM.
Powered by vBulletin® Version 3.8.11. Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.