[Решено] Прикрутить к сайту интернет-эквайринг от сбербанка

Доброго дня!

Нужно как можно скорее выполнить задачу по прикручиванию интернет-эквайринга от сбербанка к сайту. Напишите сколько будет стоить и сколько это займет времени?

Исполнитель найден: ppoulus

Задача выполнена!

8 комментариев

avatar
О себе
создание сайтов, продвижение в сети интернет
lifestyle-home.ru

Все нестандартные услуги по программированию/верстке/дизайну расцениваются по тарифу – 500 руб. в час., услуги по администрированию, настройке сервера/хостинга под сайт, и прочие работы на серверах — 700 руб. в час.

ок.
avatar
Нет желающих заработать?
avatar
На днях подобное реализовывал. Их инструкцию можно нафиг выкинуть. У них есть простой php скрипт, надо его просто запросить у банка, подставить там свои логин и пароль, настроить внешний вид формы.
Далее создается страница на сайте для оплаты, где вызывается сниппет с этим кодом. Далее, клиенту дается ссылка на страницу и номер счета. Клиент вводит номер счета и сумму и переходит на оплату.
Т.е. подключить сам скрипт оплаты не сложно. А вот как передавать данные для оплаты покупателем — зависит уже от вашего проекта.
avatar
Спасибо за совет! Попробую запросить, думаю в понедельник сбросят, вообще там как то все долго решается, по 2-3 дня ждешь когда ответят(
avatar
ну мне сначала отвечали в течении нескольких часов, потом вообще перестали отвечать. Последние вопросы без ответов остались. Проблема была с тем, чтобы передать описание заказа. Русский текст передается некорректно. Так и не сказали как это побороть.
avatar
Вот их скрипт
<?php

/**
 * ДАННЫЕ ДЛЯ ПОДКЛЮЧЕНИЯ К ПЛАТЕЖНОМУ ШЛЮЗУ
 *
 * USERNAME		Логин магазина, полученный при подключении.
 * PASSWORD		Пароль магазина, полученный при подключении.
 * GATEWAY_URL	Адрес платежного шлюза.
 * RETURN_URL	Адрес, на который надо перенаправить пользователя 
 *				в случае успешной оплаты.
 */
define('USERNAME', '***');
define('PASSWORD', '***');
define('GATEWAY_URL', '***');
define('RETURN_URL', '***');

/**
 * ФУНКЦИЯ ДЛЯ ВЗАИМОДЕЙСТВИЯ С ПЛАТЕЖНЫМ ШЛЮЗОМ
 * 
 * Для отправки POST запросов на платежный шлюз используется
 * стандартная библиотека cURL.
 *
 * ПАРАМЕТРЫ
 *		method		Метод из API.
 * 		data		Массив данных.
 *
 * ОТВЕТ
 *		response	Ответ.
 */
function gateway($method, $data) {
	$curl = curl_init(); // Инициализируем запрос
	curl_setopt_array($curl, array(
	    CURLOPT_URL => GATEWAY_URL.$method, // Полный адрес метода
	    CURLOPT_RETURNTRANSFER => true, // Возвращать ответ
	    CURLOPT_POST => true, // Метод POST
	    CURLOPT_POSTFIELDS => http_build_query($data) // Данные в запросе
	));
	$response = curl_exec($curl); // Выполненяем запрос
	
	$response = json_decode($response, true); // Декодируем из JSON в массив
	curl_close($curl); // Закрываем соединение
	return $response; // Возвращаем ответ
}

/**
 * ВЫВОД ФОРМЫ НА ЭКРАН
 */
if ($_SERVER['REQUEST_METHOD'] == 'GET' && !isset($_GET['orderId'])) {
	echo '
		<form method="post" action="/rest.php">
			<label>Order number</label><br />
			<input type="text" name="orderNumber" /><br />
			<label>Amount</label><br />
			<input type="text" name="amount" /><br />
			<button type="submit">Submit</button>
		</form>
	';
}

/**
 * ОБРАБОТКА ДАННЫХ ИЗ ФОРМЫ
 */
else if ($_SERVER['REQUEST_METHOD'] == 'POST') {
	$data = array(
		'userName' => USERNAME,
		'password' => PASSWORD,
		'orderNumber' => urlencode($_POST['orderNumber']), 
		'amount' => urlencode($_POST['amount']),
		'returnUrl' => RETURN_URL
	);

	/**
	 * ЗАПРОС РЕГИСТРАЦИИ ОДНОСТАДИЙНОГО ПЛАТЕЖА В ПЛАТЕЖНОМ ШЛЮЗЕ
	 *		register.do
	 * 
	 * ПАРАМЕТРЫ
	 *		userName			Логин магазина.
	 *		password			Пароль магазина.
	 *		orderNumber			Уникальный идентификатор заказа в магазине.
	 *		amount				Сумма заказа.
	 *		returnUrl			Адрес, на который надо перенаправить пользователя в случае успешной оплаты.
	 *
	 * ОТВЕТ
	 * 		В случае ошибки:
	 * 			errorCode		Код ошибки. Список возможных значений приведен в таблице ниже.
	 * 			errorMessage	Описание ошибки.
	 *
	 * 		В случае успешной регистрации:
	 * 			orderId			Номер заказа в платежной системе. Уникален в пределах системы.
	 * 			formUrl			URL платежной формы, на который надо перенаправить браузер клиента.
	 *
	 *	Код ошибки		Описание
	 *		0			Обработка запроса прошла без системных ошибок.
	 *		1			Заказ с таким номером уже зарегистрирован в системе.
	 *		3			Неизвестная (запрещенная) валюта.
	 *		4			Отсутствует обязательный параметр запроса.
	 *		5			Ошибка значения параметра запроса.
	 *		7			Системная ошибка.
	 */
	$response = gateway('register.do', $data);
	
	/**
	 * ЗАПРОС РЕГИСТРАЦИИ ДВУХСТАДИЙНОГО ПЛАТЕЖА В ПЛАТЕЖНОМ ШЛЮЗЕ
	 *		registerPreAuth.do
	 *
	 * Параметры и ответ точно такие же, как и в предыдущем методе.
	 * Необходимо вызывать либо register.do, либо registerPreAuth.do.
	 */
//	$response = gateway('registerPreAuth.do', $data);
	
	if (isset($response['errorCode'])) { // В случае ошибки вывести ее
		echo 'Ошибка #' . $response['errorCode'] . ': ' . $response['errorMessage'];
	} else { // В случае успеха перенаправить пользователя на плетжную форму
		header('Location: ' . $response['formUrl']);
		die();
	}
} 

/**
 * ОБРАБОТКА ДАННЫХ ПОСЛЕ ПЛАТЕЖНОЙ ФОРМЫ
 */
else if ($_SERVER['REQUEST_METHOD'] == 'GET' && isset($_GET['orderId'])){
	$data = array(
		'userName' => USERNAME,
		'password' => PASSWORD,
		'orderId' => $_GET['orderId']
	);
	
	/**
	 * ЗАПРОС СОСТОЯНИЯ ЗАКАЗА
	 *		getOrderStatus
	 *
	 * ПАРАМЕТРЫ
	 *		userName			Логин магазина.
	 *		password			Пароль магазина.
	 *		orderId				Номер заказа в платежной системе. Уникален в пределах системы.
	 * 
	 * ОТВЕТ
	 * 		ErrorCode			Код ошибки. Список возможных значений приведен в таблице ниже.
	 * 		OrderStatus			По значению этого параметра определяется состояние заказа в платежной системе. 
	 *							Список возможных значений приведен в таблице ниже. Отсутствует, если заказ не был найден.
	 *
	 *	Код ошибки		Описание
	 *		0			Обработка запроса прошла без системных ошибок.
	 *		2			Заказ отклонен по причине ошибки в реквизитах платежа.
	 *		5			Доступ запрещён;
	 *					Пользователь должен сменить свой пароль;
	 *					Номер заказа не указан.
	 *		6			Неизвестный номер заказа.
	 *		7			Системная ошибка.
	 *
	 *	Статус заказа	Описание
	 *		0			Заказ зарегистрирован, но не оплачен.
	 *		1			Предавторизованная сумма захолдирована (для двухстадийных платежей).
	 *		2			Проведена полная авторизация суммы заказа.
	 *		3			Авторизация отменена.
	 *		4			По транзакции была проведена операция возврата.
	 *		5			Инициирована авторизация через ACS банка-эмитента.
	 *		6			Авторизация отклонена.
	 */
	$response = gateway('getOrderStatus.do', $data);
	
	// Вывод кода ошибки и статус заказа
	echo '
		<b>Error code:</b> ' . $response['ErrorCode'] . '<br />
		<b>Order status:</b> ' . $response['OrderStatus'] . '<br />
	';
}

?>
avatar
ух… спасибо)
avatar
Здравствуйте.
Настройка:

