College DorStroy
Welcome To College DorStroy


*********************************************************************************************************************************

fagg.ru бесплатная панель освобождающихся доменов. http://ft-online.info/shop/ платная панель доменов



*********************************************************************************************************************************

ROBOXchange Cash Register
(Описание интерфейсов)

Оглавление

Общее описание


Интерфейсы сервиса Cash Register предоставляют возможность получения Клиентом сервиса (магазином
) средств от Покупателя в предпочитаемой им электронной валюте в заданном им количестве (объеме).
Покупатель выбирает в он-лайн магазине Клиента товар, магазин подсчитывает сумму Заказа в предпочитаемой
Продавцом валюте и посылает запрос к серверу ROBOXchange.com , на котором расположен сервис Cash Register.
Система возвращает серверу Клиента html код формы выбора валюты
оплаты или кнопки оплаты, который используется на странице его сайта.
Покупатель выбирает на сайте Клиента или на странице Сервиса Cash Register валюту платежа и приступает к
платежу, нажав на кнопку оплаты. Сразу после оплаты Заказа Покупателем в выбранной им валюте производится
конвертация полученных средств в валюту, предпочитаемую Продавцом и исходящий платеж в этой валюте на его
счет в соответствующей платежной системе, указанный при регистрации.
После завершения операции в зависимости от ее исхода Покупатель перенаправляется на страницу
исполненного платежа (в случае если он осуществил оплату), либо на страницу неисполненного (если он отказался от оплаты).
Сервис Cash Register построен таким образом, что, в отличие от случая "подключения"
непосредственно к серверу платежной системы, отпадает необходимость в усиленной защите данных в процессе обмена.
Для интеграции кассы Cash Register в сайт магазина, он-лайн казино или сайт предоставляющий платный доступ к
контенту нет необходимости в установлении исходящих SSL соединений, подключении дополнительных компонент
на сервере Клиента и т.п. В этом заключено главное преимущество применения системы Cash Register.
Номер счета Клиента (магазина) на который будет поступать оплата товаров и/или услуг Продавца защищен
от изменения, он задается только один раз - в момент регистрации Продавца в Сервисе. Это позволяет избежать
одновременно и краж выручки посторонними лицами и любых
злоупотреблений с денежными средствами со стороны обслуживающего персонала магазина.
Нежелательна возможность самостоятельной инициации процедуры оплаты (путем ввода url с параметрами),
иначе говоря, прежде чем пользователь станет оплачивать товар магазин должен сформировать у себя запись о
начале процедуры оплаты (Заказ), определить требуемую сумму и отправить пользователя на оплату именно этого
Заказа, с конкретной суммой. Реализовано это путем формирования MD5-контрольной суммы (подписи) параметров
счета, и добавления подписи в URL системы, куда перенаправляется Покупатель для оплаты заказа. Подпись формируется
по параметрам счета и паролю №1 магазина (устанавливается в интерфейсе администрирования).
Продавец может узнать у системы ROBOXchange Cash Register состояние операции оплаты, а также действующие
в системе курсы обмена. Для этого используются XML интерфейсы, описанные в соответствующем разделе данного документа.
После оплаты обменный пункт отправляет сообщение магазину путем вызова ResultURL и передачей ему методом
GET/POST/email параметров совершенного платежа, а также подписи,
сформированной по параметрам оплаченного Заказа и паролю №2 магазина.
Запросы к XML-интерфейсам, информирующим о состоянии обменной операции, производятся с указанием контрольной
суммы, сформированной по параметрам запроса + пароль2 магазина.
Примечание: Если не оговорено конкретно, понятия входяший/исходящий подразумеваются относительно системы Cash Register.

Состав

системы Cash Register

Регистрационные данные Продавца

Online регистрация


Продавец (владелец магазина или сервиса) должен внести в форму он-лайн регистрации следующие данные:
  • наименование магазина;
  • e-mail адрес технического администратора магазина для связи;
  • пароль для доступа к странице изменения данных;
  • пароль 1 (используется интерфейсом инициации оплаты);
  • пароль 2 (используется интерфейсом оповещения о платеже, XML-интерфейсах);
  • Result URL (используется интерфейсом оповещения о платеже);
  • POST/GET/email метод отсылки данных в Result URL;
  • Success URL (используется в случае успешного проведения платежа);
  • POST/GET метод отсылки данных в Success URL;
  • Fail URL (используется в случае отказа проведения платежа);
  • POST/GET метод отсылки данных в Fail URL;
  • язык общения с администратором магазина;
  • валюту, которую желает получать.

На следующей странице Продавец вводит аккаунт в выбранной платежной системе, на который будут
перечисляться средства, получаемые после обмена платежа Покупателя.

Изменение регистрационной информации


Возможно
изменение любых данных кроме аккаунта получаемых средств и получаемой валюты.

Интерфейс оплаты

1. Код встраиваемой кассы со списком возможных валют оплаты


При использовании JScript-кода в HTML-тексте в качестве источника HTML-кода, выводится окошко кассы с
выбором сумм в различных валютах. Для этого запрос ниже приведенного формата отпрвляется методом GET на
URL: http://www.roboxchange.com/mrh_summpreview.asp, а результатом является изображенная на иллюстрации форма.


