Какой рейтинг вас больше интересует?
|
Код обработки платежей для Новой Интеркассы2013-12-10 13:29:44 (читать в оригинале)Всем привет. Сегодня очень короткий и очень полезный пост о приёме платежей с помощью сервиса Интеркасса. Интеркасса недавно запустила новую версию с крутым и удобным дизайном, а также абсолютно новыми протоколами. Обитает она пока на поддомене new.interkassa.com в бета-версии и активно предлагает пользователям переход в новый интерфейс. Правда почему-то в уведомлении забыли написать, что нужно изменить запросы. Из-за этого оплата просто перестаёт работать. Надо сказать, что теперь стало гораздо удобней тестировать приём оплаты и другие функции. И взаимодействие стало намного более функциональным и понятным. Чего не скажешь о Робокассе, которая заставляет изрядно попортить себе нервы, только для того, чтобы не брать комиссии с плательщиков, а удерживать её с продавца. Недавно имел удовольствие ковыряться с этим вопросом. В Интеркассе этот вопрос решается парой кликов в админке. Но это лирика. Перейдём к действительно важным вещам. А точнее к паре функций, которых вполне достаточно, чтобы автоматизировать приём оплаты в небольшом интернет-магазине. Я не хотел написать полный класс взаимодействий с сервисом и использовать по максимуму все возможности (которых немало). Нет. Меня интересует лишь простейшие функции, которые позволяют принимать платёж и проверять результат оплаты. Вот эти функции. Пользуйтесь на здоровье. /** * Функция инициализирует оплату * * @return string $payment_form */ public function InitiatePayment($shop_id, $sum, $payment_id, $payment_desc) { $payment_form = ' <form name="payment" action="https://sci.interkassa.com/" method="post" enctype="utf-8"> <input type="hidden" name="ik_co_id" value="' . $shop_id . '"> <input type="hidden" name="ik_am" value="' . $sum . '"> <input type="hidden" name="ik_pm_no" value="' . $payment_id . '"> <input type="hidden" name="ik_desc" value="' . $payment_desc . '"> <input type="submit" value="Оплатить"> </form>'; return $payment_form; }, где$shop_id - идентификатор кассы$sum - сумма платежа (в формате 0.00)$payment_id - номер заказа$payment_desc - описание платежа /** * Функция проверяет результат оплаты * * @return boolean */ public function CheckResult($shop_id, $secret_key, $post, $test_key) { if ($post['ik_co_id'] != $shop_id) return false; $ik_key = ($post['ik_pw_via'] == 'test_interkassa_test_xts') ? $test_key : $secret_key; $data = array(); foreach ($post as $key => $value) { if (!preg_match('/ik_/', $key)) continue; $data[$key] = $value; } $ik_sign = $data['ik_sign']; unset($data['ik_sign']); ksort($data, SORT_STRING); array_push($data, $ik_key); $signString = implode(':', $data); $sign = base64_encode(md5($signString, true)); if ($sign === $ik_sign && $data['ik_inv_st'] == 'success') return true; else return false; }, где$shop_id - идентификатор кассы$secret_key - секретный ключ$post - массив $_POST$test_key - тестовый ключ Код абсолютно рабочий. Уже принял несколько платежей с его помощью. Именно эти функции уже успешно используются в JSale и скоро попадут в JCart. С уважением, Алексей Опанасенко aka Never Lex.
|
Категория «Download»
Взлеты Топ 5
Падения Топ 5
Популярные за сутки
|
Загрузка...
взяты из открытых общедоступных источников и являются собственностью их авторов.