Подключение платежной системы 2checkout к вам на сайт

Хостинг с которым я работаю. Так что это даже как-бы не реклама

Хостинг unihost.com плюс домен бесплатно
Пользовательский поиск

Понравилось? Поделитесь с знакомыми и друзьями!

2checkout direct checkout

Содержимое

Предисловие

Все что кажется сложным, зачастую только кажется таким. Вот тоже самое можно сказать и про платежную систему 2checkout. Те сайты что работают с буржуйными платежами очень часто подключены к данной платежной системе. Я расскажу в кратце как работать с этой платежной системой. Особенно с учетом англоязычного саппорта, нашим разработчикам это должно немного помочь.

Итак, 2checkout, имеет достаточно обширную документацию по своему API и даже несколько подготовленных заранее библиотек для разных языков программирования. Но реально не хватает кратеньких примеров. Так вот, все что вам нужно для того чтобы прикрутить эту систему:

Регистрация и одобрение.

Тут я даже останавливаться на этом шаге не буду, не технический и по этому моменту информации хватает. После регистрации вам нужно чтобы ваш аккаунт подтвердили.

Direct и не Direct

Приблизительная разница в том что при Direct платеже вы сами спрашиваете пользователя все данные нужные для платежа, а остальная часть платежа проходит в iframe. При не Direct платеже вы пользователя пересылаете на страницу платежки, которая сама спрашивает клиента о его данных и уже по завершении платежа возвращает его на нужную вам страницу со всеми данными платежа.

Прикручиваем саму платежку

Вам нужно разместить саму форму платежной системы у себя на сайте. Используем вариант не Direct платежа:

<form method="post" action='https://www.2checkout.com/checkout/purchase'>
                <p>
                    <input type='hidden' name='sid' value='{$sid}' />
                    <input type='hidden' name='mode' value='{$mode}' />
                    <input type='hidden' name='li_0_type' value='{$type}' />
                    <input type='hidden' name='li_0_name' value='{t lang=$language}{$name}{/t}' />
                    <input type='hidden' id="price" name='li_0_price' value='1.00' />
                    <input type='hidden' name='demo' value='{$demo}' />
                    <input type="hidden" name="user_id" value="{$current_user->id }" >
                    <input type="hidden" name="email" value="{$current_user->email }" >
                    <input type="hidden" name="x_receipt_link_url" value="{$link}" >
                    <input type="text" name="sum" id="sum" onkeyup="$('#price').val($(this).val())"/>
                    <input type="submit" value="{t lang=$language}{$button}{/t}" />
                </p>
            </form>

Как видите, форма у нас отправляет POST запрос по адресу https://www.2checkout.com/checkout/purchase, передавая данные:
sid - ваш ID как продавца зарегистрированного в системе 2checkout
mode - режим продажи, CC - режим 2checkout вполне зачастую всех устраивает, если нет, посмотрите в документации.
demo - демо режим платежей. Y - включен, N - выключен. Если не хотите ненароком потратить ту или иную сумму своих денег при тестировании то советую включить на время тестирования. Есть один момент который при этом режиме стоит учесть, но о нем ниже по тексту.
user_id это id нашего пользователя. На самом деле все дополнительные данные которые вы хотите чтобы система вернула вам, можете отправлять в форме. После выполнения платежа система пост запросом перенаправит пользователя на страницу указанную в x_receipt_link_url, либо в настройках сайта в системе 2checkout. У меня это та же страница с которой пользователь делал платеж.
email - аналогично user_id, дополнительная информация в платеже.

li_0_price, li_0_name, li_0_type непосредственно поля относящиеся к самому товару что человек оплачивает, в type достаточно указать product(подробнее можно прочесть в документации платежки)

Если вам нужно указать несколько товаров, вы каждый товар нумеруете, как пример li_0_price, li_1_price, li_2_price...

У нас есть еще две строки в этом коде:

<input type='hidden' id="price" name='li_0_price' value='1.00' />
<input type="text" name="sum" id="sum" onkeyup="$('#price').val($(this).val())"/>

Так как все передаваемые данные у нас должны быть hidden, а в моем случае клиент пополняет баланс и должен иметь возможность сам ввести нужную сумму денег, то текстовое поле с простеньким jquery кодом просто заполняет скрытое поле теми данными что пользователь ввел в поле sum.

Ну и submit для отправки формы, куда же без него. Касательно подключения формы платежки все.

Обработка платежа вашим сайтом после оплаты

Теперь перейдем к обработке платежа. Сам код тоже довольно прост:

if ($this->request->method() == Request::POST){ //если пришел POST запрос
            foreach ($this->request->post() as $k => $v) {
//берем массив POST и загоняем его в массив $params
                $params[$k] = $v;
            }

            $hashSecretWord = "Ключ к нашему сайту установленный в личном кабинете";
            $hashSid = $params['sid']; // из POST запроса получаем наш же ID как продавца
            $hashTotal = $params['total']; //полную сумму платежа
            $hashOrder = $params['order_number']; //ну и ID нашего заказа, его генерирует 2checkout
/*
Вот здесь тот момент с demo о котором я упоминал выше. Для demo режима при сравнении хешей order_number должен быть 1, для реального платежа он должен быть тем который пришел у нас в POST запросе.
*/
            if (!empty($params["demo"]) && $params["demo"]=="Y"){
                $StringToHash = mb_strtoupper(md5($hashSecretWord . $hashSid . 1 . $hashTotal));
            }
            else
            {
                $StringToHash = mb_strtoupper(md5($hashSecretWord . $hashSid . $hashOrder . $hashTotal));
            }
            if ($StringToHash != $params['key']) {
//хеши не совпали, реагируем как-то на это
            } else {
               //хеши совпали, проверяем включен ли у нас demo режим
                if (empty($params["demo"]) || $params["demo"]=="N" ){
/*
Если выключен, то после оплаты мы должны поменять статус платежа и отправить пользователю
или что-то в этом роде
*/
                }
else{
/*
если это был демо-платеж то денег мы не получили, но можем как-то отреагировать
*/
}
            }
        }

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

Пишите комментарии, замечания и слова благодарности если вам это помогло.

Категория: 

Share/Save

Комментарии

VK.com


Facebook

Для приёма платежей в интернет-магазине можно использовать систему IntellectMoney для приема платежей.Предлагаем несколько десятков способов оплаты. Комиссия ниже, чем у других компаний. Все готовые решения и подробные инструкции можно найти на нашем сайте.Подключение магазина https://intellectmoney.ru/ru/landing/index.php?utm_source=lsoft.daraba.r...

Учтем на будущее, пока же используем PayPro и прямые платежи через WebMoney. От 2Checkout отказались.

Never Give UP!