On-line заказа печатной продукции

Вид материалаДиплом

Содержание


2. Подключение к платежной системе LiqPay
3. Подключение к мультивалютной кассе ROBOXchange
3.2 Инициализация оплаты
URL: https://merchant.roboxchange.com/Index.aspx
3.3 Оповещение об оплате (ResultURL)
3.4 Переадресация пользователя при успешной оплате (SuccessURL)
3.5 Переадресация пользователя при отказе от оплаты (FailURL)
Подобный материал:
1   2   3   4   5   6   7   8   9   10   11
^

2. Подключение к платежной системе LiqPay


Подключение проводилось с использованием API ClickNBuy 1.0. Для этого создается кнопка



















Где merchant_id это индинтификационный номер мерчанта, amount – сумма для оплаты, currency – валюта, description – описание товара не более 127 символов, order_id – номер заказа. Для того чтобы пользователь после оплаты вернулся на страницу магазина, добавляется не обязательный параметр:



На этот URL приходят все параметры покупки и подпись (signature), по которой можно понять, что человек действительно заплатил, а не хакер пытается обмануть систему.

О том что покупка совершена говорит status="success", покупка отклонена status="failure", а если status="wait_secure", то платеж находится на проверке. Проверка происходит, когда человек первый раз оплачивает своей картой в системе, чтобы обрабатывать такие платежи необходим параметр server_url.

Для того чтобы автоматизировать покупку необходимо использовать еще один необязательный параметр:



На этот URL будут приходить все параметры покупки и подпись (signature) от сервера оплаты (т.е. в обход пользователя). Отличие от result_url только в том, что result_url происходит при редиректе в браузере клиента, а server_url происходит от сервера оплаты (пользователь его вообще не видит).

server_url необходим потому что:

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

если пришел status="wait_secure", это значит что платеж на проверке, и только server_url сообщит после проверки о том, что платеж одобрен (status="success") или отклонен (status="failure"), result_url после проверки не приходит.

Параметр order_id - это идентификатор покупки, максимальная длина - 127 символов. Параметр необязательный, но для автоматизированной системы продажи рекомендуется его использовать с настройкой "Требовать уникальность order_id" для того чтобы конкретную единицу товара могли купить только один раз и для того чтобы нельзя было обмануть простыми повторными запросами на result_url! В order_id нельзя использовать символ "|"! Можно не использовать уникальность order_id т.к. приходящий параметр transaction_id уникален для каждой оплаты вне зависимости от order_id.

Подпись считается следующим образом:

signature_source = "|" + version + "|" + merchant_password + "|" + action_name + "|" + sender_phone + "|" + merchant_id + "|" + amount +"|" + currency + "|" + order_id + "|" + transaction_id + "|" + status + "|" + code + "|"

signature = base64(sha1(signature_source))

PHP: $sign=base64_encode(sha1($signature_source,1));

Все параметры, кроме merchant_password, приходят на result_url и server_url по методу POST с соответствующими именами.

merchant_password - это пароль мерчанта, хранится в секрете и нигде не передается, он является залогом безопасности при автоматической продаже!

Приходящие параметры:

action_name - способ ответа, может быть "result_url" или "server_url" в зависимости от того каким способом был прислан ответ.

sender_phone - номер телефона плательщика.

transaction_id - номер транзакции в системе.

status - код ответа, может быть "success", "failure", "wait_secure".

code - уточняющий код ответа, пока не используется.

Все остальные приходящие параметры равны входящим параметрам.
^

3. Подключение к мультивалютной кассе ROBOXchange

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


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

Параметры запроса (метод POST либо GET):


MrchLogin=sMerchantLogin&

OutSum=nOutSum&

InvId=nInvId&

Desc=sInvDesc&

SignatureValue=sSignatureValue

IncCurrLabel=sIncCurrLabel&

Culture=sCulture&

Encoding=sEncoding

[&shpa=yyy&shpb=xxx...-пользовательские_параметры_начинающиеся_с_SHP_в_сумме_до_2048_знаков]

sMerchantLogin

- login магазина в обменном пункте(обязательный параметр)

nOutSum

- требуемая к получению сумма(обязательный параметр). Сумма должна быть указана в той валюте, которая была указана при регистрации магазина. Формат представления числа - разделитель точка.

nInvId

- номер счета в магазине (должен быть уникальным для магазина). Может принимать значения от 1 до 2147483647 (2^31-1). Если содержит пустое значение, вовсе не указан, либо равен "0", то при создании операции ей будет автоматически присвоен уникальный номер счета. Рекомендуется использовать данную возможность только в очень простых магазинах, где не требуется какого-либо контроля.