Параметры запроса (метод GET):
lang=sLang&
mrh=sMerchantLogin&
in_curr=sInCurr&
out_summ=nOutSumm&
inv_id=nMerchantInvID&
inv_desc=sMerchantInvDesc&
crc=sCRC
[&любые_параметры_магазина_до_254_знаков_начинающиеся_с_SHP]
sLang
- опционально, язык общения с клиентом. Значения: en, ru. Если не установлен - берется язык региональных установок браузера.
sMerchantLogin
- login магазина в обменном пункте
sInCurr
- предлагаемая валюта платежа. Пользователь может изменить ее в процессе оплаты.
nOutSumm
- требуемая к получению сумма. Если параметр не указан (пустая строка), то пользователю
предоставляется возможность ввести сумму самостоятельно. Формат представления числа - разделитель точка.
nMerchantInvID
- номер счета в магазине (должен быть уникальным для магазина). Если содержит пустое значение, вовсе
не указан, либо равен "0", то при создании операции ей будет автоматически присвоен уникальный номер счета.
Рекомендуется использовать данную возможность только в очень простых магазинах, где не требуется какого-либо контроля.
sMerchantInvDesc
- описание покупки, можно использовать только символы английского или
русского алфавита, цифры и знаки препинания. Максимальная длина 100 символов.
sCRC
- контрольная сумма MD5 - строка представляющая собой 32-разрядное число в 16-ричной форме и
любом регистре (всего 32 символа 0-9, A-F). Формируется по строке, содержащей все обязательные
параметры, разделенные ':', с добавлением sMerchantPass1 - (устанавливается через интерфейс
администрирования) т.е. sMerchantLogin:nOutSumm:nMerchantInvID:sMerchantPass1[:пользовательские параметры, в отсортированном порядке]
К примеру если переданы параметры shpb=xxx и shpa=yyy то подпись формируется из строки ...:sMerchantPass1:shpa=yyy:shpb=xxx

Контрольная сумма может быть не указана, если в настройках магазина sMerchantPass1 пуст.
При этом любой пользователь может инициировать операцию обмена, заняв номер счета, в таком случае когда покупатель
будет перенаправлен магазином на оплату счета с этим номером, обменный пункт откажет в операции (ошибка - данный счет уже существует).

2. Инициация оплаты


Магазин отправляет пользователя по данному адресу для произведения им оплаты.
Предварительно магазин должен у себя запомнить счет (номер, сумма, дата формирования).

URL: https://www.roboxchange.com/ssl/calc.asp
Параметры запроса (метод POST либо GET):
lang=sLang&
mrh=sMerchantLogin&
in_curr=sInCurr&
out_summ=nOutSumm&
inv_id=nMerchantInvID&
inv_desc=sMerchantInvDesc&
crc=sCRC
[&любые_параметры_магазина_до_254_знаков_начинающиеся_с_SHP]
sLang
- опционально, язык общения с клиентом. Значения: en, ru. Если не установлен -
берется язык региональных установок браузера.
sMerchantLogin
- login магазина в обменном пункте
sInCurr
- предлагаемая валюта платежа. Пользователь
может изменить ее в процессе оплаты.
nOutSumm
- требуемая к получению сумма. Если параметр не указан (пустая строка), то пользователю предоставляется
возможность ввести сумму самостоятельно. Формат представления числа - разделитель точка.
nMerchantInvID
- номер счета в магазине (должен быть уникальным для магазина)
. Если содержит пустое значение, вовсе не указан,
либо равен "0" то при создании операции ей будет автоматически присвоен уникальный номер счета. Рекомендуется использовать
данную возможность только в очень простых магазинах, где не требуется какого-либо контроля.
sMerchantInvDesc
- описание покупки, можно использовать только символы английского или русского алфавита,
цифры и знаки препинания. Максимальная длина 100 символов.
sCRC
- контрольная сумма MD5 - строка представляющая собой 32-разрядное число
в 16-ричной форме и любом регистре (всего 32 символа 0-9, A-F).
Формируется по строке, содержащей все обязательные параметры, разделенные ':', с добавлением sMerchantPass1 (указывается при регистрации)
т.е. sMerchantLogin:nOutSumm:nMerchantInvID:sMerchantPass1[:пользовательские параметры, в отсортированном порядке]
К примеру если при инициации операции были переданы пользовательские параметры shpb=xxx и shpa=yyy
то подпись формируется из строки ...:sMerchantPass1:shpa=yyy:shpb=xxx

Контрольная сумма может быть не указана, если в настройках магазина sMerchantPass1 пуст. При этом любой пользователь
может инициировать операцию обмена, заняв номер счета - в таком случае, когда покупатель будет
перенаправлен магазином на оплату счета с этим номером, обменный пункт откажет в операции (ошибка - данный счет уже существует).
Покупательатель отправляется на сайт оплату Cash Register, после чего платеж в выбранной Продавцом
валюте перечисляется (поступает) на его счет в выбранной им платежной системе. Промежуток времени между
"началом операции" - "получением оплаты системой Cash Register" ограничено одним часом, время завершения операции не ограничено.
После оплаты сам Покупатель не заинтересован в затормаживании операции (ожидание завершения операции вполне можно прекратить через сутки).
Простейший пример HTML-страницы с линком на оплату: payment link

3. Оповещение об оплате (ResultURL)