В файле config.inc.php необходимо прописать

1. Логин и пароль api пользователя
2. Выбрать тестовая или продуктивная среда
Установка:
Для установки данного модуля необходимо:
* Распаковать архив и переместить содержимое архива в 'assets/snippets/rbsPay' Вашего сайта
* Перейти в административную панель CMS
* Перейти в меню `Элементы` — `Управление элементами` — `Сниппеты` — `Новый сниппет` и создать новый сниппет с названием `rbsPay`
* Вставить в поле `Код сниппета` созданного сниппета `rbsPay` следующий код из файла snippet.rbsPay.php:
```
<?php
include MODX_BASE_PATH. 'assets/snippets/rbsPay/rbsPay.snippet.php';
```
* Сохранить сниппет
* Создать ресурсы в дереве документов для сообщений об успешной оплате (ID2) и ошибке оплаты (ID3). Если необходимо, создать ресурс для оформления заказа без перехода к оплате (ID1)
* Создать, если еще не создан, новый ресурс(IDpay) для перехода к оплате в дереве документов. На нем разместить вызов сниппета в виде:
```
[!rbsPay?
&paymentSessionValue=`rbs`
&noPaymentPageId=`ID1`
&okPageId=`ID2`
&errorPageId=`ID3`
&sumMultiplier=`100`
&redirectTextTpl=`@CODE:
Для перехода к оплате нажмите кнопку