sInvDesc

- описание покупки, можно использовать только символы английского или русского алфавита, цифры и знаки препинания. Максимальная длина 100 символов.

sSignatureValue

- контрольная сумма MD5(обязательный параметр) - строка представляющая собой 32-разрядное число в 16-ричной форме и любом регистре (всего 32 символа 0-9, A-F). Формируется по строке, содержащей некоторые параметры, разделенные ':', с добавлением sMerchantPass1 - (устанавливается через интерфейс администрирования) т.е. sMerchantLogin:nOutSum:nInvId:sMerchantPass1[:пользовательские параметры, в отсортированном порядке]

К примеру если переданы параметры shpb=xxx и shpa=yyy то подпись формируется из строки ...:sMerchantPass1:shpa=yyy:shpb=xxx

sIncCurrLabel

- предлагаемая валюта платежа. Пользователь может изменить ее в процессе оплаты.

sCulture

- опционально, язык общения с клиентом. Значения: en, ru. Если не установлен - берется язык региональных установок браузера.

sEncoding

- кодировка, в которой возвращается HTML-код кассы. По умолчанию: windows-1251.
^

3.2 Инициализация оплаты


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

^ URL: https://merchant.roboxchange.com/Index.aspx

Параметры запроса (метод POST либо GET):

MrchLogin=sMerchantLogin&

OutSum=nOutSum&

InvId=nInvId&

Desc=sInvDesc&

SignatureValue=sSignatureValue

IncCurrLabel=sIncCurrLabel&

Email=sEmail&

Culture=sCulture

[&shpa=yyy&shpb=xxx...-пользовательские_параметры_начинающиеся_с_SHP_в_сумме_до_2048_знаков]

sMerchantLogin

- login магазина в обменном пункте(обязательный параметр)

nOutSum

- требуемая к получению сумма. Сумма должна быть указана в той валюте, которая была указана при регистрации магазина. Если параметр не указан (пустая строка), то пользователю предоставляется возможность ввести сумму самостоятельно. Формат представления числа - разделитель точка.

nInvId

- номер счета в магазине (должен быть уникальным для магазина). Может принимать значения от 1 до 2147483647 (2^31-1). Если содержит пустое значение, вовсе не указан, либо равен "0", то при создании операции ей будет автоматически присвоен уникальный номер счета. Рекомендуется использовать данную возможность только в очень простых магазинах, где не требуется какого-либо контроля.

sInvDesc

- описание покупки, можно использовать только символы английского или русского алфавита, цифры и знаки препинания. Максимальная длина 100 символов.

sSignatureValue

- контрольная сумма MD5(обязательный параметр) - строка представляющая собой 32-разрядное число в 16-ричной форме и любом регистре (всего 32 символа 0-9, A-F). Формируется по строке, содержащей некоторые параметры, разделенные ':', с добавлением sMerchantPass1 - (устанавливается через интерфейс администрирования) т.е. sMerchantLogin:nOutSum:nInvId:sMerchantPass1[:пользовательские параметры, в отсортированном порядке]

К примеру если переданы параметры shpb=xxx и shpa=yyy то подпись формируется из строки ...:sMerchantPass1:shpa=yyy:shpb=xxx

sIncCurrLabel

- предлагаемая валюта платежа. Пользователь может изменить ее в процессе оплаты.

sEmail

- e-mail пользователя. Пользователь может изменить его в процессе оплаты.

sCulture

- опционально, язык общения с клиентом. Значения: en, ru. Если не установлен - берется язык региональных установок браузера.

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

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


В случае успешного проведения оплаты робот системы проводит запрос по Result URL, с указанием следующих параметров (методом, выбранным в настройках):

OutSum=nOutSum&

InvId=nInvId&

SignatureValue=sSignatureValue

[&пользовательские_параметры]


nOutSum

-полученная сумма. Сумма будет передана в той валюте, которая была указана при регистрации магазина. Формат представления числа - разделитель точка.

nInvId

- номер счета в магазине

sSignatureValue

- контрольная сумма MD5 - строка представляющая собой 32-разрядное число в 16-ричной форме и любом регистре (всего 32 символа 0-9, A-F). Формируется по строке, содержащей некоторые параметры, разделенные ':', с добавлением sMerchantPass2 - (устанавливается через интерфейс администрирования) т.е. nOutSum:nInvId:sMerchantPass2[:пользовательские параметры, в отсортированном порядке]