В случае успешного проведения оплаты робот системы проводит запрос
по Result URL, с указанием следующих параметров (методом, выбранным в настройках): out_summ=nOutSumm& inv_id=nMerchantInvID& crc=sCRC&
nOutSumm
-полученная сумма. Формат представления числа - разделитель точка.
nMerchantInvID
- номер счета в магазине
sCRC
- контрольная сумма MD5 - строка представляющая собой 32-разрядное число в
16-ричной форме и любом регистре (всего 32 символа 0-9, A-F).
Формируется по строке, содержащей все обязательные параметры, разделенные ':', с добавлением
sMerchantPass2 - (устанавливается через интерфейс администрирования) т.е.
nOutSumm:nMerchantInvID:sMerchantPass2[:пользовательские параметры, в отсортированном порядке]
К примеру если при инициации операции были переданы пользовательские параметры shpb=xxx
и shpa=yyy то подпись формируется из строки ...:sMerchantPass1:shpa=yyy:shpb=xxx

Скрипт, находящийся по Result URL должен проверить
правильность контрольной суммы и соответствия суммы платежа
ожидаемой сумме. При формировании строки подписи учтите формат представления суммы (в строку
при проверке подписи вставляйте именно полученное значение, без какого-либо форматирования).
Данный запрос производится после получения денег, однако, до того как пользователь сможет перейти на Success URL.
Перед скриптом магазина, расположенным по Success URL обязательно отрабатывает скрипт запроса к Result URL.
Факт успешности сообщения магазину об исполнении операции определяется по результату, возвращаемому обменному пункту.
Результат должен содержать "OKnMerchantInvID", т.е. для счета #5 должен быть возвращен текст "OK5".
В случае невозможности связаться со скриптом по адресу Result URL (связь прерывается по time-out-у либо по отсутствию
DNS-записи, либо получен не ожидаемый ответ) на email-адрес администратора магазина отправляется письмо и запрос Resul
t URL считается завершенным успешно. В случае системаческого отсутствия связи между серверами магазина и обменного
пункта лучше использовать метод определения оплаты с применением интерфейсов XML, а самый желательный и защищенный способ - совмещенный.

4. Переадресация пользователя при успешной оплате (SuccessURL)


В случае успешного исполнения платежа Покупатель может перейти по данному адресу.
Методом, выбранным при регистрации будет передан следующих параметр ("чек" об оплате):
out_summ=nOutSumm&
inv_id=nMerchantInvID&
crc=sCRC
nOutSumm
-полученная сумма. Формат представления числа - Разделитель точка.
nMerchantInvID
- номер счета в магазине
sCRC
- контрольная сумма MD5 - строка представляющая собой 32-разрядное число в 16-ричной форме и любом регистре (всего 32
символа 0-9, A-F). Формируется по строке, содержащей все обязательные параметры, разделенные ':', с добавлением sMerchantPass1
(указывается при регистрации) т.е. nOutSumm:nMerchantInvID:sMerchantPass1[:пользовательские параметры, в отсортированном
порядке] К примеру если при инициации операции были переданы пользовательские
параметры shpb=xxx и shpa=yyy то подпись формируется из строки ...:sMerchantPass1:shpa=yyy:shpb=xxx

Если в качетсве метода отправки данных выбран email, будет
отправлено email сообщение по email-адресу,
установленному в качестве Success URL через интерфейс администрирования.
Переход пользователя по данному адресу с корректными параметрами (соответствия CRC) означает, что платеж по реквизитам
Продавца выполнен успешно. Сервис несет финансовую ответственность перед Продавцом в соответствии с Соглашением за достоверность такого подтверждения.
Однако для дополнительной защиты желательно, чтобы факт оплаты платежа проверялся скриптом исполняемым при переходе на
Result URL, или путем запроса XML-интерфейса о результате данной платежной операции, и только при реальном наличии счета с номером nMerchantInvID в БД магазина.

5. Переадресация пользователя при отказе от оплаты (FailURL)


В случае отказа от исполнения платежа Покупатель перенаправляется по данному адресу.
Для того, чтобы Продавец мог разблокировать заказанный товар на складе при отказе от
его оплаты методом, выбранным при регистрации, будет передан параметр:
inv_id=nMerchantInvID
nMerchantInvID
- номер счета в магазине

Если в качетсве метода отправки данных выбран email, будет отправлено email сообщение об отказе
Покупателя от оплаты Заказа по email-адресу, находящемуся в Fail URL.
Переход пользователя по данному адресу вообще говоря не означает окончательного отказа Покупателя от оплаты, нажав кнопку
"Back" в броузере он может вернуться на страницы Cash Register. Поэтому в случае блокировки товара на складе под заказ
для его разблокировки желательно проверять факт отказа от платежа запросом запроса XML-интерфейса о результате данной
платежной операции используя в запросе номер счета nMerchantInvID имеющийся в БД магазина (Продавца).

XML интерфейсы

1. Список валют обменного пункта.


По данному запросу Сервисом предоставляется полный список наименований электронных валют

URL: http://www.roboxchange.com/xml/currlist.asp

Параметров нет.
Ответ: <robox.currlist.resp> <item> <curr>sCurr</curr> <curr_name>sCurrName</curr_name> </item> </robox.currlist.resp>
Тегов может быть несколько, каждый из них описывает 1 валюту.
sCurr
- метка входящей валюты
sCurrName
- имя входящей валюты (это наименование можно показывать пользователю).

2. Получение списка курсов обмена


