[DEV: PHP] Пишем код для пополнения балансов в играх и сервисах
Допустим, у вас есть игровая платформа или сервис, в котором вы планируете принимать криптовалюту для пополнения баланса пользователей.
В платежном гейте Apirone есть кошельки под отдельные криптовалюты и аккаунты, объединяющие крипто-кошельки. Аккаунты и кошельки можно создавать API-запросом, что очень удобно при масштабировании и разворачивании уже готовых проектов. Также можно это сделать на странице https://apirone.com/dashboard/create
Запросы полностью анонимные, а создавать кошельки и аккаунты можно сколько угодно, без ограничений по количеству.
Главное хранить данные кошелька в безопасном месте.
Тестовый кошелек: tbtc-bde1cfc70297e4ff7068334b25986819
Transfer key: hyl1aQkd5vwdzT1uExgUCOXOcekUg4Yc
Для пополнения баланса на любую сумму, клиентам достаточно показать текущий курс https://apirone.com/docs/rate/#ticker
адрес для оплаты и QR-код https://developers.google.com/chart/infographics/docs/qr_codes?hl=ru . В криптовалютах нет назначения платежа и суммы оплаты, поэтому идентификатором платежей служит адрес (для примера, возьмем блокчейн биткоина).
Для каждого пользователя POST-запросом создаем отдельный биткоин-адрес с параметрами id пользователя, email или login, также можно добавить секретный ключ, чтобы повысить безопасность вашей платформы.
В 'url'=> 'http://example.com/callback' меняем ссылку на адрес страницы для колбэка на своем сайта. Эта страница будет получать всю информацию о поступающих платежах.
'user_id' - какой-либо идентификатор вашего клиента.
'secret' - придуманный вами секретный код, для дополнительной безопасности при получении данных от платежного сервиса.
$wallet - идентификатор кошелька, с которым мы работаем.В этом примере используем тестнет биткоина для отладки, на продакшен поменяете на рабочий кошелек.
Вы можете заводить неограниченное количество адресов, к тому же они вечные. Это значит, что мы будем мониторить их всегда, а при поступлении платежа - уведомлять указанный url со всеми сохраненными параметрами.
На странице пополнения баланса клиенту будет удобно, если платеж автоматически появится на экране. Для этого можно периодически делать запрос в базу и проверять была ли оплата.
Обработка Callback
Страница колбэка нужна для приема данных о транзакции и следования бизнес-логике при оплате. На эту страницу Apirone передает: адрес, сумму, хэш транзакции, количество подтверждений и данные которые мы указали: user_id и secret. Данные передаются POST запросом в формате JSON, так удобнее и безопаснее.
P.S.:
- Настоятельно рекомендуем зачислять платеж минимум после одного подтверждения в сети, а если суммы ощутимо большие, то после 3 подтверждений.
- Рекомендуем хранить в базе данных целочисленные значения суммы в сатоши, потому что значения с плавающей запятой могут привести к ошибкам вычисления.
- Эндпоинт для всех кошельков одинаковый, меняйте параметр $wallet на Litecoin, Bitcoin Cash, Dogecoin и др. В будущем будут появляться новые криптовалюты, стэйбл-коины и токены.