К примеру если при инициализации операции были переданы пользовательские параметры shpb=xxx и shpa=yyy то подпись формируется из строки ...:sMerchantPass2:shpa=yyy:shpb=xxx

Скрипт, находящийся по Result URL должен проверить правильность контрольной суммы и соответствия суммы платежа ожидаемой сумме. При формировании строки подписи учтите формат представления суммы (в строку при проверке подписи вставляйте именно полученное значение, без какого-либо форматирования).

Данный запрос производится после получения денег, однако, до того как пользователь сможет перейти на Success URL. Перед скриптом магазина, расположенным по Success URL обязательно отрабатывает скрипт запроса к Result URL.

Факт успешности сообщения магазину об исполнении операции определяется по результату, возвращаемому обменному пункту. Результат должен содержать "OKnMerchantInvId", т.е. для счета #5 должен быть возвращен текст "OK5".

В случае невозможности связаться со скриптом по адресу Result URL (связь прерывается по time-out-у либо по отсутствию DNS-записи, либо получен не ожидаемый ответ) на email-адрес администратора магазина отправляется письмо и запрос Result URL считается завершенным успешно. В случае системаческого отсутствия связи между серверами магазина и обменного пункта лучше использовать метод определения оплаты с применением интерфейсов XML, а самый желательный и защищенный способ - совмещенный.
^

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


В случае успешного исполнения платежа Покупатель может перейти по данному адресу.

Методом, выбранным при регистрации будут переданы следующие параметры ("чек" об оплате):

OutSum=nOutSum&

InvId=nInvId&

SignatureValue=sSignatureValue&

Culture=sCulture

[&пользовательские_параметры]

nOutSum

-полученная сумма. Сумма будет передана в той валюте, которая была указана при регистрации магазина. Формат представления числа - Разделитель точка.

nInvId

- номер счета в магазине

sSignatureValue

- контрольная сумма MD5 - строка представляющая собой 32-разрядное число в 16-ричной форме и любом регистре (всего 32 символа 0-9, A-F). Формируется по строке, содержащей некоторые параметры, разделенные ':', с добавлением sMerchantPass1 (указывается при регистрации) т.е. nOutSum:nInvId:sMerchantPass1[:пользовательские параметры, в отсортированном порядке].

К примеру если при инициализации операции были переданы пользовательские параметры shpb=xxx и shpa=yyy то подпись формируется из строки ...:sMerchantPass1:shpa=yyy:shpb=xxx

sCulture

- язык общения с клиентом, выбранный при инициализации оплаты. Значения: en, ru.

Если в качетсве метода отправки данных выбран email, будет отправлено email сообщение по email-адресу, установленному в качестве Success URL через интерфейс администрирования.

Переход пользователя по данному адресу с корректными параметрами (соответствия CRC) означает, что платеж по реквизитам Продавца выполнен успешно. Сервис несет финансовую ответственность перед Продавцом в соответствии с Соглашением за достоверность такого подтверждения.

Однако для дополнительной защиты желательно, чтобы факт оплаты платежа проверялся скриптом исполняемым при переходе на Result URL, или путем запроса XML-интерфейса о результате данной платежной операции, и только при реальном наличии счета с номером nMerchantInvId в БД магазина.
^

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


В случае отказа от исполнения платежа Покупатель перенаправляется по данному адресу.

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

OutSum=nOutSum&

InvId=nInvId&

SignatureValue=sSignatureValue&

Culture=sCulture

[&пользовательские_параметры]

nOutSum

-полученная сумма. Сумма будет передана в той валюте, которая была указана при регистрации магазина. Формат представления числа - Разделитель точка.

nInvId

- номер счета в магазине

sSignatureValue

- контрольная сумма MD5 - строка представляющая собой 32-разрядное число в 16-ричной форме и любом регистре (всего 32 символа 0-9, A-F). Формируется по строке, содержащей некоторые параметры, разделенные ':', с добавлением sMerchantPass1 (указывается при регистрации) т.е. nOutSum:nInvId:sMerchantPass1[:пользовательские параметры, в отсортированном порядке].

К примеру если при инициализации операции были переданы пользовательские параметры shpb=xxx и shpa=yyy то подпись формируется из строки ...:sMerchantPass1:shpa=yyy:shpb=xxx

sCulture

- язык общения с клиентом, выбранный при инициализации оплаты. Значения: en, ru.

Если в качетсве метода отправки данных выбран email, будет отправлено email сообщение об отказе Покупателя от оплаты Заказа по email-адресу, находящемуся в Fail URL.

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