URL: http://www.roboxchange.com/xml/rate.asp

Параметры запроса (метод POST): <robox.rate.req> <in_curr>sInCurr</in_curr> <out_curr>sOutCurr</out_curr> <merchant_login>sMerchantLogin</merchant_login> <out_cnt>nOutCount</out_cnt> </robox.rate.req>
sInCurr
- метка входящей валюты, если не указана будут возвращены курсы по всем возможным валютам
sOutCurr
- метка исходящей валюты
sMerchantLogin
- login магазина в обменном пункте
nOutCount
- количество денежных знаков исходящей валюты, по которым формировать количество входных денежных знаков. По умолчанию принимается 1.

Исходящая валюта определяется либо по параметру sOutCurr, либо по sMerchantLogin-у (в
качестве исходящей берется валюта, выбранная при регистрации). sMerchantLogin имеет приоритет

Ответ: <robox.rate.resp> <retval>nRetCode</retval> <out_curr>sOutCurr</out_curr> <out_cnt>nOutCount</out_cnt> <date>sDateODBC120</date> <ratelist> <rate> <in_curr>sInCurr</in_curr> <in_curr_name>sInCurrName</in_curr_name> <value>nValuet</value> <ins_per_Xout>nInCount</ins_per_Xout> </rate> ... </ratelist> </robox.rate.resp>
nRetCode
- код возврата.

-100 - неверно сформирован запрос (не все требуемые параметры заданы, либо запрос не разобран вовсе)
0 - нет ошибки.
1 - sInCurr задан неверно
2 - sOutCurr задан неверно
3 - sMerchantLogin не найден
4 - nOutCnt задан неверно
sOutCurr
- метка исходящей валюты
nOutCount
- количество денежных знаков исходящей валюты, по которым формировать количество входных денежных знаков
sDateODBC120
- дата, на которую возвращено состояние курсов. В формате ODBC120 ("yyyy-mm-dd hh:mm:ss"), GMT.

Тегов может быть несколько (особенно если в запросе не указан ), каждый из них описывает 1 курс.
sInCurr
- метка входящей валюты
sInCurrName
- имя входящей валюты (это наименование можно показывать пользователю).
nValue
- количество денежных знаков входящей валюты, приходящиеся на 1 денежный знак исходящей валюты
(sOutCurr), без округлений до элементарных единиц входящей валюты.
nInCount
- количество денежных знаков входящей валюты, которые пользователь должен оплатить для получения магазином nOutCount -
денежных знаков исходящей валюты (sOutCurr). Округлено до элементарных единиц входящей валюты.

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

3. Интерфейс получения состояния операций


URL: https://www.roboxchange.com/xmlssl/opstate.asp

Параметры запроса (метод POST): <robox.opstate.req> <merchant_login>sMerchantLogin</merchant_login> <merchant_invid>sMerchantInvID</merchant_invid> <crc>sCrc</crc> </robox.opstate.req>
sMerchantLogin
- login магазина в обменном пункте
sCRC
- контрольная сумма MD5 - строка представляющая собой 16-разрядное число в 16-ричной форме и любом регистре (всего 32 символа 0-9, A-F).
Формируется по строке, содержащей все обязательные параметры, разделенные ':', с добавлением sMerchantPass2 (
указывается при регистрации) т.е. sMerchantLogin:nMerchantInvID:sMerchantPass2


Ответ: <robox.opstate.resp> <retval>nRetCode</retval> <date>sDateODBC120</date> <out_curr>sOutCurr</out_curr> <opstate> <out_cnt>nOutCount</out_cnt> <state>nState</state> </opstate> </robox.opstate.resp>
sDateODBC120
- дата, на которую возвращено состояние операции. В формате ODBC120 ("yyyy-mm-dd hh:mm:ss").
sOutCurr
- метка исходящей валюты
nRetCode
- код возврата.

-100 - неверно сформирован запрос (не все требуемые параметры заданы, либо запрос не разобран вовсе)
-9 - crc не указана, либо неверного вида (длина должна быть 32 символа)
-2 - merchant_invid не задан либо не является числом
0 - нет ошибки. При этом присутствует тег .
1 - указанный merchant_login не найден
9 - неверно задана контрольная сумма
10 - операция с данным merchant_invid не найдена (возможно еще не инициирована)
nOutCount
- количество денежных знаков исходящей валюты данной операции
nState
- состояние операции:

5 - только инициирована, деньги не получены
10 - деньги не были получены, операция отменена
50 - деньги получены, ожидание решение пользователя о платеже
60 - деньги после получения были возвращены пользователю
80 - исполнение операции приостановлено
100 - операция завершена успешно

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

Описание методов построения магазинов

Простейший магазин без применения скриптов


