Здесь показаны различия между двумя версиями данной страницы.
Следущая версия | Предыдущая версия Следущая версия Both sides next revision | ||
setup [2011/06/26 09:19] admin создано |
setup [2011/09/02 09:58] admin |
||
---|---|---|---|
Строка 1: | Строка 1: | ||
==== 1. Первые шаги ==== | ==== 1. Первые шаги ==== | ||
+ | Привет! \\ | ||
+ | Вы немного знаете PHP и хотите сами подключить свой сайт к приему платежей? \\ | ||
+ | Для начала прочтите пример здесь для сайта DEMO.ru \\ | ||
+ | \\ | ||
+ | Вы скопировали себе код из примера, а автоматического зачисления не происходит? Хм. \\ | ||
+ | Отключите в [[http://wiki.onpay.ru/doku.php?id=cabinet|Личном Кабинете]] функцию API (снимите отметку с **"Настройки магазина" - "Уведомлять по API"**)\\ | ||
+ | Попробуйте сделать платеж на 5 WMR или Яндексов, а еще лучше - воспользуйтесь функцией **"Тестовый платеж"** в [[http://wiki.onpay.ru/doku.php?id=cabinet|Личном Кабинете]].\\ | ||
+ | Не проходит? Хм. \\ | ||
+ | |||
==== 2. Платежные ссылки ==== | ==== 2. Платежные ссылки ==== | ||
+ | Для начала проверьте платежную ссылку (документация), она точно ведет на Ваш сайт, а не demo сайт? \\ | ||
+ | Она должна выглядеть так http://secure.onpay.ru/pay/mysait где mysait это ваш логин в Сервисе Onpay. \\ | ||
+ | Как? Вы еще не зарегистрировались? Тогда Вам сюда. \\ | ||
+ | И не забудьте попросить модератора, чтобы он активировал Ваш аккаунт. Как узнать, нужно ли это? \\ | ||
+ | Очень просто — если Ваш аккаунт еще не активирован, то при входе в [[http://wiki.onpay.ru/doku.php?id=cabinet|Личном Кабинете]] Вас преследует сообщение **"Вы не вошли в систему (проверьте имя и пароль)"**. \\ | ||
+ | |||
==== 3. Почтовые уведомления о платежах ==== | ==== 3. Почтовые уведомления о платежах ==== | ||
+ | Ура платеж пришел к Вам в [[http://wiki.onpay.ru/doku.php?id=cabinet|Личный Кабинет]]! \\ | ||
+ | Но на e-mail Вам ничего не пришло :( - проверьте, а какой email Вы указали в поле "Личные настройки" - "Email для уведомлений". На этот адрес, Вам будут приходить уведомления, о каждом платеже полученном Вами. \\ | ||
+ | В уведомлениях указывается сколько и за что Вам заплатили. \\ | ||
+ | |||
==== 4. Автоматизация приема платежей - API ==== | ==== 4. Автоматизация приема платежей - API ==== | ||
+ | Теперь можно попробовать провести платеж в автоматическом режиме. \\ | ||
+ | Для включения API, зайдите в меню** "Настройки магазина"**. Поставьте отметку в поле **"Уведомлять по API".** \\ | ||
+ | Введите в **"URL API"** - адрес Вашего скрипта отвечающего за обработку полученных платежей. Например, http://demo.ru/api.php \\ | ||
+ | Укажите **"Пароль для API IN"** - это секретный пароль, учавствующий в формировании подписи в каждом платеже (чтобы Вы были уверенны, что платеж пришел через Onpay). \\ | ||
+ | |||
==== 5. Простые уведомления о приеме ==== | ==== 5. Простые уведомления о приеме ==== | ||
+ | Платеж не проходит — пишет «Получатель платежа не дал разрешение на проведение платежа»! \\ | ||
+ | Не пугайтесь, получатель это Вы. \\ | ||
+ | Для начала отключим опцию **"Проверять MD5 на ссылках"** в меню **"Настройки магазина"**. \\ | ||
+ | И попробуем протестировать еще раз. Платеж все равно не проходит? \\ | ||
+ | |||
==== 6. Протокол взаимодействия между серверами - API ==== | ==== 6. Протокол взаимодействия между серверами - API ==== | ||
- | ==== 7. Если платеж не доходит до скрипта ==== | + | В случае возникновения проблем с доставкой платежа на Ваш сервер, можно посмотреть подробный протокол взаимодействия, который пишется для каждого платежа. \\ |
- | ==== 8. Безопасность приема - MD5 подписи ==== | + | Посмотреть логи общения между нашим и вашим сервером, можно в меню **"Настройки магазина" - "Логи".** Что мы там должны увидеть? \\ |
+ | Сервис Onpay делает два запроса к вашему скрипту - check (проверяем, разрешаете ли Вы прием платежа с указанными параметрами, например проверяется цена и номер заказа) и pay (когда платеж уже зачислен на ваш счет). \\ | ||
+ | \\ | ||
+ | Первый запрос «check» - вот такой: \\ | ||
+ | To merchant:\\ | ||
+ | String for MD5 to Merchant: "check;99;70.0;RUR;MERCHANT_KEY_HERE" | ||
+ | POST http://demo.ru:80/api.php?pay_for=99 &order_currency=RUR &order_amount=70.0 &type=check &amount=70.0 &md5=A7AA6672VBDE2AB748F96001873383A2 | ||
+ | HTTP_code:200 | ||
+ | |||
+ | From merchant: \\ | ||
+ | <?xml version="1.0" encoding="UTF-8"?> | ||
+ | <result> | ||
+ | <code>0</code> | ||
+ | <pay_for>99</pay_for> | ||
+ | <comment>OK</comment> | ||
+ | <md5>6B1B4A02E321E40A2F6562E9EF0E4FF4</md5> | ||
+ | </result> | ||
+ | String for MD5 from Merchant: "check;99;70.0;RUR;0;MERCHANT_KEY_HERE"\\ | ||
+ | Expected MD5 from Merchant: 6B1B4A02E321E40A2F6562E9EF0E4FF4 \\ | ||
+ | И ответ Вашего скрипта:\\ | ||
+ | To merchant: \\ | ||
+ | String for MD5 to Merchant: "pay;716000201;66336;480.0;RUR;MERCHANT_KEY_HERE" | ||
+ | GET http://demo.ru:80/api.php?pay_for=99 &user_email= &paymentDateTime=2009-10-15T18%3a20%3a12Z &order_currency=RUR &order_amount=70.0 &balance_currency=OSP &type=pay &balance_amount=70.0 &amount=70.0 &onpay_id=66335 ¬e= &md5=AZ93894E03B2B3EC8C6A35409ABBB3DC &exchange_rate=1.0 | ||
+ | HTTP_code:200 | ||
+ | From merchant: \\ | ||
+ | <?xml version="1.0" encoding="UTF-8"?> | ||
+ | <result> | ||
+ | <code>0</code> | ||
+ | <comment>OK</comment> | ||
+ | <onpay_id>66335</onpay_id> | ||
+ | <pay_for>99</pay_for> | ||
+ | <order_id>1402</order_id> | ||
+ | <md5>3342D8Z69E2E6E8927579A01C4933EDA</md5> | ||
+ | </result> | ||
+ | String for MD5 from Merchant: "pay;99;66335;1402;70.0;RUR;0;MERCHANT_KEY_HERE" \\ | ||
+ | Expected MD5 from Merchant: 3342D8Z69E2E6E8927579A01C4933EDA \\ | ||
+ | \\ | ||
+ | Все вроде правильно, но не проходит? \\ | ||
+ | Проверьте форматы данных - обратите внимание на разделитель в суммах платежей - это всегда точка, например "70.5". \\ | ||
+ | Ура, проскочило? \\ | ||
+ | ==== 7. Если платеж не доходит до скрипта ==== | ||
+ | Но в [[http://wiki.onpay.ru/doku.php?id=cabinet|Личном Кабинете]] система пишет "Критическая ошибка" или "Временная ошибка"! Что делать?! \\ | ||
+ | Это означит что второй запрос - «pay» не проходит, то есть ваш сайт не подтвердил, что его уведомили о платеже, или вообще ничего не ответил. Чаще всего, это бывает связанно с проблемами хостинга (даже на хороших хостингах, иногда бывают проблемы). \\ | ||
+ | Чтобы точно понять, что происходит - снова смотрим логи в меню "Настройки магазина" - "Логи". \\ | ||
+ | Ух ты работает! \\ | ||
+ | Теперь уделим внимание проверке безопасности. \\ | ||
+ | ==== 8. Безопасность приема - MD5 подписи ==== | ||
+ | Теперь можно и проверку MD 5 включить - "Проверять MD5 на ссылках" в меню "Настройки магазина". \\ | ||
+ | Это нужно для того, чтобы быть уверенным в том, что уведомление о поступлении платежа пришло именно от нашего сервера, а не от злоумышленника, узнавшего где установлен ваш API скрипт. \\ | ||
+ | Упс перестало работать после включения проверки... \\ | ||
+ | Смотрим документацию, проверяем, что и в каком порядке входит в строку подписи MD5. \\ | ||
+ | Ага, заработало. \\ | ||
+ | И опять временная ошибка!!! \\ | ||
+ | Да, подпись MD5 в запросе «pay» формируется не так как в запросе «check»! Убедитесь, что у вас именно так, как описанно в инструкции. \\ | ||
+ | Ну вот вроде и все, не всякая птица долетит до середины Днепра... \\ | ||
+ | \\ | ||
+ | Да нет у меня времени с этим ковыряться! \\ | ||
+ | Тогда Вам сюда - http://onpay.ru/developer \\ |