1. Первые шаги

Привет!
Вы немного знаете PHP и хотите сами подключить свой сайт к приему платежей?
Для начала прочтите пример здесь для сайта DEMO.ru
Вы скопировали себе код из примера, а автоматического зачисления не происходит? Хм.
Отключите в Личном Кабинете функцию API (снимите отметку с «Настройки магазина» - «Уведомлять по API«)
Попробуйте сделать платеж на 5 WMR или Яндексов, а еще лучше - воспользуйтесь функцией «Тестовый платеж» в Личном Кабинете.
Не проходит? Хм.

2. Платежные ссылки

Для начала проверьте платежную ссылку (документация), она точно ведет на Ваш сайт, а не demo сайт?
Она должна выглядеть так http://secure.onpay.ru/pay/mysait где mysait это ваш логин в Сервисе Onpay.
Как? Вы еще не зарегистрировались? Тогда Вам сюда.
И не забудьте попросить модератора, чтобы он активировал Ваш аккаунт. Как узнать, нужно ли это?
Очень просто — если Ваш аккаунт еще не активирован, то при входе в Личном Кабинете Вас преследует сообщение «Вы не вошли в систему (проверьте имя и пароль)«.

3. Почтовые уведомления о платежах

Ура платеж пришел к Вам в Личный Кабинет!
Но на e-mail Вам ничего не пришло :( - проверьте, а какой email Вы указали в поле «Личные настройки» - «Email для уведомлений». На этот адрес, Вам будут приходить уведомления, о каждом платеже полученном Вами.
В уведомлениях указывается сколько и за что Вам заплатили.

4. Автоматизация приема платежей - API

Теперь можно попробовать провести платеж в автоматическом режиме.
Для включения API, зайдите в меню «Настройки магазина». Поставьте отметку в поле «Уведомлять по API».
Введите в «URL API« - адрес Вашего скрипта отвечающего за обработку полученных платежей. Например, http://demo.ru/api.php
Укажите «Пароль для API IN» - это секретный пароль, учавствующий в формировании подписи в каждом платеже (чтобы Вы были уверенны, что платеж пришел через Onpay).

5. Простые уведомления о приеме

Платеж не проходит — пишет «Получатель платежа не дал разрешение на проведение платежа»!
Не пугайтесь, получатель это Вы.
Для начала отключим опцию «Проверять MD5 на ссылках» в меню «Настройки магазина».
И попробуем протестировать еще раз. Платеж все равно не проходит?

6. Протокол взаимодействия между серверами - API

В случае возникновения проблем с доставкой платежа на Ваш сервер, можно посмотреть подробный протокол взаимодействия, который пишется для каждого платежа.
Посмотреть логи общения между нашим и вашим сервером, можно в меню «Настройки магазина» - «Логи». Что мы там должны увидеть?
Сервис 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 &note= &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. Если платеж не доходит до скрипта

Но в Личном Кабинете пишет «Критическая ошибка» или «Временная ошибка»! Что делать?!
Это означит что второй запрос - «pay» не проходит, то есть ваш сайт не подтвердил, что его уведомили о платеже, или вообще ничего не ответил. Чаще всего, это бывает связанно с проблемами хостинга (даже на хороших хостингах, иногда бывают проблемы).
Чтобы точно понять, что происходит - снова смотрим логи в меню «Настройки магазина» - «Логи».
Ух ты работает!
Теперь уделим внимание проверке безопасности.

8. Безопасность приема - MD5 подписи

Теперь можно и проверку MD 5 включить - «Проверять MD5 на ссылках» в меню «Настройки магазина».
Это нужно для того, чтобы быть уверенным в том, что уведомление о поступлении платежа пришло именно от нашего сервера, а не от злоумышленника, узнавшего где установлен ваш API скрипт.
Упс перестало работать после включения проверки…
Смотрим документацию, проверяем, что и в каком порядке входит в строку подписи MD5.
Ага, заработало.
И опять временная ошибка!!!
Да, подпись MD5 в запросе «pay» формируется не так как в запросе «check»! Убедитесь, что у вас именно так, как описанно в инструкции.
Ну вот вроде и все, не всякая птица долетит до середины Днепра…
Да нет у меня времени с этим ковыряться!
Тогда Вам сюда - http://onpay.ru/developer