Такой магазин можно очень быстро построить на дешевых хостинг-планах без возможности использования каких-бы то ни
было скриптов, включая бесплатный хостинг. Время установки магазина минимально.
Поскольку ваш сайт не может как-либо контролировать процесс, вам скорее
всего прийдется самостоятельно отправлять товар.
Основная схема работы магазина: в HTML-страницы магазина включается код (JScript), в результате чего на странице появляется касса,
с выбором валюты оплаты. Пользователь, выбрав валюту, и нажав кнопку "оплатить" попадает на страницы ROBOX, и производит оплату
(на кошелек магазина при этом поступают средства в вашей валюте). По окончании процесса на email-адрес оператора магазина посылается
сообщение о произведенной операции, а пользователь переходит на выбранную вами страницу магазина.
Желательно на ней расположить текст вида "в ближайшее время оператор отошлет вам купленный товар", либо можете расположить сам
товар (если не боитесь что пользователь самостоятельно, без оплаты, перейдет на этот URL).
При регистрации
  • поле "Merchant Pass1" должно остаться пустым,
  • "ResultURL" - email-адрес оператора магазина, метод отправки данных - email,
  • "SuccessURL" - адрес страницы с товаром, куда отправится пользователь после оплаты, метод отправки данных не имеет значения
  • "FailURL" - адрес вашего магазина, метод отправки данных не имеет значения

В HTML-страницы, для получения текста кассы на них добавьте следующий код: <script language=JavaScript src='http://www.roboxchange.com/mrh_summpreview.asp?mrh=test&out_summ=1.2'></script>
Где вместо слова "test" поместите ваш логин, а вместо "1.2" - сумму платежа в валюте магазина (разделитель дробной части - точка).
Если вы имеете в магазине несколько товаров с одинаковой ценой, то используйте расширенный код: <script language=JavaScript src='http://www.roboxchange.com/mrh_summpreview.asp? mrh=test&out_summ=1.2&SHPitem=item_name'></script>
Где "name" - наименование товара (только английские буквы, цифры и знак подчеркивания _).
Если вы не хотите использовать на странице JScript, и не хотите видеть кассу, можете расположить на странице простой линк,
перейдя по котором пользователь вашего сайта сможет оплатить товар. Код следующий: <a href = 'https://www.roboxchange.com/ssl/calc.asp?mrh=test&out_summ=1.2&SHPitem=item_name'>платить здесь</a>
Расшифровка параметров такая же что и у кода с кассой.
Все готово. Ваш простейший магазин работает!

Магазин с активной частью (скриптами),

без формирования запросов


Данная схема удобна для большинства сайтов, распологающихся на хостинге с возможностью исполнения скриптов (CGI или ASP).
Схема работы магазина следующая:
  • скрипт магазина направляет пользователя на оплату, используя JScript-код кассы, либо URL калькулятора,
  • при этом он может запретить произвольную инициацию оплаты,
  • закрыв данный URL подписью.
  • после оплаты, ROBOX уведомляет магазин о том, что платеж совершен, вызывая скрипт, находящийся по адресу ResultURL
  • - скрипту передаются параметры платежа, подписанные ROBOX-ом. Скрипт,
  • указанному заказу устанавливает в
  • БД магазина состояние "оплачено". Если в момент оповещение между ROBOX и магазином отсутствует
  • связь - администратору магазина отправляется email-сообщение.
  • После оплаты, и после сообщения магазину, пользователь перенаправляется по скрипту, находящемуся по адресу SuccessURL -
  • скрипту передаются те же параметры, но подписанные с использованием другого пароля. Скрипт анализирует данные, сверяет их с
  • данными, ранее полученными скриптом ResultURL (однако, магазин может вовсе и не
  • использовать скрипт ResultURL, полагаясь только на данные SuccessURL) и выдает товар.

Для формирования/проверки подписи используется алгоритм MD5, встроенный в языки Perl и PHP, на ASP используется COM-объект.
Вы можете вовсе не формировать сверять подпись, если считаете это уместным уровнем безопасности. В таком случае скрипт
ResultURL должен сверять корректность данных только по ip-адресу клиента скрипта (им должен быть roboxchange.com), и URL
скрипта ResultURL не должен быть известем третьим лицам. SuccessURL при этом должен лишь брать состояние заказа,
устанавливаемое скриптом ResultURL и в случае состояние "оплачено" выдавать товар.

Магазин с применением всех интерфейсов


В случае если конфигурация вашего сервера позволяет производить исходящие http и https запросы на сервер
roboxchange.com, то вы можете дополнительно усложнить ваш магазин, используя XML-интерфейсы.
Они позволяют предварительно считывать курсы обмена ROBOX, список принимаемых валют.
Что значительно расширяет ваши возможности по построению удобного пользовательского интерфейса вашего сайта.
Также вы можете в любой момент времени проверить состояние оплаты вашего заказа - большая стабильность,
повышенная безопасность. К примеру, ваша система может не использовать ResultURL, а скрипт SuccessURL
перед выдачей товара может проверять состояние оплаты заказа непосредственно у roboxchange.com.

Методы формирования страниц отправки на оплату


Как можно увидеть из спецификации интерфейсов при отправке пользователя на оплату магазин должен сформировать
уникальный (в пределах магазина) номер счета, по которому будет производиться последующий контроль операции оплаты.
Соответственно инициировать 2 операции с одним и тем же номером счета нельзя.
С этим связано несколько особенностей.
Если вы будете предоставлять URL калькулятора с уникальным номером счета на HTML-странице, пользователь должен
переходить по данному URL только 1 раз (если он зайдет первый раз, начнет операцию, вернется, и попытается начать
операцию заново - его уже не пустят). Поэтому если кнопка оплаты находится в таких местах, где пользователь
еще не готов покупать, а может лишь пробовать процесс - ввод конкретного номера счета явно нежелателен.
Вариант 1 - не указывайте номера счета - при этом в момент инициации операции оплаты будет сформирован уникальный счет.
Естественно вы не сможете тогда контролировать операцию оплату по номеру счета - вы его просто не знаете, однако для определения
пренадлежности платежа к заказу вы можете использовать свободные поля SHPxxx=yyy, где xxx и yyy - произвольные строки.
Вариант 2 - при нажатии на кнопку "оплатить" пользователь реально будет переходить на ваш скрипт, который уже и будет формировать уникальный номер счета,
запоминать его в БД, и перенаправлять пользователя на оплату этого счета.
Это естественные ограничения, однако, о них необходимо знать и помнить.