[+form+]
`
!]
```
* IDpay созданного ресурса указать в вызове сниппета eForm на странице оформления заказа, в параметре &gotoid.
* В файле assets/snippets/rbsPay/config.inc.php укажите корректные настройки аккаунта, полученные от поддержки банка

### Параметры сниппета

*&paymentSessionValue* — для указания метода оплаты из формы заказа. Если в форме заказа будет такой код:

```
Оплата картой банка
Оплата наличными

```

то для перехода к оплате сниппет будет ожидать, что пользователь выберет в форме значение _rbs_

Если из формы будет получено другое значение, пользователь будет перенаправлен на страницу с ID1

Если этот параметр не задан, переход к оплате будет происходить всегда.

*&noPaymentPageId* — задает ID страницы, на которую пользователь будет переправлен, если не требуется оплата через банк.

Если этот параметр не задан, будет использоваться при необходимости параметр &okPageId.

*&okPageId* — ID страницы, где будет показываться сообщение об успешной оплате. На этой странице ничего размещать не требуется, только текст по вашему усмотрению

*&errorPageId* — ID страницы, где будет показываться сообщение об ошибке оплаты. На этапе отладки тут можно разместить вызов сниппета:

```
[!rbsPay? &mode=`showError`!]
```

чтобы видеть ответ от платежного шлюза.

*&sumMultiplier* — множитель для суммы. Банк принимает к оплате сумму «в копейках».

По умолчанию в этом параметре используется 100, для перевода суммы из рублей (можно не указывать). Если множитель не нужен, укажите в этом параметре 1

*&redirectTextTpl* — шаблон вывода формы перехода к оплате. Саму форму нет необходимости «шаблонизировать», в этом параметре обязательно

должен быть плейсхолдер [+form+]. Если не указывать, будет показана только кнопка для перехода к оплате.
Ну и сам плагин от СБЕРА
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.