Примеры

Perl

Формирование URL переадресации пользователя на оплату

# connect standard module for building MD5-signs use Digest::MD5 qw(md5_hex); # your registration data my $mrh_login = "someone"; ### your login here my $mrh_pass1 = "securepass"; ### merchant pass1 here # order properties my $inv_id = 5; ### shop's invoice number ### (unique for shop's lifetime) my $inv_desc = "desc"; ### invoice desc my $out_summ = "5.12"; ### invoice summ # build CRC value my $crc = md5_hex("$mrh_login:$out_summ:$inv_id:$mrh_pass1"); # build URL my $url = "https://www.roboxchange.com/ssl/calc.asp?mrh=$mrh_login&". "out_summ=$out_summ&inv_id=$inv_id&inv_desc=$inv_desc&crc=$crc"; # print URL if you need print "Content-type: text/html\n\n"; print "<a href='$url'>Payment link</a>";

Получение уведомления об исполнении операции (resultURL)

# as a part of ResultURL script # connect standard module for building MD5-signs use Digest::MD5 qw(md5_hex); # define function for retrieval http-paratemters sub http_Prm; # your registration data my $mrh_login = "someone"; ### your login here my $mrh_pass2 = "securepass2"; ### merchant pass2 here # load parameters my %q = http_Prm(); # loaded parameters: $q{out_summ}, $q{inv_id}, $q{crc} $q{crc} =~ s/([a-z])/uc "$1"/eg; # force uppercase # build own CRC my $my_crc = md5_hex("$q{out_summ}:$q{inv_id}:$mrh_pass2"); $my_crc =~ s/([a-z])/uc "$1"/eg; # force uppercase # define the correctness state my $is_correct = ($my_crc eq $q{crc} ? 1 : 0); if (!$is_correct) { print "Content-type: text/html\n\nbad sign\n"; die "incorrect sign passed"; } # OK state # print OK signature print "Content-type: text/html\n\nOK$q{inv_id}\n"; # perform some action (change order state to paid) exit(); # just function to load http parameters, you can use own sub http_Prm { my %query; { # POST params my ($q_sz, $i, @q, @cmd); my $l = $ENV{'CONTENT_LENGTH'}; my $qtext = ""; while ($l>0) { $l-=sysread(STDIN, $qtext, $l, length($qtext)); } @q = split("&", $qtext); $q_sz = scalar(@q); for($i=0; $i<$q_sz; $i++) { @cmd = split("=", $q[$i]); $cmd[1] =~ s/\+/ /g; $cmd[1] =~ s/%([0-9A-Fa-f]{2})/chr(hex($1))/eg; $query{$cmd[0]} = $cmd[1]; } } { # GET params my ($q_sz, $i, $qtext, @q, @cmd); $qtext = $ENV{'QUERY_STRING'}; @q = split("&", $qtext); $q_sz = scalar(@q); for($i=0; $i<$q_sz; $i++) { @cmd = split("=", $q[$i]); $cmd[1] =~ s/\+/ /g; $cmd[1] =~ s/%([0-9A-Fa-f]{2})/chr(hex($1))/eg; $query{$cmd[0]} = $cmd[1]; } } return %query; }

Проверка параметров в скрипте заверешения операции (successURL)

# as a part of SuccessURL script # connect standard module for building MD5-signs use Digest::MD5 qw(md5_hex); # define function for retrieval http-paratemters sub http_Prm; # your registration data my $mrh_login = "someone"; ### your login here my $mrh_pass1 = "securepass1"; ### merchant pass1 here # load parameters my %q = http_Prm(); # loaded parameters: $q{out_summ}, $q{inv_id}, $q{crc} $q{crc} =~ s/([a-z])/uc "$1"/eg; # force uppercase # build own CRC my $my_crc = md5_hex("$q{out_summ}:$q{inv_id}:$mrh_pass1"); $my_crc =~ s/([a-z])/uc "$1"/eg; # force uppercase # define the correctness state my $is_correct = ($my_crc eq $q{crc} ? 1 : 0); if (!$is_correct) { print "Content-type: text/html\n\nbad sign\n"; die "incorrect sign passed"; } # you can check here, that resultURL was called # (for better security) # OK, payment proceeds print "Content-type: text/html\n\n"; echo "Thank you for using our service\n"; exit(); # just function to load http parameters, you can use own sub http_Prm { my %query; { # POST params my ($q_sz, $i, @q, @cmd); my $l = $ENV{'CONTENT_LENGTH'}; my $qtext = ""; while ($l>0) { $l-=sysread(STDIN, $qtext, $l, length($qtext)); } @q = split("&", $qtext); $q_sz = scalar(@q); for($i=0; $i<$q_sz; $i++) { @cmd = split("=", $q[$i]); $cmd[1] =~ s/\+/ /g; $cmd[1] =~ s/%([0-9A-Fa-f]{2})/chr(hex($1))/eg; $query{$cmd[0]} = $cmd[1]; } } { # GET params my ($q_sz, $i, $qtext, @q, @cmd); $qtext = $ENV{'QUERY_STRING'}; @q = split("&", $qtext); $q_sz = scalar(@q); for($i=0; $i<$q_sz; $i++) { @cmd = split("=", $q[$i]); $cmd[1] =~ s/\+/ /g; $cmd[1] =~ s/%([0-9A-Fa-f]{2})/chr(hex($1))/eg; $query{$cmd[0]} = $cmd[1]; } } return %query; }

Запрос состояния операции

# connect standard module for building MD5-signs use Digest::MD5 qw(md5_hex); # connect module for requesting data via https use Net::SSLeay; # your registration data my $mrh_login = "someone"; ### your login here my $mrh_pass2 = "securepass2"; ### merchant pass2 here # order properties my $inv_id = "5"; ### put your order number here # build CRC my $crc = md5_hex("$mrh_login:$inv_id:$mrh_pass2"); # make request my $data = "<robox.opstate.req> <merchant_login>$mrh_login</merchant_login> <merchant_invid>$inv_id</merchant_invid> <crc>$crc</crc> </robox.opstate.req>"; my ($page) = Net::SSLeay::post_https("www.roboxchange.com", 443, "/xmlssl/opstate.asp", "", $data); # analyze data print "Content-type: text/xml\n\n"; print $page;

PHP

Формирование URL переадресации пользователя на оплату

// your registration data $mrh_login = "someone"; // your login here $mrh_pass1 = "securepass"; // merchant pass1 here // order properties $inv_id = 5; // shop's invoice number // (unique for shop's lifetime) $inv_desc = "desc"; // invoice desc $out_summ = "5.12"; // invoice summ // build CRC value $crc = md5("$mrh_login:$out_summ:$inv_id:$mrh_pass1"); // build URL $url = "https://www.roboxchange.com/ssl/calc.asp?mrh=$mrh_login&". "out_summ=$out_summ&inv_id=$inv_id&inv_desc=$inv_desc&crc=$crc"; // print URL if you need echo "<a href='$url'>Payment link</a>";

Получение уведомления об исполнении операции (resultURL)

// as a part of ResultURL script // your registration data $mrh_login = "someone"; // your login here $mrh_pass2 = "securepass2"; // merchant pass2 here // HTTP parameters: $out_summ, $inv_id, $crc $crc = strtoupper($crc); // force uppercase // build own CRC $my_crc = strtoupper(md5("$out_summ:$inv_id:$mrh_pass2")); if (strtoupper($my_crc) != strtoupper($crc)) { echo "bad sign\n"; exit(); } // print OK signature echo "OK$inv_id\n"; // perform some action (change order state to paid)

Проверка параметров в скрипте заверешения операции (successURL)

// as a part of SuccessURL script // your registration data $mrh_login = "someone"; // your login here $mrh_pass1 = "securepass1"; // merchant pass1 here // HTTP parameters: $out_summ, $inv_id, $crc $crc = strtoupper($crc); // force uppercase // build own CRC $my_crc = strtoupper(md5("$out_summ:$inv_id:$mrh_pass1")); if (strtoupper($my_crc) != strtoupper($crc)) { echo "bad sign\n"; exit(); } // you can check here, that resultURL was called // (for better security) // OK, payment proceeds echo "Thank you for using our service\n";

Запрос состояния операции

// you must have cURL module with HTTPS support installed // to run this code // your registration data $mrh_login = "banstock"; // your login here $mrh_pass2 = "where_is_my_bots?"; // merchant pass2 here // order properties $inv_id = "5"; // put your order number here // build CRC $crc = md5("$mrh_login:$inv_id:$mrh_pass2"); // make request $data = "<robox.opstate.req> <merchant_login>$mrh_login</merchant_login> <merchant_invid>$inv_id</merchant_invid> <crc>$crc</crc> </robox.opstate.req>"; $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "https://www.roboxchange.com/xmlssl/opstate.asp"); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $data); // CURLOPT_RETURNTRANSFER doesn't work $fp = tmpfile(); curl_setopt ($ch, CURLOPT_FILE, $fp); if (!curl_exec($ch)) { echo curl_error($ch); } curl_close($ch); fseek($fp,0,SEEK_SET); $page = fread($fp,1024); fclose($fp); // analyze data echo $page;

ASP - JScript

Формирование URL переадресации пользователя на оплату

// install ASPHash.GenHash COM-object first // your registration data var mrh_login = "someone"; // your login here var mrh_pass1 = "securepass1"; // merchant pass1 here // order properties var inv_id = 51; // shop's invoice number // (unique for shop's lifetime) var inv_desc = "desc"; // invoice desc var out_summ = "5.12"; // invoice summ // build CRC value var h = new ActiveXObject("ASPHash.GenHash"); var crc = h.MD5(mrh_login+":"+out_summ+":"+inv_id+":"+ mrh_pass1); // build URL var url = "https://www.roboxchange.com/ssl/calc.asp?mrh="+mrh_login+"&"+ "out_summ="+out_summ+"&inv_id="+inv_id+ "&inv_desc="+inv_desc+"&crc="+crc; // print URL if you need Response.Write("<a href='"+url+"'>Payment link</a>");

Получение уведомления об исполнении операции (resultURL)

// install ASPHash.GenHash COM-object first // as a part of ResultURL script // your registration data var mrh_login = "someone"; // your login here var mrh_pass2 = "securepass2"; // merchant pass2 here // HTTP parameters: out_summ, inv_id, crc var out_summ = Request.QueryString("out_summ").Item; var inv_id = Request.QueryString("inv_id").Item; var crc = Request.QueryString("crc").Item; // build own CRC var h = new ActiveXObject("ASPHash.GenHash"); var my_crc = h.MD5(out_summ+":"+inv_id+":"+mrh_pass2); if (my_crc.toUpperCase() != crc.toUpperCase()) { Response.Write("bad sign\n"); Response.End(); } // print OK signature Response.Write("OK"+inv_id+"\n"); // perform some action (change order state to paid)

Проверка параметров в скрипте заверешения операции (successURL)

// install ASPHash.GenHash COM-object first // as a part of SuccessURL script // your registration data var mrh_login = "someone"; // your login here var mrh_pass1 = "securepass1"; // merchant pass1 here // HTTP parameters: out_summ, inv_id, crc var out_summ = Request.QueryString("out_summ").Item; var inv_id = Request.QueryString("inv_id").Item; var crc = Request.QueryString("crc").Item; // build own CRC var h = new ActiveXObject("ASPHash.GenHash"); var my_crc = h.MD5(out_summ+":"+inv_id+":"+mrh_pass1); if (my_crc.toUpperCase() != crc.toUpperCase()) { Response.Write("bad sign\n"); Response.End(); } // you can check here, that resultURL was called // (for better security) // OK, payment proceeds Response.Write("Thank you for using our service\n");

Запрос состояния операции

// install ASPHash.GenHash COM-object first // install WinHttp.WinHttpRequest COM-object (from Microsoft site) // your registration data var mrh_login = "someone"; // your login here var mrh_pass2 = "securepass2"; // merchant pass2 here // order properties var inv_id = "5"; // put your order number here // build CRC var h = new ActiveXObject("ASPHash.GenHash"); var crc = h.MD5(mrh_login+":"+inv_id+":"+mrh_pass2); // make request var data = "<robox.opstate.req>"+ " <merchant_login>"+mrh_login+"</merchant_login>"+ " <merchant_invid>"+inv_id+"</merchant_invid>"+ " <crc>"+crc+"</crc>"+ "</robox.opstate.req>"; var sResponse = ""; try { var req = new ActiveXObject("WinHttp.WinHttpRequest"); req.SetTimeouts(10000, 10000, 15000, 15000); req.Open("POST", "https://www.roboxchange.com/xmlssl/opstate.asp", false); req.SetRequestHeader( "Content-Type", "application/x-www-form-urlencoded"); req.Send(data); sResponse = req.ResponseText; } catch(e) {} // analyze Response.Write(sResponse);
http://www.ROBOXchange.com
Copyright © ROBOXchange Corp.
         
*********************************************************************************************************************************
Этот сайт был создан как справочник, в свое время когда я занимался дорвеями и черным сео, вернее начинал заниматься Сайт современем я забросил но удалять жалко, По этому я его оставил, надеюсь на сайте вы сможете найти что либо полезное для себя.На сайте рассматривалось много полезной информации, часть информации актуальна и на сегодняшний день . На сегодня более выгодное решение это продажа ссылок с ваших сайтов, для меня создать белый сайт гораздо легче чем дорвейный сайт проблемма в том что дорвеи из за спама баняться очень быстро Так что выбрать вам решайте сами. Думайте всегда своей головой. И если вам нужен наставник для сапы пишите мне становитесь рефералом, я вам буду помогать зарабатывать деньги
*********************************************************************************************************************************
Board
Наши Услуги
Гостевая книга
Скачать рекомендуем
Faq
Навигация дорвейщика
Blog
Forum
Как заработать с Umax
Для новичков о дорах
Начинаем-работать- с PPC
Словарь SEO оптимизатора
Домены с ТИЦ и PR
Сделать дорген - это просто
Что такое дорвеи ?
GOOGLE SERVICES
Дизайним собственный фид
Все о кейвордах и серчах
Факторы ранжирования
Термины Бан, PR, тИЦ,
Запросы Yahoo!
Уловки и хитрости
Навигация список SEO List
Фильты Google
Доска объявлений
Free забугорный хостинг.
Links Direktory
Keywoord tools
Все для сотовых тел
Поисковые операторы Google
Сервисы для дорвейщика
Проги всякие
Обмен ссылок
Штрафы за контент
Список Download Сайтов
регистрация сайта каталоги
Адреса разгона дорвеев
Раскрутка Краткий курс
Безопасность скриптов
Web Merchant Interface
CashRegister ROBOHCHANGE
Платежные системы PayPal
создание сайта-лидера
Click&Buy Merchant Interface
Онлайн Сервисы
Бесплатно сателлиты
Как создать сайт
Хостинг RU
Хостинг 2
Как попасть в DMOZ
 
Company Moyshen Di traken
Phone: xxx xxx xxx , Faxt 0123 1234567
E-mail:

Разработано при поддержке Спонсора цифровых тапочек!
Вся инфа предназначена Типа для ознакомления.Так что Прочтите здесь.